11import unittest
22import responses
33
4- from admitad .items import PromoOffersForCampaign
4+ from admitad .exceptions import HttpException
5+ from admitad .items import PromoOffersForCampaign , PromoOfferRequestTrackingCode
56from admitad .tests .base import BaseTestCase
67
78
89class PromoOffersForCampaignTestCase (BaseTestCase ):
910
10- def test_get_promo_offers_for_campaign_request (self ):
11+ def test_get_promo_offers_for_campaign_request (self ) -> None :
1112 with responses .RequestsMock () as resp :
1213 resp .add (
1314 resp .GET ,
@@ -24,5 +25,109 @@ def test_get_promo_offers_for_campaign_request(self):
2425 self .assertIn ('status' , result )
2526
2627
28+ class PromoOfferRequestTrackingCodeTestCase (BaseTestCase ):
29+
30+ def test_request_tracking_promo_code_success (self ) -> None :
31+ with responses .RequestsMock () as resp :
32+ resp .add (
33+ resp .POST ,
34+ PromoOfferRequestTrackingCode .URL ,
35+ json = {
36+ 'assigned_promo_code' : 'TESTCODE123' ,
37+ 'tracking_link' : 'https://ad.admitad.com/g/123abc/'
38+ },
39+ status = 200
40+ )
41+ result = self .client .PromoOfferRequestTrackingCode .request (
42+ coupon_id = 100 ,
43+ advcampaign_id = 200 ,
44+ website_id = 300
45+ )
46+
47+ self .assertIn ('assigned_promo_code' , result )
48+ self .assertIn ('tracking_link' , result )
49+ self .assertEqual (result ['assigned_promo_code' ], 'TESTCODE123' )
50+
51+ def test_request_tracking_promo_code_creates_request (self ) -> None :
52+ with responses .RequestsMock () as resp :
53+ resp .add (
54+ resp .POST ,
55+ PromoOfferRequestTrackingCode .URL ,
56+ json = {
57+ 'assigned_promo_code' : None ,
58+ 'tracking_link' : None
59+ },
60+ status = 200
61+ )
62+ result = self .client .PromoOfferRequestTrackingCode .request (
63+ coupon_id = 100 ,
64+ advcampaign_id = 200 ,
65+ website_id = 300
66+ )
67+
68+ self .assertIn ('assigned_promo_code' , result )
69+ self .assertIn ('tracking_link' , result )
70+ self .assertIsNone (result ['assigned_promo_code' ])
71+ self .assertIsNone (result ['tracking_link' ])
72+
73+ def test_request_tracking_promo_code_no_coupon_error (self ) -> None :
74+ with responses .RequestsMock () as resp :
75+ resp .add (
76+ resp .POST ,
77+ PromoOfferRequestTrackingCode .URL ,
78+ json = {
79+ 'error_code' : 'CHECK_PRE_APPROVED_COUPON_ERROR_CODE_NO_COUPON'
80+ },
81+ status = 400
82+ )
83+ with self .assertRaises (HttpException ):
84+ self .client .PromoOfferRequestTrackingCode .request (
85+ coupon_id = 100 ,
86+ advcampaign_id = 200 ,
87+ website_id = 300
88+ )
89+
90+ def test_request_tracking_promo_code_not_connected_error (self ) -> None :
91+ with responses .RequestsMock () as resp :
92+ resp .add (
93+ resp .POST ,
94+ PromoOfferRequestTrackingCode .URL ,
95+ json = {
96+ 'error_code' : 'webmaster_not_connected'
97+ },
98+ status = 400
99+ )
100+ with self .assertRaises (HttpException ):
101+ self .client .PromoOfferRequestTrackingCode .request (
102+ coupon_id = 100 ,
103+ advcampaign_id = 200 ,
104+ website_id = 300
105+ )
106+
107+ def test_request_tracking_promo_code_invalid_coupon_id (self ) -> None :
108+ with self .assertRaises (ValueError ):
109+ self .client .PromoOfferRequestTrackingCode .request (
110+ coupon_id = 0 ,
111+ advcampaign_id = 200 ,
112+ website_id = 300
113+ )
114+
115+ def test_request_tracking_promo_code_invalid_advcampaign_id (self ) -> None :
116+ with self .assertRaises (ValueError ):
117+ self .client .PromoOfferRequestTrackingCode .request (
118+ coupon_id = 100 ,
119+ advcampaign_id = 0 ,
120+ website_id = 300
121+ )
122+
123+ def test_request_tracking_promo_code_invalid_website_id (self ) -> None :
124+ with self .assertRaises (ValueError ):
125+ self .client .PromoOfferRequestTrackingCode .request (
126+ coupon_id = 100 ,
127+ advcampaign_id = 200 ,
128+ website_id = 0 ,
129+ )
130+
131+
27132if __name__ == '__main__' :
28133 unittest .main ()
0 commit comments