import json from unittest.mock import patch from models import models from tests import BaseTestCase, mock from tests.projects.fixtures.projects_fixture import fixture from tests.projects.fixtures.recent_projects_fixture import recent_project_fixture from tests.test_utils import FixtureLoader @patch("auth.atlas.atlas_token_decoder.jwt.decode", mock.jwt_decode) class TestRecentProjects(BaseTestCase): url = "/projects/recent" def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(recent_project_fixture) def test_get_recent_projects(self): response = self.execute_get(self.url, headers=self.headers) projects = response.json self.assertEqual(200, response.status_code) self.assertIs(list, type(projects)) self.assertEqual(5, len(projects)) self.soft_assert(self.assertEqual, projects[0]["id"], 506) self.soft_assert(self.assertEqual, projects[1]["id"], 505) self.soft_assert(self.assertEqual, projects[2]["id"], 504) self.soft_assert(self.assertEqual, projects[3]["id"], 503) self.soft_assert(self.assertEqual, projects[4]["id"], 502) self.assert_all() def test_get_recent_projects_in_correct_order(self): data = {"added": [{"userId": 2, "roleId": 2, "categoryIds": [1, 2, 3, 4]}]} self.client.post("/projects/504/team", data=json.dumps(data), headers=self.headers) response = self.execute_get(self.url, headers=self.headers) projects = response.json self.assertEqual(200, response.status_code) self.assertIs(list, type(projects)) self.assertEqual(5, len(projects)) self.soft_assert(self.assertEqual, projects[0]["id"], 504) self.soft_assert(self.assertEqual, projects[1]["id"], 506) self.soft_assert(self.assertEqual, projects[2]["id"], 505) self.soft_assert(self.assertEqual, projects[3]["id"], 503) self.soft_assert(self.assertEqual, projects[4]["id"], 502) self.assert_all() @patch("auth.atlas.atlas_token_decoder.jwt.decode", mock.jwt_decode) class TestRecentProjectsLessThanFive(BaseTestCase): url = "/projects/recent" def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(fixture) def test_get_empty_list_when_recent_projects_less_than_three(self): response = self.execute_get(self.url, headers=self.headers) items = response.json self.assertEqual(200, response.status_code) self.assertIs(list, type(items)) self.assertEqual(0, len(items)) @patch("auth.atlas.atlas_token_decoder.jwt.decode", mock.jwt_decode) class TestUpcomingProjects(BaseTestCase): url = "/projects/upcoming" def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(recent_project_fixture) def test_get_upcoming_projects(self): response = self.execute_get(self.url, headers=self.headers) projects = response.json self.assertEqual(200, response.status_code) self.assertIs(list, type(projects)) self.assertEqual(2, len(projects)) self.soft_assert(self.assertEqual, projects[0]["id"], 506) self.soft_assert(self.assertEqual, projects[0]["name"], "test_project_4") self.assertIs(dict, type(projects[0]["targets"])) self.soft_assert(self.assertEqual, projects[1]["id"], 505) self.soft_assert(self.assertEqual, projects[1]["name"], "test_project_4") self.assertIs(dict, type(projects[1]["targets"])) self.assert_all()