Skip to content

Commit bd13501

Browse files
wscourgeclaude
andcommitted
Add DataSource json_imports and import_status methods (PIP-310)
- DataSource.import_json: POST /data_sources/{uuid}/json_imports - DataSource.import_status: GET /data_sources/{uuid}/json_imports/{import_id} Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 60ba6c1 commit bd13501

2 files changed

Lines changed: 58 additions & 0 deletions

File tree

chartmogul/api/data_source.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,9 @@ def make(self, data, **kwargs):
5353
return DataSource(**data)
5454

5555
_schema = _Schema(unknown=EXCLUDE)
56+
57+
58+
DataSource.import_json = DataSource._method(
59+
"create", "post", "/data_sources{/uuid}/json_imports")
60+
DataSource.import_status = DataSource._method(
61+
"retrieve", "get", "/data_sources{/uuid}/json_imports{/import_id}")
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import unittest
2+
3+
import requests_mock
4+
5+
from chartmogul import DataSource, Config
6+
7+
8+
class DataSourceImportsTestCase(unittest.TestCase):
9+
10+
@requests_mock.mock()
11+
def test_import_json(self, mock_requests):
12+
mock_requests.register_uri(
13+
"POST",
14+
"https://api.chartmogul.com/v1/data_sources/ds_123/json_imports",
15+
request_headers={"Authorization": "Basic dG9rZW46"},
16+
status_code=200,
17+
json={"id": "imp_456"},
18+
)
19+
20+
config = Config("token")
21+
result = DataSource.import_json(
22+
config, uuid="ds_123", data={"customers": []}
23+
).get()
24+
25+
self.assertEqual(mock_requests.call_count, 1)
26+
self.assertEqual(
27+
mock_requests.last_request.json(), {"customers": []}
28+
)
29+
30+
@requests_mock.mock()
31+
def test_import_status(self, mock_requests):
32+
mock_requests.register_uri(
33+
"GET",
34+
"https://api.chartmogul.com/v1/data_sources/ds_123/json_imports/imp_456",
35+
request_headers={"Authorization": "Basic dG9rZW46"},
36+
status_code=200,
37+
json={
38+
"uuid": "ds_123",
39+
"name": "test",
40+
"created_at": "2025-01-01T00:00:00.000Z",
41+
"status": "idle",
42+
"system": "Import API",
43+
},
44+
)
45+
46+
config = Config("token")
47+
result = DataSource.import_status(
48+
config, uuid="ds_123", import_id="imp_456"
49+
).get()
50+
51+
self.assertEqual(mock_requests.call_count, 1)
52+
self.assertTrue(isinstance(result, DataSource))

0 commit comments

Comments
 (0)