Skip to content

Commit f6f2017

Browse files
authored
[sc-62680] SDK Unmerge Support - Python (#100)
* Add support for unmerge feature. * Fix outdated test commands. * Update dependency installation for tests. * Another test dependency update. * Fix typo. * Update another dependency for tests. * Update docs.
1 parent 98fa063 commit f6f2017

File tree

4 files changed

+30
-3
lines changed

4 files changed

+30
-3
lines changed

.github/workflows/test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
${{ runner.os }}-
4949
- name: Install dependencies
5050
run: |
51-
python -m pip install --upgrade pip setuptools wheel coverage
51+
python -m pip install --upgrade pip setuptools wheel coverage requests-mock httpretty
5252
pip install -r requirements.txt
5353
- name: Set ENV for codeclimate (pull_request)
5454
continue-on-error: true
@@ -68,7 +68,7 @@ jobs:
6868
chmod +x ./cc-test-reporter
6969
./cc-test-reporter before-build
7070
- name: Run tests
71-
run: coverage run ./setup.py test && coverage xml -i --include='chartmogul/*'
71+
run: coverage run -m unittest && coverage xml -i --include='chartmogul/*'
7272
- name: Send Report to Code Climate
7373
env:
7474
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,12 @@ chartmogul.Customer.merge(config, data={
126126
'from': {'customer_uuid': 'cus_5915ee5a-babd-406b-b8ce-d207133fb4cb'},
127127
'into': {'customer_uuid': 'cus_2123290f-09c8-4628-a205-db5596bd58f7'}
128128
})
129+
chartmogul.Customer.unmerge(config, data={
130+
'customer_uuid': 'cus_cd9e5f29-6299-40e5-b343-0bd1ed228b4f',
131+
'data_source_uuid': 'ds_788ec6ae-dd51-11ee-bd46-a3ec952dc041',
132+
'external_id': 'cus_O075O8NH0LrtG8',
133+
'move_to_new_customer': []
134+
})
129135
chartmogul.Customer.modify(config, uuid='cus_5915ee5a-babd-406b-b8ce-d207133fb4cb', data={
130136
"city": "San Francisco",
131137
"country": "US",
@@ -406,7 +412,7 @@ To work on the library:
406412
* Write tests for your new features. Use `requests_mock` for HTTP mocking.
407413
* To run test install requirement-test `pip3 install -r requirements-test.txt` and run with `python -m unittest`:
408414
* `pip3 install coverage`
409-
* `coverage run ./setup.py test`
415+
* `coverage run -m unittest`
410416
* `coverage html --include='chartmogul/*'`
411417
* Find results in `htmlcov/index.html`
412418
* If all tests are passed, push to the branch (`git push origin my-new-feature`)

chartmogul/api/customer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def make(self, data, **kwargs):
7878

7979
Customer.search = Customer._method("all", "get", "/customers/search")
8080
Customer.merge = Customer._method("merge", "post", "/customers/merges")
81+
Customer.unmerge = Customer._method("unmerge", "post", "/customers/unmerges")
8182
Customer.connectSubscriptions = Customer._method(
8283
"create", "post", "/customers/{uuid}/connect_subscriptions"
8384
)

test/api/test_customer.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,26 @@ def test_merge(self, mock_requests):
453453
self.assertEqual(mock_requests.last_request.qs, {})
454454
self.assertEqual(mock_requests.last_request.json(), jsonRequest)
455455
self.assertEqual(result, None)
456+
457+
@requests_mock.mock()
458+
def test_unmerge(self, mock_requests):
459+
mock_requests.register_uri(
460+
"POST", "https://api.chartmogul.com/v1/customers/unmerges", status_code=202
461+
)
462+
463+
jsonRequest = {
464+
"customer_uuid": "cus_cd9e5f29-6299-40e5-b343-0bd1ed228b4f",
465+
"data_source_uuid": "ds_788ec6ae-dd51-11ee-bd46-a3ec952dc041",
466+
"external_id": "cus_O075O8NH0LrtG8",
467+
"move_to_new_customer": []
468+
}
469+
470+
config = Config("token")
471+
result = Customer.unmerge(config, data=jsonRequest).get()
472+
self.assertEqual(mock_requests.call_count, 1, "expected call")
473+
self.assertEqual(mock_requests.last_request.qs, {})
474+
self.assertEqual(mock_requests.last_request.json(), jsonRequest)
475+
self.assertEqual(result, None)
456476

457477
@requests_mock.mock()
458478
def test_connectSubscriptions(self, mock_requests):

0 commit comments

Comments
 (0)