import json from unittest.mock import patch from db import db from tests import BaseTestCase, mock, FixtureLoader from tests.media_plan.fixtures.media_plan_campaign_bulk_action_fixture import fixture from models import models, Campaign @patch("auth.atlas.atlas_token_decoder.jwt.decode", mock.jwt_decode) class TestMediaPlanStyles(BaseTestCase): url = "projects/{}/media-plans/{}" def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(fixture) def test_get_media_plan(self): response = self.execute_get(self.url.format(500, 42), headers=self.headers) self.assertEqual(200, response.status_code) data = response.json phases = data.get("phases") self.soft_assert_equal(len(phases), 4) campaign = phases[0].get("campaigns")[0] self.soft_assert(self.assertIsNotNone, campaign.get("style")) self.soft_assert_equal(campaign.get("columns").get("id"), 100) self.soft_assert_equal(campaign.get("style"), { "name": {"background": "rgba(0, 0, 0, 1)"}, "creativeDescription": {"background": "rgba(20, 40, 30, 0.1)"}, "notes": {"background": "rgba(20, 40, 30, 0.1)"}, }) self.assert_all() def test_set_style_when_create(self): data = { "create": [ { "phaseId": 450, "orderInPhase": 1, "campaignUuid": "796b6f6d-d1af-4d45-a481-f5ed47207d9d", "style": {"creativeDescription": {"background": "rgba(0, 0, 0, 0.1)"}}, "columns": { "startDate": "2022-01-01", } } ], } url = "/projects/{}/media-plans/{}/campaigns/bulk-action" response = self.execute_post(url.format(500, 42), data=json.dumps(data), headers=self.headers) self.assertEqual(200, response.status_code) response = self.execute_get(self.url.format(500, 42), headers=self.headers) self.assertEqual(200, response.status_code) data = response.json phases = data.get("phases") phase = phases[0] campaign = phase.get("campaigns")[1] self.soft_assert_equal(phase.get("id"), 450) self.soft_assert_equal(campaign.get("columns").get("orderInPhase"), 1) self.soft_assert_equal(campaign.get("columns").get("uuid"), "796b6f6d-d1af-4d45-a481-f5ed47207d9d") self.soft_assert_equal(campaign.get("style"), {"creativeDescription": {"background": "rgba(0, 0, 0, 0.1)"}} ) campaign_db = db.session.query(Campaign).filter(Campaign.uuid == "796b6f6d-d1af-4d45-a481-f5ed47207d9d").one() self.soft_assert_equal(campaign_db.style, {"creativeDescription": {"background": "rgba(0, 0, 0, 0.1)"}} ) self.assert_all() def test_update_style_with_removing_old_one(self): data = { "update": [ { "campaignUuid": "34ed4c22-e1f9-4184-a06d-f04cbdb97455", "style": {"name": None, "notes": {"background": "rgba(42, 42, 42, 0.1)"}}, "columns": { } } ], } url = "/projects/{}/media-plans/{}/campaigns/bulk-action" response = self.execute_post(url.format(500, 42), data=json.dumps(data), headers=self.headers) self.assertEqual(200, response.status_code) response = self.execute_get(self.url.format(500, 42), headers=self.headers) self.assertEqual(200, response.status_code) data = response.json phases = data.get("phases") campaign = phases[0].get("campaigns")[0] self.soft_assert_equal(campaign.get("columns").get("id"), 100) self.soft_assert_equal(campaign.get("style"), { "creativeDescription": {"background": "rgba(20, 40, 30, 0.1)"}, "notes": {"background": "rgba(42, 42, 42, 0.1)"}, }) self.assert_all() def test_update_style_with_empty(self): data = { "update": [ { "campaignUuid": "aa1490b5-832c-4852-9d28-7a96884ff399", "style": {"notes": {"background": "rgba(42, 42, 42, 0.1)"}}, "columns": { } } ], } url = "/projects/{}/media-plans/{}/campaigns/bulk-action" response = self.execute_post(url.format(500, 42), data=json.dumps(data), headers=self.headers) self.assertEqual(200, response.status_code) response = self.execute_get(self.url.format(500, 42), headers=self.headers) self.assertEqual(200, response.status_code) data = response.json phases = data.get("phases") campaign = phases[0].get("campaigns")[1] self.soft_assert_equal(campaign.get("columns").get("uuid"), "aa1490b5-832c-4852-9d28-7a96884ff399") self.soft_assert_equal(campaign.get("style"), { "notes": {"background": "rgba(42, 42, 42, 0.1)"}, }) self.assert_all() def test_invalid_rgba_string_error(self): data = { "update": [ { "campaignUuid": "aa1490b5-832c-4852-9d28-7a96884ff399", "style": {"notes": {"background": "rgb(42, 42, 42, 0.1)"}}, "columns": { } } ], } url = "/projects/{}/media-plans/{}/campaigns/bulk-action" response = self.execute_post(url.format(500, 42), data=json.dumps(data), headers=self.headers) self.assertEqual(422, response.status_code) def test_remove_all_styles_from_campaign_by_setting_to_none(self): data = { "update": [ { "campaignUuid": "34ed4c22-e1f9-4184-a06d-f04cbdb97455", "style": None, "columns": { } } ], } url = "/projects/{}/media-plans/{}/campaigns/bulk-action" response = self.execute_post(url.format(500, 42), data=json.dumps(data), headers=self.headers) self.assertEqual(200, response.status_code) response = self.execute_get(self.url.format(500, 42), headers=self.headers) self.assertEqual(200, response.status_code) data = response.json phases = data.get("phases") campaign = phases[0].get("campaigns")[0] self.soft_assert_equal(campaign.get("columns").get("uuid"), "34ed4c22-e1f9-4184-a06d-f04cbdb97455") self.soft_assert_equal(campaign.get("style"), None) self.assert_all() def test_remove_all_styles_from_campaign_by_setting_cell_to_none(self): data = { "update": [ { "campaignUuid": "34ed4c22-e1f9-4184-a06d-f04cbdb97455", "style": {"name": None, "notes": None, "creativeDescription": None}, "columns": { } } ], } url = "/projects/{}/media-plans/{}/campaigns/bulk-action" response = self.execute_post(url.format(500, 42), data=json.dumps(data), headers=self.headers) self.assertEqual(200, response.status_code) response = self.execute_get(self.url.format(500, 42), headers=self.headers) self.assertEqual(200, response.status_code) data = response.json phases = data.get("phases") campaign = phases[0].get("campaigns")[0] self.soft_assert_equal(campaign.get("columns").get("uuid"), "34ed4c22-e1f9-4184-a06d-f04cbdb97455") self.soft_assert_equal(campaign.get("style"), None) self.assert_all()