11import unittest
22from chartmogul import Customer , Contact , Config , CustomerNote , Opportunity , Task
33from chartmogul .api .customer import Attributes , Address
4+ from chartmogul .api .customers .subscription import CustomerSubscription
45from datetime import datetime
56from chartmogul import APIError
67import requests_mock
394395
395396allTasks = {"entries" : [taskEntry ], "cursor" : "cursor==" , "has_more" : False }
396397
398+ allSubscriptions = {
399+ "entries" : [
400+ {
401+ "id" : 5322874574 ,
402+ "external_id" : "cbdemo_ZpbKpmKUbu83EsNv" ,
403+ "subscription_set_external_id" : "cbdemo_ZpbKpmKUbu83EsNv" ,
404+ "quantity" : 1 ,
405+ "uuid" : "8d80f275-a494-4957-8968-6cb68acdcfab" ,
406+ "mrr" : 18100 ,
407+ "arr" : 217200 ,
408+ "status" : "active" ,
409+ "plan" : "Professional Suite Annual(cbdemo_omnisupport-solutions)" ,
410+ "billing-cycle" : "year" ,
411+ "billing-cycle-count" : 1 ,
412+ "start-date" : "2024-11-22T17:51:46+00:00" ,
413+ "end-date" : "2026-11-23T17:51:44+00:00" ,
414+ "currency" : "PLN" ,
415+ "currency-sign" : "zł"
416+ },
417+ {
418+ "id" : 5322874575 ,
419+ "external_id" : "cbdemo_ZpbKpmKUbu83EsNv_cbdemo_workforce-optimizer-addon-annual" ,
420+ "subscription_set_external_id" : "cbdemo_ZpbKpmKUbu83EsNv" ,
421+ "quantity" : 1 ,
422+ "uuid" : "77867070-2435-4da1-8bde-014f6817bd49" ,
423+ "mrr" : 9048 ,
424+ "arr" : 108576 ,
425+ "status" : "active" ,
426+ "plan" : "Workforce Optimizer Add-on Annual(cbdemo_omnisupport-solutions)" ,
427+ "billing-cycle" : "year" ,
428+ "billing-cycle-count" : 1 ,
429+ "start-date" : "2024-11-22T17:51:46+00:00" ,
430+ "end-date" : "2026-11-23T17:51:44+00:00" ,
431+ "currency" : "PLN" ,
432+ "currency-sign" : "zł"
433+ },
434+ {
435+ "id" : 5322874576 ,
436+ "external_id" : "169vEGV551MI2J0" ,
437+ "subscription_set_external_id" : "169vEGV551MI2J0" ,
438+ "quantity" : 1 ,
439+ "uuid" : "a8640a5a-0d43-41c7-803e-76fc042267b0" ,
440+ "mrr" : 19432 ,
441+ "arr" : 233184 ,
442+ "status" : "active" ,
443+ "plan" : "Professional Suite Monthly(cbdemo_omnisupport-solutions)" ,
444+ "billing-cycle" : "month" ,
445+ "billing-cycle-count" : 1 ,
446+ "start-date" : "2025-12-11T14:09:32+00:00" ,
447+ "end-date" : "2026-01-11T14:09:32+00:00" ,
448+ "currency" : "PLN" ,
449+ "currency-sign" : "zł"
450+ }
451+ ],
452+ "has_more" : False ,
453+ "per_page" : 200 ,
454+ "page" : 1 ,
455+ "cursor" : "c3Vic2NyaXB0aW9uc19uZXh0X3BhZ2U9Mg=="
456+ }
457+
397458
398459class CustomerTestCase (unittest .TestCase ):
399460 """
@@ -506,6 +567,24 @@ def test_unmerge(self, mock_requests):
506567 self .assertEqual (mock_requests .last_request .json (), jsonRequest )
507568 self .assertEqual (result , None )
508569
570+ @requests_mock .mock ()
571+ def test_subscriptions (self , mock_requests ):
572+ mock_requests .register_uri (
573+ "GET" ,
574+ "https://api.chartmogul.com/v1/customers/cus_5915ee5a-babd-406b-b8ce-d207133fb4cb/subscriptions" ,
575+ status_code = 200 ,
576+ json = allSubscriptions ,
577+ )
578+
579+ config = Config ("token" )
580+ result = Customer .subscriptions (
581+ config , uuid = "cus_5915ee5a-babd-406b-b8ce-d207133fb4cb"
582+ ).get ()
583+ self .assertEqual (mock_requests .call_count , 1 , "expected call" )
584+ self .assertEqual (mock_requests .last_request .qs , {})
585+ self .assertEqual (mock_requests .last_request .text , None )
586+ self .assertTrue (isinstance (result , CustomerSubscription ._many ))
587+
509588 @requests_mock .mock ()
510589 def test_connectSubscriptions (self , mock_requests ):
511590 mock_requests .register_uri (
@@ -518,11 +597,11 @@ def test_connectSubscriptions(self, mock_requests):
518597 "subscriptions" : [
519598 {
520599 "data_source_uuid" : "ds_ade45e52-47a4-231a-1ed2-eb6b9e541213" ,
521- "external_id " : "d1c0c885-add0-48db-8fa9-0bdf5017d6b0" ,
600+ "uuid " : "d1c0c885-add0-48db-8fa9-0bdf5017d6b0" ,
522601 },
523602 {
524603 "data_source_uuid" : "ds_ade45e52-47a4-231a-1ed2-eb6b9e541213" ,
525- "external_id " : "9db5f4a1-1695-44c0-8bd4-de7ce4d0f1d4" ,
604+ "uuid " : "9db5f4a1-1695-44c0-8bd4-de7ce4d0f1d4" ,
526605 },
527606 ]
528607 }
@@ -547,11 +626,11 @@ def test_disconnectSubscriptions(self, mock_requests):
547626 "subscriptions" : [
548627 {
549628 "data_source_uuid" : "ds_ade45e52-47a4-231a-1ed2-eb6b9e541213" ,
550- "external_id " : "d1c0c885-add0-48db-8fa9-0bdf5017d6b0" ,
629+ "uuid " : "d1c0c885-add0-48db-8fa9-0bdf5017d6b0" ,
551630 },
552631 {
553632 "data_source_uuid" : "ds_ade45e52-47a4-231a-1ed2-eb6b9e541213" ,
554- "external_id " : "9db5f4a1-1695-44c0-8bd4-de7ce4d0f1d4" ,
633+ "uuid " : "9db5f4a1-1695-44c0-8bd4-de7ce4d0f1d4" ,
555634 },
556635 ]
557636 }
0 commit comments