from unittest.mock import patch, MagicMock from tests.test_utils import FixtureLoader from models import models, Project from tests import BaseTestCase, mock from tests.projects.fixtures.projects_counter_fixture import fixture @patch("auth.atlas.atlas_token_decoder.jwt.decode", mock.jwt_decode) class TestProjectsCounter(BaseTestCase): url = "/projects" def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(fixture) def test_get_project_list_counter(self): response = self.execute_get(self.url, headers=self.headers) items = response.json["items"] self.assertEqual(200, response.status_code) self.assertIs(list, type(items)) self.assertEqual(4, len(items)) metadata = response.json["metadata"] self.soft_assert(self.assertEqual, metadata["completed"]["artistCount"], 1) self.soft_assert(self.assertEqual, metadata["completed"]["playlistCount"], 1) self.soft_assert(self.assertEqual, metadata["completed"]["totalCount"], 2) self.soft_assert(self.assertEqual, metadata["inProgress"]["artistCount"], 0) self.soft_assert(self.assertEqual, metadata["inProgress"]["playlistCount"], 0) self.soft_assert(self.assertEqual, metadata["inProgress"]["totalCount"], 0) self.soft_assert(self.assertEqual, metadata["scheduled"]["artistCount"], 1) self.soft_assert(self.assertEqual, metadata["scheduled"]["playlistCount"], 1) self.soft_assert(self.assertEqual, metadata["scheduled"]["totalCount"], 2) self.soft_assert(self.assertEqual, metadata["total"]["artistCount"], 2) self.soft_assert(self.assertEqual, metadata["total"]["playlistCount"], 2) self.soft_assert(self.assertEqual, metadata["total"]["totalCount"], 4) self.assert_all() @patch.object(Project, "search", MagicMock(return_value=[500, 502, 503, 504])) def test_get_project_list_counter_with_search_term_should_get_updated_counters(self): response = self.execute_get(self.url, headers=self.headers, query_string={"freeText": "Auto"}) items = response.json["items"] self.assertEqual(200, response.status_code) self.assertIs(list, type(items)) self.assertEqual(2, len(items)) metadata = response.json["metadata"] self.soft_assert(self.assertEqual, metadata["completed"]["artistCount"], 0) self.soft_assert(self.assertEqual, metadata["completed"]["playlistCount"], 0) self.soft_assert(self.assertEqual, metadata["completed"]["totalCount"], 0) self.soft_assert(self.assertEqual, metadata["inProgress"]["artistCount"], 0) self.soft_assert(self.assertEqual, metadata["inProgress"]["playlistCount"], 0) self.soft_assert(self.assertEqual, metadata["inProgress"]["totalCount"], 0) self.soft_assert(self.assertEqual, metadata["scheduled"]["artistCount"], 1) self.soft_assert(self.assertEqual, metadata["scheduled"]["playlistCount"], 1) self.soft_assert(self.assertEqual, metadata["scheduled"]["totalCount"], 2) self.soft_assert(self.assertEqual, metadata["total"]["artistCount"], 2) self.soft_assert(self.assertEqual, metadata["total"]["playlistCount"], 2) self.soft_assert(self.assertEqual, metadata["total"]["totalCount"], 4) self.assert_all() def test_get_scheduled_project_list_counter_should_get_original_counters(self): response = self.execute_get(self.url, headers=self.headers, query_string={"statuses": [1]}) items = response.json["items"] self.assertEqual(200, response.status_code) self.assertIs(list, type(items)) self.assertEqual(2, len(items)) metadata = response.json["metadata"] self.soft_assert(self.assertEqual, metadata["completed"]["artistCount"], 1) self.soft_assert(self.assertEqual, metadata["completed"]["playlistCount"], 1) self.soft_assert(self.assertEqual, metadata["completed"]["totalCount"], 2) self.soft_assert(self.assertEqual, metadata["inProgress"]["artistCount"], 0) self.soft_assert(self.assertEqual, metadata["inProgress"]["playlistCount"], 0) self.soft_assert(self.assertEqual, metadata["inProgress"]["totalCount"], 0) self.soft_assert(self.assertEqual, metadata["scheduled"]["artistCount"], 1) self.soft_assert(self.assertEqual, metadata["scheduled"]["playlistCount"], 1) self.soft_assert(self.assertEqual, metadata["scheduled"]["totalCount"], 2) self.soft_assert(self.assertEqual, metadata["total"]["artistCount"], 2) self.soft_assert(self.assertEqual, metadata["total"]["playlistCount"], 2) self.soft_assert(self.assertEqual, metadata["total"]["totalCount"], 4) self.assert_all()