Feature:
  The CRM system is able to send information about new Clients to the service

  Background:
    Given there exist following clients:
      | clientId                             | name   | initialBalance | currentBalance | locked |
      | 018edd2e-894a-78d7-b10c-16e05ca933a3 | Kacper | 10000          | 5000           | no     |
      | 018ede1e-a587-76a8-88f3-23987a8dade9 | Jacek  | 10000          | 60000000       | yes    |

  Scenario: CRM is able to create new clients
    Given the request has the following body:
      """
      {
        "clientId": "018edd37-c145-7143-ba91-c191084e4fba",
        "name": "Jan",
        "balance": 100000
      }
      """
    When I send a POST request to "/clients"
    Then the response status should be 201
    And client with id "018edd37-c145-7143-ba91-c191084e4fba" should exist
    And client with id "018edd37-c145-7143-ba91-c191084e4fba" should have balance of 100000

  Scenario: CRM is able to top up existing client
    Given the request has the following body:
      """
      {
        "amount": 5000
      }
      """
    When I send a POST request to "/clients/018edd2e-894a-78d7-b10c-16e05ca933a3/_top-up"
    Then the response status should be 200
    And client with id "018edd2e-894a-78d7-b10c-16e05ca933a3" should have balance of 10000

  Scenario: CRM should not be able to override existing user
    Given the request has the following body:
      """
      {
        "clientId": "018edd2e-894a-78d7-b10c-16e05ca933a3",
        "name": "Kacper",
        "balance": 100000
      }
      """
    When I send a POST request to "/clients"
    Then the response status should be 409
    And client with id "018edd2e-894a-78d7-b10c-16e05ca933a3" should exist

  Scenario: CRM is able to lock existing client
    Given the request has the following body:
      """
      {
        "lock": true
      }
      """
    When I send a POST request to "/clients/018edd2e-894a-78d7-b10c-16e05ca933a3/_lock"
    Then the response status should be 200
    And client with id "018edd2e-894a-78d7-b10c-16e05ca933a3" should be locked

  Scenario: CRM is able to unlock existing client
    Given the request has the following body:
      """
      {
        "lock": false
      }
      """
    When I send a POST request to "/clients/018ede1e-a587-76a8-88f3-23987a8dade9/_lock"
    Then the response status should be 200
    And client with id "018ede1e-a587-76a8-88f3-23987a8dade9" should not be locked