from unittest.mock import patch import pytest from tests.test_utils import FixtureLoader from models import models from tests import BaseTestCase, mock from datetime import datetime from tests.campaigns.fixtures.campaigns_fixture import fixture DATE_FORMAT = "%Y-%m-%d" @pytest.mark.skip(reason="Not used") @patch("auth.atlas.atlas_token_decoder.jwt.decode", mock.jwt_decode) class TestCampaignsNameGeneration(BaseTestCase): url = "/projects/{}/generate-campaign-name" maxDiff = None def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(fixture) @staticmethod def prepeare_campaign_data(**kwargs): data = { "territories": [2], "startDate": datetime.strftime(datetime.now(), DATE_FORMAT), "endDate": datetime.strftime(datetime.now(), DATE_FORMAT), "objective": 2, "genders": [2], "provider": 2, "platforms": [], } data.update(kwargs) if "startDate" in kwargs: data["startDate"] = datetime.strftime(kwargs.get("startDate"), "%Y-%m-%d") if "endDate" in kwargs: data["endDate"] = datetime.strftime(kwargs.get("endDate"), "%Y-%m-%d") return data def test_get_default_name_without_parameters(self): campaign_data = self.prepeare_campaign_data() response = self.execute_get(self.url.format(505), headers=self.headers, query_string=campaign_data) self.assertEqual(response.status_code, 200) data = response.json self.assertEqual(data["name"], None) def test_get_default_name_without_campaign_types(self): campaign_data = self.prepeare_campaign_data(platforms=[2, 3]) response = self.execute_get(self.url.format(505), headers=self.headers, query_string=campaign_data) self.assertEqual(response.status_code, 200) data = response.json self.assertEqual(data["name"], " | Sling TV, High Society") def test_get_default_name_without_platforms(self): campaign_data = self.prepeare_campaign_data(campaignType=5) response = self.execute_get(self.url.format(505), headers=self.headers, query_string=campaign_data) self.assertEqual(response.status_code, 200) data = response.json self.assertEqual(data["name"], "Display Ads | ") def test_get_default_name_one_platform(self): campaign_data = self.prepeare_campaign_data(platforms=[2], campaignType=5) response = self.execute_get(self.url.format(505), headers=self.headers, query_string={**campaign_data}) self.assertEqual(response.status_code, 200) data = response.json self.assertEqual(data["name"], "Display Ads | Sling TV") def test_get_default_name_two_platforms(self): campaign_data = self.prepeare_campaign_data(platforms=[2, 3], campaignType=5) response = self.execute_get(self.url.format(505), headers=self.headers, query_string={**campaign_data}) self.assertEqual(response.status_code, 200) data = response.json self.assertEqual(data["name"], "Display Ads | Sling TV, High Society") def test_get_default_campaign_name_more_than_two_platforms_and_campaign_type(self): campaign_data = self.prepeare_campaign_data(platforms=[2, 3, 4], campaignType=5) response = self.execute_get(self.url.format(505), headers=self.headers, query_string={**campaign_data}) self.assertEqual(response.status_code, 200) data = response.json self.assertEqual(data["name"], "Display Ads | Various Platforms") def test_get_UK_campaign_name_intermediate_result(self): campaign_data = self.prepeare_campaign_data( startDate=datetime(2020, 1, 1) ) response = self.execute_get(self.url.format(500), headers=self.headers, query_string={**campaign_data}) self.assertEqual(response.status_code, 200) data = response.json self.assertEqual( data["name"], "12345514_CR_Test Artist_ReleaseType_ReleaseName_Platform_AW_Jan_Targeting_UA_CreativeDescription_CreativeFormat_VideoLength_DecibelCampaignId" )