import json from unittest.mock import patch from tests.test_utils import FixtureLoader from models import models from tests import BaseTestCase, mock_for_user from tests.media_plan.fixtures.media_plan_release_details_fixture import fixture userMock = mock_for_user(5, "dev-marketing-user-5@example.com", "sme-dna|1mk0091d6cuhjp30fe6optiii") ownerMock = mock_for_user(1, "dev-marketing-user-1@example.com", "sme-dna|5cf0091d6c91d310fe6fcdc6") @patch("auth.atlas.atlas_token_decoder.jwt.decode", ownerMock.jwt_decode) class TestMediaPlanReleaseDetails(BaseTestCase): url = '/projects/{}/media-plans/{}/release-details' def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(fixture) def test_get_project_release_details(self): response = self.execute_get(self.url.format(500, 42), headers=self.headers) self.assertEqual(200, response.status_code) data = response.json self.soft_assert(self.assertEqual, data["name"], "ReleaseName") self.soft_assert(self.assertEqual, data["type"], 2) self.assert_all() def test_patch_release_details(self): data = { "name": "New_name", "type": 3 } response = self.execute_patch(self.url.format(500, 42), data=json.dumps(data), headers=self.headers) self.assertEqual(200, response.status_code) data = response.json self.soft_assert(self.assertEqual, data["name"], "New_name") self.soft_assert(self.assertEqual, data["type"], 3) self.assert_all() def test_patch_release_details_not_exist_type(self): data = { "name": "New_name", "type": 10 } response = self.execute_patch(self.url.format(500, 42), data=json.dumps(data), headers=self.headers) self.assertEqual(400, response.status_code) def test_patch_release_details_missing_release_name_campaign(self): data = { "type": 3 } response = self.execute_patch(self.url.format(502, 44), data=json.dumps(data), headers=self.headers) self.assertEqual(200, response.status_code) data = response.json self.soft_assert(self.assertEqual, data["name"], None) self.soft_assert(self.assertEqual, data["type"], 3) self.assert_all() def test_patch_release_details_make_fields_empty(self): data = { "type": None, "name": None } response = self.execute_patch(self.url.format(502, 44), data=json.dumps(data), headers=self.headers) self.assertEqual(200, response.status_code) data = response.json self.soft_assert(self.assertEqual, data["name"], None) self.soft_assert(self.assertEqual, data["type"], None) self.assert_all() def test_patch_release_detail_UK_label_project(self): data = { "type": 3 } response = self.execute_patch(self.url.format(503, 45), data=json.dumps(data), headers=self.headers) self.assertEqual(200, response.status_code) data = response.json self.soft_assert(self.assertEqual, data["name"], None) self.soft_assert(self.assertEqual, data["type"], 3) campaigns_names = data["campaignsNames"] self.soft_assert(self.assertEqual, len(campaigns_names), 2) self.soft_assert(self.assertEqual, campaigns_names[0]["campaignUuid"], "42ed4c22-e1f9-4184-a06d-f04cbdb97455") self.soft_assert( self.assertEqual, campaigns_names[0]["namingConvention"], "GRAS_103_UK_nash_ArtistName_Single_ReleaseName_Sling TV_AW_02_Feb_M_1-60_Targeting_UA_CreativeDescription_" ) self.soft_assert(self.assertEqual, campaigns_names[1]["campaignUuid"], "69ed4c22-e1f9-4184-a06d-f04cbdb97455") self.soft_assert( self.assertEqual, campaigns_names[1]["namingConvention"], "GRAS_103_UK_nash_ArtistName_Single_ReleaseName_Platform_AW_02_Feb_Gender_1-60_Targeting_Territory_CreativeDescription_" ) self.assert_all() def test_patch_release_detail_not_create_naming_convention_for_draft_campaign(self): data = { "name": "SuperReleaseName", "type": 3 } response = self.execute_patch(self.url.format(506, 48), data=json.dumps(data), headers=self.headers) self.assertEqual(200, response.status_code) data = response.json self.soft_assert(self.assertEqual, data["name"], "SuperReleaseName") self.soft_assert(self.assertEqual, data["type"], 3) campaigns_names = data["campaignsNames"] self.soft_assert(self.assertEqual, len(campaigns_names), 1) self.soft_assert(self.assertEqual, campaigns_names[0]["campaignUuid"], "14de5062-b04d-4fb4-b02e-5ab802e02608") self.soft_assert( self.assertEqual, campaigns_names[0]["namingConvention"], "GRAS_106_UK_nash_Stepan Giga_Single_SuperReleaseName_Platform_Objective_StartDay_StartMonth_Gender_1-15_Targeting_Territory_CreativeDescription_" ) self.assert_all()