from datetime import date from unittest.mock import patch from db import db from tests.test_utils import FixtureLoader from models import models, Project from tests import BaseTestCase, mock from tests.campaigns.fixtures.campaigns_tab_fixture import fixture @patch("auth.atlas.atlas_token_decoder.jwt.decode", mock.jwt_decode) class TestCampaignTab(BaseTestCase): url = "/projects/500/campaigns-list" def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(fixture) def test_get_campaign_tab_list(self): response = self.execute_get(self.url, headers=self.headers) data = response.json items = data["items"] self.assertEqual(200, response.status_code) self.assertIs(list, type(items)) self.assertEqual(3, len(items)) self.soft_assert(self.assertEqual, items[0]["id"], 600) self.soft_assert(self.assertEqual, items[0]["externalId"], "12345") self.soft_assert(self.assertEqual, items[0]["name"], "GRAS test_campaign_6") self.soft_assert(self.assertEqual, items[0]["budgetSpend"], 15000) self.soft_assert(self.assertEqual, items[0]["currency"], "GBP") self.soft_assert(self.assertEqual, items[0]["platforms"], [{"id": 67, "labelId": None, "name": "Vice"}]) self.soft_assert(self.assertEqual, items[0]["endDate"], "2020-02-12") self.soft_assert(self.assertEqual, items[0]["startDate"], "2005-01-01") self.soft_assert(self.assertEqual, items[0]["adSetsCount"], 0) self.soft_assert(self.assertEqual, items[0]["isPending"], True) self.soft_assert(self.assertEqual, items[0]["isEditable"], False) self.soft_assert( self.assertEqual, items[0]["metadata"]["fields"], { "budget": True, "spend": True, "startDate": True, "endDate": False, "genders": False, "audienceAge": True, "countries": True, "destinations": True, "notes": True, }, ) self.soft_assert(self.assertEqual, items[1]["id"], 100) self.soft_assert(self.assertEqual, items[1]["name"], "test_campaign_1") self.soft_assert(self.assertEqual, items[1]["budgetSpend"], 12) self.soft_assert(self.assertEqual, items[1]["currency"], "GBP") self.soft_assert(self.assertEqual, items[1]["platforms"], [{"id": 67, "labelId": None, "name": "Vice"}]) self.soft_assert(self.assertEqual, items[1]["endDate"], "2007-11-10") self.soft_assert(self.assertEqual, items[1]["startDate"], "2007-10-11") self.soft_assert(self.assertEqual, items[1]["adSetsCount"], 0) self.soft_assert(self.assertEqual, items[1]["isPending"], False) self.soft_assert(self.assertEqual, items[1]["isEditable"], True) self.soft_assert( self.assertEqual, items[1]["metadata"]["fields"], { "budget": True, "spend": True, "startDate": False, "endDate": False, "genders": False, "audienceAge": True, "countries": True, "destinations": True, "notes": True, }, ) self.soft_assert(self.assertEqual, items[2]["id"], 200) self.soft_assert(self.assertEqual, items[2]["name"], "test_campaign_2") self.soft_assert(self.assertEqual, items[2]["budgetSpend"], 90000) self.soft_assert(self.assertEqual, items[2]["currency"], "GBP") self.soft_assert(self.assertEqual, items[2]["platforms"], [{"id": 7, "labelId": None, "name": "Pandora"}]) self.soft_assert(self.assertEqual, items[2]["endDate"], "2008-10-10") self.soft_assert(self.assertEqual, items[2]["startDate"], "2008-02-02") self.soft_assert(self.assertEqual, items[2]["adSetsCount"], 0) self.soft_assert(self.assertEqual, items[2]["isPending"], False) self.soft_assert(self.assertEqual, items[2]["isEditable"], True) self.soft_assert( self.assertEqual, items[2]["metadata"]["fields"], { "budget": False, "spend": False, "startDate": False, "endDate": False, "genders": False, "audienceAge": True, "countries": True, "destinations": False, "notes": True, }, ) self.soft_assert(self.assertEqual, data["limit"], 20) self.soft_assert(self.assertEqual, data["offset"], 0) self.soft_assert(self.assertEqual, data["total"], 3) self.assert_all() def test_get_pending_campaign_tab_list(self): response = self.execute_get(self.url, headers=self.headers, query_string={"status": 2}) data = response.json items = data["items"] self.assertEqual(200, response.status_code) self.assertIs(list, type(items)) self.assertEqual(1, len(items)) self.soft_assert(self.assertEqual, items[0]["id"], 600) self.soft_assert(self.assertEqual, items[0]["externalId"], "12345") self.soft_assert(self.assertEqual, items[0]["name"], "GRAS test_campaign_6") self.soft_assert(self.assertEqual, items[0]["budgetSpend"], 15000) self.soft_assert(self.assertEqual, items[0]["currency"], "GBP") self.soft_assert(self.assertEqual, items[0]["platforms"], [{"id": 67, "labelId": None, "name": "Vice"}]) self.soft_assert(self.assertEqual, items[0]["endDate"], "2020-02-12") self.soft_assert(self.assertEqual, items[0]["startDate"], "2005-01-01") self.soft_assert(self.assertEqual, items[0]["adSetsCount"], 0) self.soft_assert(self.assertEqual, items[0]["isPending"], True) self.soft_assert(self.assertEqual, items[0]["isEditable"], False) self.soft_assert(self.assertEqual, data["limit"], 20) self.soft_assert(self.assertEqual, data["offset"], 0) self.soft_assert(self.assertEqual, data["total"], 1) self.assert_all()