Skip to content

Commit a2e3d91

Browse files
committed
Refactor PromoOfferRequestTrackingCode class methods and enhance tests
- Renamed `request` method to `create` for clarity and updated its URL to `CREATE_URL`. - Added `get` method to retrieve the status of a promo code request, including detailed type hints and Google-style docstrings. - Updated test cases in `test_promo_offers.py` to reflect method name changes and validate new functionality, including checking for `request_id` in responses.
1 parent ef5b927 commit a2e3d91

File tree

2 files changed

+42
-12
lines changed

2 files changed

+42
-12
lines changed

admitad/items/promo_offers.py

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@ class PromoOfferRequestTrackingCode(Item):
4343

4444
SCOPE = 'request_tracking_coupon'
4545

46-
URL = Item.prepare_url('advcampaigns/request-tracking-coupon')
46+
CREATE_URL = Item.prepare_url('tracking_promo_code/request-tracking-coupon')
47+
GET_STATUS_URL = Item.prepare_url('tracking_promo_codes/request-status')
4748

48-
def request(
49+
def create(
4950
self,
5051
coupon_id: int,
5152
advcampaign_id: int,
@@ -62,6 +63,7 @@ def request(
6263
{
6364
"assigned_promo_code": str | None, # promo code or None if request is created
6465
"tracking_link": str | None, # tracking link or None
66+
"request_id": int | None, # request id or None
6567
}
6668
"""
6769
request_data = {
@@ -73,5 +75,31 @@ def request(
7375
return (
7476
self.transport.post()
7577
.set_data(request_data)
76-
.request(url=self.URL)
78+
.request(url=self.CREATE_URL)
79+
)
80+
81+
def get(self, request_id: int) -> dict:
82+
"""
83+
Args:
84+
request_id: Admitad promocode request id
85+
86+
Returns:
87+
dict: Status of the promocode request
88+
{
89+
"request_id": int,
90+
"promo_offer_id": int,
91+
"website_id": int,
92+
"status": str,
93+
"approved_at": datetime | None,
94+
"declined_at": datetime | None,
95+
"created_at": datetime,
96+
"assigned_promo_code": str | None,
97+
}
98+
"""
99+
request_id = Item.sanitize_id(request_id)
100+
101+
return (
102+
self.transport.get()
103+
.set_params({'request_id': request_id})
104+
.request(url=self.GET_STATUS_URL)
77105
)

admitad/tests/test_promo_offers.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def test_request_tracking_promo_code_success(self) -> None:
3838
},
3939
status=200
4040
)
41-
result = self.client.PromoOfferRequestTrackingCode.request(
41+
result = self.client.PromoOfferRequestTrackingCode.create(
4242
coupon_id=100,
4343
advcampaign_id=200,
4444
website_id=300
@@ -55,11 +55,12 @@ def test_request_tracking_promo_code_creates_request(self) -> None:
5555
PromoOfferRequestTrackingCode.URL,
5656
json={
5757
'assigned_promo_code': None,
58-
'tracking_link': None
58+
'tracking_link': None,
59+
'request_id': 123,
5960
},
6061
status=200
6162
)
62-
result = self.client.PromoOfferRequestTrackingCode.request(
63+
result = self.client.PromoOfferRequestTrackingCode.create(
6364
coupon_id=100,
6465
advcampaign_id=200,
6566
website_id=300
@@ -69,6 +70,7 @@ def test_request_tracking_promo_code_creates_request(self) -> None:
6970
self.assertIn('tracking_link', result)
7071
self.assertIsNone(result['assigned_promo_code'])
7172
self.assertIsNone(result['tracking_link'])
73+
self.assertEqual(result['request_id'], 123)
7274

7375
def test_request_tracking_promo_code_no_coupon_error(self) -> None:
7476
with responses.RequestsMock() as resp:
@@ -81,7 +83,7 @@ def test_request_tracking_promo_code_no_coupon_error(self) -> None:
8183
status=400
8284
)
8385
with self.assertRaises(HttpException):
84-
self.client.PromoOfferRequestTrackingCode.request(
86+
self.client.PromoOfferRequestTrackingCode.create(
8587
coupon_id=100,
8688
advcampaign_id=200,
8789
website_id=300
@@ -98,31 +100,31 @@ def test_request_tracking_promo_code_not_connected_error(self) -> None:
98100
status=400
99101
)
100102
with self.assertRaises(HttpException):
101-
self.client.PromoOfferRequestTrackingCode.request(
103+
self.client.PromoOfferRequestTrackingCode.create(
102104
coupon_id=100,
103105
advcampaign_id=200,
104106
website_id=300
105107
)
106108

107109
def test_request_tracking_promo_code_invalid_coupon_id(self) -> None:
108110
with self.assertRaises(ValueError):
109-
self.client.PromoOfferRequestTrackingCode.request(
110-
coupon_id=0,
111+
self.client.PromoOfferRequestTrackingCode.create(
112+
coupon_id=0, # Invalid ID
111113
advcampaign_id=200,
112114
website_id=300
113115
)
114116

115117
def test_request_tracking_promo_code_invalid_advcampaign_id(self) -> None:
116118
with self.assertRaises(ValueError):
117-
self.client.PromoOfferRequestTrackingCode.request(
119+
self.client.PromoOfferRequestTrackingCode.create(
118120
coupon_id=100,
119121
advcampaign_id=0,
120122
website_id=300
121123
)
122124

123125
def test_request_tracking_promo_code_invalid_website_id(self) -> None:
124126
with self.assertRaises(ValueError):
125-
self.client.PromoOfferRequestTrackingCode.request(
127+
self.client.PromoOfferRequestTrackingCode.create(
126128
coupon_id=100,
127129
advcampaign_id=200,
128130
website_id=0,

0 commit comments

Comments
 (0)