Example #1
0
    def test_schedule_campaign_less_than_season_end(self):
        products_list = [{
            "product_name": "apple_iphone",
            "campaign_days": 10,
            "start_date": "2021-08-07"
        }, {
            "product_name": "apple_macbookpro",
            "campaign_days": 20
        }, {
            "product_name": "apple_iphone",
            "campaign_days": 5,
            "start_date": "2021-07-17"
        }, {
            "product_name": "apple_iwatch",
            "campaign_days": 20
        }]

        campaigns = CampaignScheduler(products_list,
                                      season_start=date.today(),
                                      season_end=date.today() +
                                      timedelta(days=5))
        scheduled_campaigns = campaigns.schedule_campaign()
        season_end = campaigns.season_end

        for camp in scheduled_campaigns:
            self.assertLessEqual(
                camp['camp_end'], season_end,
                camp['camp_name'] + "camp end is greater than season end")
Example #2
0
    def test_find_gaps_1(self):

        products_list_1 = [{
            "product_name": "apple_iphone",
            "campaign_days": 10,
            "start_date": "2021-08-07"
        }, {
            "product_name": "apple_macbookpro",
            "campaign_days": 20
        }, {
            "product_name": "apple_iphone",
            "campaign_days": 5,
            "start_date": "2021-07-17"
        }, {
            "product_name": "apple_iwatch",
            "campaign_days": 20
        }]

        campaigns = CampaignScheduler(products_list_1,
                                      season_start=date.today(),
                                      season_end=date.today() +
                                      timedelta(days=30))
        campaigns.schedule_campaign()
        gaps = campaigns.find_gaps()['date']
        for i in gaps:
            self.assertIn(str(i).split(" ")[0], ["2021-08-05", "2021-08-06"])
Example #3
0
    def test_schedule_campaign_unique_campaign_names(self):
        products_list = [{
            "product_name": "apple_iphone",
            "campaign_days": 10,
            "start_date": "2021-08-07"
        }, {
            "product_name": "apple_macbookpro",
            "campaign_days": 20
        }, {
            "product_name": "apple_iphone",
            "campaign_days": 5,
            "start_date": "2021-07-17"
        }, {
            "product_name": "apple_iwatch",
            "campaign_days": 20
        }]

        campaigns = CampaignScheduler(products_list,
                                      season_start=date.today(),
                                      season_end=date.today() +
                                      timedelta(days=30))
        scheduled_campaigns = campaigns.schedule_campaign()
        camp_names = set()
        # compare length of items to len of set of camp names to determine if they are unique
        for camp in scheduled_campaigns:
            camp_names.add(camp["camp_name"])

        self.assertEqual(len(camp_names), len(scheduled_campaigns))
Example #4
0
    def test_schedule_campaign_greater_than_default_season_start(self):
        products_list = [{
            "product_name": "apple_iphone",
            "campaign_days": 10,
            "start_date": "2021-08-07"
        }, {
            "product_name": "apple_macbookpro",
            "campaign_days": 20
        }]

        campaigns = CampaignScheduler(products_list)
        scheduled_campaigns = campaigns.schedule_campaign()
        season_start = campaigns.season_start

        for camp in scheduled_campaigns:
            self.assertGreaterEqual(
                camp['camp_start'], season_start,
                camp['camp_name'] + "camp start is less than season start")
Example #5
0
    def test_find_gaps_2(self):
        products_list_1 = [{
            "product_name": "apple_iphone",
            "campaign_days": 20,
            "start_date": "2021-07-07"
        }]

        campaigns = CampaignScheduler(products_list_1,
                                      season_start=date.today(),
                                      season_end=date.today() +
                                      timedelta(days=30))
        campaigns.schedule_campaign()
        gaps = campaigns.find_gaps()['date']
        for i in gaps:
            self.assertIn(
                str(i).split(" ")[0], [
                    "2021-08-05", "2021-08-06", "2021-08-07", "2021-08-08",
                    "2021-08-09", "2021-08-10", "2021-08-11", "2021-08-12",
                    "2021-08-13", "2021-08-14", "2021-08-15"
                ])