Skip to content
This repository was archived by the owner on Oct 9, 2023. It is now read-only.

Commit 7488655

Browse files
Allow duplicate role players (#85)
## What is the goal of this PR? Allowing duplicate roles to be played in a relation as of typedb/typedb#5667. This means now that `relation.getRolePlayerMap()` should return a map from `Role` to `[Thing]` rather than `set(Thing)` ## What are the changes implemented in this PR? * Update types for `rolePlayerMap` in the concept API
1 parent f92e76a commit 7488655

File tree

3 files changed

+33
-12
lines changed

3 files changed

+33
-12
lines changed

grakn/service/Session/Concept/Concept.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -595,8 +595,8 @@ def to_pair(tx_service, iter_res):
595595
else:
596596
id_mapping[role_id] = role
597597
role_key = role
598-
mapping[role_key] = set()
599-
mapping[role_key].add(player)
598+
mapping[role_key] = []
599+
mapping[role_key].append(player)
600600

601601
return mapping
602602

tests/integration/test_answer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def test_delete_returns_Void(self):
138138
tx.close()
139139
client.keyspaces().delete("matchdelete_void")
140140

141-
def test_compute_count_empty_graph_anwer_Value(self):
141+
def test_compute_count_empty_graph_answer_Value(self):
142142
with client.session("countingzero") as local_session:
143143
tx = local_session.transaction().write()
144144
tx.put_entity_type("foo")
@@ -149,7 +149,7 @@ def test_compute_count_empty_graph_anwer_Value(self):
149149
tx.close()
150150
client.keyspaces().delete("countingzero")
151151

152-
def test_aggr_count_empty_graph_anwer_Value(self):
152+
def test_aggr_count_empty_graph_answer_Value(self):
153153
with client.session("countingnonzero") as local_session:
154154
tx = local_session.transaction().write()
155155
tx.query("define person sub entity; dog sub entity;")

tests/integration/test_concept.py

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -669,8 +669,8 @@ def test_role_players_2_roles_1_player(self):
669669
role_players_map = parentship.role_players_map()
670670
self.assertEqual(len(role_players_map.keys()), 2)
671671
for role in role_players_map:
672-
players_set = role_players_map[role]
673-
self.assertEqual(len(players_set), 1)
672+
players_list = role_players_map[role]
673+
self.assertEqual(len(players_list), 1)
674674
self.assertTrue(role.is_role())
675675

676676
role_players = list(parentship.role_players())
@@ -691,14 +691,13 @@ def test_role_players_1_role_2_players(self):
691691
role_players_map = parentship.role_players_map()
692692
self.assertEqual(len(role_players_map.keys()), 1)
693693
for role in role_players_map:
694-
players_set = role_players_map[role]
695-
self.assertEqual(len(players_set), 2)
694+
players_list = role_players_map[role]
695+
self.assertEqual(len(players_list), 2)
696696
self.assertTrue(role.is_role())
697697

698698
role_players = list(parentship.role_players())
699699
self.assertEqual(len(role_players), 2)
700700

701-
@unittest.skip("behaviour changed on server side")
702701
def test_role_players_2_roles_same_player(self):
703702
parentship_type = self.tx.get_schema_concept("parentship")
704703
person_type = self.tx.get_schema_concept("person")
@@ -714,12 +713,34 @@ def test_role_players_2_roles_same_player(self):
714713
role_players_map = parentship.role_players_map()
715714
self.assertEqual(len(role_players_map.keys()), 2)
716715
for role in role_players_map:
717-
players_set = role_players_map[role]
718-
self.assertEqual(len(players_set), 1)
716+
players_list = role_players_map[role]
717+
self.assertEqual(len(players_list), 1)
719718
self.assertTrue(role.is_role())
720719

721720
role_players = list(parentship.role_players())
722-
self.assertEqual(len(role_players), 1)
721+
self.assertEqual(len(role_players), 2)
722+
self.assertTrue(role_players[0].is_thing())
723+
724+
def test_role_players_1_role_same_player(self):
725+
parentship_type = self.tx.get_schema_concept("parentship")
726+
person_type = self.tx.get_schema_concept("person")
727+
parent_role = self.tx.get_schema_concept("parent")
728+
729+
self_parent = person_type.create()
730+
parentship = parentship_type.create()
731+
732+
parentship.assign(parent_role, self_parent)
733+
parentship.assign(parent_role, self_parent)
734+
735+
role_players_map = parentship.role_players_map()
736+
self.assertEqual(len(role_players_map.keys()), 1)
737+
for role in role_players_map:
738+
players_list = role_players_map[role]
739+
self.assertEqual(len(players_list), 2)
740+
self.assertTrue(role.is_role())
741+
742+
role_players = list(parentship.role_players())
743+
self.assertEqual(len(role_players), 2)
723744
self.assertTrue(role_players[0].is_thing())
724745

725746
def test_assign_unassign(self):

0 commit comments

Comments
 (0)