aboutsummaryrefslogtreecommitdiff
path: root/tests/managers/gr/test_team.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/managers/gr/test_team.py')
-rw-r--r--tests/managers/gr/test_team.py125
1 files changed, 125 insertions, 0 deletions
diff --git a/tests/managers/gr/test_team.py b/tests/managers/gr/test_team.py
new file mode 100644
index 0000000..9215da4
--- /dev/null
+++ b/tests/managers/gr/test_team.py
@@ -0,0 +1,125 @@
+from uuid import uuid4
+
+from test_utils.models.conftest import team
+
+
+class TestMembershipManager:
+
+ def test_init(self, membership_manager, gr_db):
+ assert membership_manager.pg_config == gr_db
+
+
+class TestTeamManager:
+
+ def test_init(self, team_manager, gr_db):
+ assert team_manager.pg_config == gr_db
+
+ def test_get_or_create(self, team_manager):
+ from generalresearch.models.gr.team import Team
+
+ new_uuid = uuid4().hex
+
+ team: Team = team_manager.get_or_create(uuid=new_uuid)
+
+ assert isinstance(team, Team)
+ assert isinstance(team.id, int)
+ assert team.uuid == new_uuid
+ assert team.name == "< Unknown >"
+
+ def test_get_all(self, team_manager):
+ res1 = team_manager.get_all()
+ assert isinstance(res1, list)
+
+ team_manager.create_dummy()
+ res2 = team_manager.get_all()
+ assert len(res1) == len(res2) - 1
+
+ def test_create(self, team_manager):
+ from generalresearch.models.gr.team import Team
+
+ team: Team = team_manager.create_dummy()
+ assert isinstance(team, Team)
+ assert isinstance(team.id, int)
+
+ def test_add_user(self, team, team_manager, gr_um, gr_db, gr_redis_config):
+ from generalresearch.models.gr.authentication import GRUser
+ from generalresearch.models.gr.team import Membership
+
+ user: GRUser = gr_um.create_dummy()
+
+ instance = team_manager.add_user(team=team, gr_user=user)
+ assert isinstance(instance, Membership)
+
+ # assert team.gr_users is None
+ team.prefetch_gr_users(pg_config=gr_db, redis_config=gr_redis_config)
+ assert isinstance(team.gr_users, list)
+ assert len(team.gr_users)
+ assert team.gr_users == [user]
+
+ def test_get_by_uuid(self, team_manager):
+ from generalresearch.models.gr.team import Team
+
+ team: Team = team_manager.create_dummy()
+
+ instance = team_manager.get_by_uuid(team_uuid=team.uuid)
+ assert team.id == instance.id
+
+ def test_get_by_id(self, team_manager):
+ from generalresearch.models.gr.team import Team
+
+ team: Team = team_manager.create_dummy()
+
+ instance = team_manager.get_by_id(team_id=team.id)
+ assert team.uuid == instance.uuid
+
+ def test_get_by_user(self, team, team_manager, gr_um):
+ from generalresearch.models.gr.authentication import GRUser
+ from generalresearch.models.gr.team import Team
+
+ user: GRUser = gr_um.create_dummy()
+ team_manager.add_user(team=team, gr_user=user)
+
+ res = team_manager.get_by_user(gr_user=user)
+ assert isinstance(res, list)
+ assert len(res) == 1
+ instance = res[0]
+ assert isinstance(instance, Team)
+ assert instance.uuid == team.uuid
+
+ def test_get_by_user_duplicates(
+ self,
+ gr_user_token,
+ gr_user,
+ membership,
+ product_factory,
+ membership_factory,
+ team,
+ thl_web_rr,
+ gr_redis_config,
+ gr_db,
+ ):
+ product_factory(team=team)
+ membership_factory(team=team, gr_user=gr_user)
+
+ gr_user.prefetch_teams(
+ pg_config=gr_db,
+ redis_config=gr_redis_config,
+ )
+
+ assert len(gr_user.teams) == 1
+
+ # def test_create_raise_on_duplicate(self):
+ # t_uuid = uuid4().hex
+ #
+ # # Make the first one
+ # team = TeamManager.create(
+ # uuid=t_uuid,
+ # name=f"test-{t_uuid[:6]}")
+ # assert isinstance(team, Team)
+ #
+ # # Try to make it again
+ # with pytest.raises(expected_exception=psycopg.errors.UniqueViolation):
+ # TeamManager.create(
+ # uuid=t_uuid,
+ # name=f"test-{t_uuid[:6]}")
+ #