import json from datetime import date from unittest.mock import patch from db import db from workers.artist_team_automation_worker import ArtistTeamAutomationWorker from tests.test_utils import FixtureLoader from models import models, Project from tests import BaseTestCase, mock_for_user from tests.artist_team_automation.fixtures.artist_team_automation_fixture import fixture user1 = mock_for_user(1, "dev-marketing-user-1@example.com", "sme-dna|5cf0091d6c91d310fe6fcdc6", is_admin=True) user2 = mock_for_user(2, "dev-marketing-user-2@example.com", "sme-dna|5cf0091d6c91d310fe6fcdc7", is_admin=True) @patch("auth.atlas.atlas_token_decoder.jwt.decode", user2.jwt_decode) class TestArtistTeamAutomation(BaseTestCase): def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(fixture) def test_artist_team_automation_worker(self): sut = ArtistTeamAutomationWorker() sut.execute() projects = db.session.query(Project).order_by(Project.id).all() self.soft_assert_equal(projects[0].id, 500) self.soft_assert_equal(projects[0].start_date, date(2022, 10, 11)) self.soft_assert_equal(projects[0].end_date, date(2022, 10, 12)) self.soft_assert_equal(projects[0].is_claimed, True) self.soft_assert_equal(projects[0].is_confidential, False) self.soft_assert_equal(projects[0].is_deleted, False) self.soft_assert_equal(projects[1].id, 501) # Have artist team, but in the wrong label self.soft_assert_equal(projects[1].is_claimed, False) self.soft_assert_equal(projects[1].is_confidential, False) self.soft_assert_equal(projects[1].is_deleted, False) self.soft_assert_equal(projects[2].id, 502) # Project deleted self.soft_assert_equal(projects[2].is_claimed, False) self.soft_assert_equal(projects[2].is_confidential, False) self.soft_assert_equal(projects[2].is_deleted, True) self.soft_assert_equal(projects[3].id, 503) self.soft_assert_equal(projects[3].start_date, date(2007, 10, 11)) self.soft_assert_equal(projects[3].end_date, date(2023, 5, 12)) self.soft_assert_equal(projects[3].is_claimed, True) self.soft_assert_equal(projects[3].is_confidential, False) self.soft_assert_equal(projects[3].is_deleted, False) self.soft_assert_equal(projects[4].id, 504) # Doesn't have artist team self.soft_assert_equal(projects[4].is_claimed, False) self.soft_assert_equal(projects[4].is_confidential, False) self.soft_assert_equal(projects[4].is_deleted, False) self.soft_assert_equal(projects[5].id, 505) # Project is confidential self.soft_assert_equal(projects[5].is_claimed, False) self.soft_assert_equal(projects[5].is_confidential, True) self.soft_assert_equal(projects[5].is_deleted, False) self.soft_assert_equal(projects[6].id, 506) self.soft_assert_equal(projects[6].start_date, date(2019, 10, 1)) self.soft_assert_equal(projects[6].end_date, date(2022, 3, 24)) self.soft_assert_equal(projects[6].is_claimed, True) self.soft_assert_equal(projects[6].is_confidential, False) self.soft_assert_equal(projects[6].is_deleted, False) self.soft_assert_equal(projects[7].id, 507) self.soft_assert_equal(projects[7].start_date, date(2022, 1, 11)) self.soft_assert_equal(projects[7].end_date, date(2022, 1, 12)) self.soft_assert_equal(projects[7].is_claimed, True) self.soft_assert_equal(projects[7].is_confidential, False) self.soft_assert_equal(projects[7].is_deleted, False) self.assert_all() def test_artist_team_created_should_assign_all_projects_for_artist(self): url = "/artists/GRAS_50/artist-teams" data = {"labelId": 2, "added": [{"userId": 2, "roleId": 1, "categoryIds": []}]} response = self.execute_post(url, data=json.dumps(data), headers=self.headers) self.assertEqual(200, response.status_code) project = db.session.query(Project).filter(Project.id == 501).one() self.soft_assert_equal(project.id, 501) self.soft_assert_equal(project.is_claimed, True) self.soft_assert_equal(project.is_confidential, False) self.soft_assert_equal(project.is_deleted, False) self.assert_all() def test_artist_team_created_should_not_claim_project_if_label_is_wrong(self): url = "/artists/GRAS_40/artist-teams" data = {"labelId": 4, "added": [{"userId": 2, "roleId": 1, "categoryIds": []}]} response = self.execute_post(url, data=json.dumps(data), headers=self.headers) self.assertEqual(200, response.status_code) project = db.session.query(Project).filter(Project.id == 504).one() self.soft_assert_equal(project.id, 504) self.soft_assert_equal(project.is_claimed, False) self.assert_all()