def setUp(self): super(PersonRemoveSocialConnectionTests, self).setUp() self.person_1_1 = self.place1.persons[0] self.person_2_1, self.person_2_2 = self.place2.persons[0:2] self.person_3_1 = self.place3.persons[0] self.account = self.accounts_factory.create_account() politic_power_logic.add_power_impacts(persons_logic.tt_power_impacts(person_inner_circle=True, place_inner_circle=True, actor_type=tt_api_impacts.OBJECT_TYPE.HERO, actor_id=self.account.id, person=self.person_1_1, amount=100, fame=0)) politic_power_logic.add_power_impacts(persons_logic.tt_power_impacts(person_inner_circle=True, place_inner_circle=True, actor_type=tt_api_impacts.OBJECT_TYPE.HERO, actor_id=self.account.id, person=self.person_2_2, amount=100, fame=0)) persons_logic.create_social_connection(connection_type=persons_relations.SOCIAL_CONNECTION_TYPE.PARTNER, person_1=self.person_1_1, person_2=self.person_2_1) self.bill_data = PersonRemoveSocialConnection(person_1_id=self.person_1_1.id, person_2_id=self.person_2_1.id) self.bill = BillPrototype.create(self.account1, 'bill-1-caption', self.bill_data, chronicle_on_accepted='chronicle-on-accepted')
def test_update(self): self.person_2_2.politic_power.change_power(self.person_2_2, hero_id=self.account.id, has_in_preferences=True, power=100) persons_logic.create_social_connection( connection_type=persons_relations.SOCIAL_CONNECTION_TYPE.PARTNER, person_1=self.person_2_2, person_2=self.person_3_1) data = { 'caption': 'new-caption', 'chronicle_on_accepted': 'new-chronicle-on-accepted', 'person_1': self.person_2_2.id, 'person_2': self.person_3_1.id } form = self.bill.data.get_user_form_update(post=data, owner_id=self.account.id) self.assertTrue(form.is_valid()) self.bill.update(form) self.bill = BillPrototype.get_by_id(self.bill.id) self.assertEqual(self.bill.data.person_1_id, self.person_2_2.id) self.assertEqual(self.bill.data.person_2_id, self.person_3_1.id) self.assertEqual(self.bill.data.place_1_id, self.place2.id) self.assertEqual(self.bill.data.place_2_id, self.place3.id) self.assertEqual(self.bill.data.old_place_1_name, self.place2.utg_name) self.assertEqual(self.bill.data.old_place_2_name, self.place3.utg_name)
def setUp(self): super(PersonRemoveSocialConnectionTests, self).setUp() self.person_1_1 = self.place1.persons[0] self.person_2_1, self.person_2_2 = self.place2.persons[0:2] self.person_3_1 = self.place3.persons[0] self.account = self.accounts_factory.create_account() persons_logic.create_social_connection( connection_type=persons_relations.SOCIAL_CONNECTION_TYPE.PARTNER, person_1=self.person_1_1, person_2=self.person_2_1) self.bill_data = PersonRemoveSocialConnection( person_1_id=self.person_1_1.id, person_2_id=self.person_2_1.id) self.bill = BillPrototype.create( self.account1, 'bill-1-caption', self.bill_data, chronicle_on_accepted='chronicle-on-accepted') self.person_1_1.politic_power.change_power(self.person_1_1, hero_id=self.account.id, has_in_preferences=True, power=100)
def setUp(self): super(PersonRemoveSocialConnectionTests, self).setUp() self.person_1_1 = self.place1.persons[0] self.person_2_1, self.person_2_2 = self.place2.persons[0:2] self.person_3_1 = self.place3.persons[0] self.account = self.accounts_factory.create_account() persons_logic.create_social_connection( connection_type=persons_relations.SOCIAL_CONNECTION_TYPE.PARTNER, person_1=self.person_1_1, person_2=self.person_2_1, ) self.bill_data = PersonRemoveSocialConnection(person_1_id=self.person_1_1.id, person_2_id=self.person_2_1.id) self.bill = BillPrototype.create( self.account1, "bill-1-caption", "bill-1-rationale", self.bill_data, chronicle_on_accepted="chronicle-on-accepted", ) self.person_1_1.politic_power.change_power( self.person_1_1, hero_id=self.account.id, has_in_preferences=True, power=100 )
def test_create_social_connection__uniqueness(self): connection = relations.SOCIAL_CONNECTION_TYPE.random() person_1 = self.place_1.persons[0] person_2 = self.place_2.persons[0] logic.create_social_connection(connection_type=connection, person_1=person_1, person_2=person_2) self.assertRaises(exceptions.PersonsAlreadyConnectedError, logic.create_social_connection, connection_type=connection, person_1=person_1, person_2=person_2) self.assertRaises(exceptions.PersonsAlreadyConnectedError, logic.create_social_connection, connection_type=connection, person_1=person_2, person_2=person_1) self.assertRaises( exceptions.PersonsAlreadyConnectedError, logic.create_social_connection, connection_type=relations.SOCIAL_CONNECTION_TYPE.random( exclude=(connection, )), person_1=person_1, person_2=person_2) self.assertRaises( exceptions.PersonsAlreadyConnectedError, logic.create_social_connection, connection_type=relations.SOCIAL_CONNECTION_TYPE.random( exclude=(connection, )), person_1=person_2, person_2=person_1)
def test_update(self): self.person_2_2.politic_power.change_power( self.person_2_2, hero_id=self.account.id, has_in_preferences=True, power=100 ) persons_logic.create_social_connection( connection_type=persons_relations.SOCIAL_CONNECTION_TYPE.PARTNER, person_1=self.person_2_2, person_2=self.person_3_1, ) data = { "caption": "new-caption", "rationale": "new-rationale", "chronicle_on_accepted": "new-chronicle-on-accepted", "person_1": self.person_2_2.id, "person_2": self.person_3_1.id, } form = self.bill.data.get_user_form_update(post=data, owner_id=self.account.id) self.assertTrue(form.is_valid()) self.bill.update(form) self.bill = BillPrototype.get_by_id(self.bill.id) self.assertEqual(self.bill.data.person_1_id, self.person_2_2.id) self.assertEqual(self.bill.data.person_2_id, self.person_3_1.id) self.assertEqual(self.bill.data.place_1_id, self.place2.id) self.assertEqual(self.bill.data.place_2_id, self.place3.id) self.assertEqual(self.bill.data.old_place_1_name, self.place2.utg_name) self.assertEqual(self.bill.data.old_place_2_name, self.place3.utg_name)
def test_has_meanign__max_connections_first_master(self): persons_logic.create_social_connection(connection_type=persons_relations.SOCIAL_CONNECTION_TYPE.PARTNER, person_1=self.person_1_1, person_2=self.person_2_2) self.assertFalse(self.bill.has_meaning())
def test_search_available_connections(self): # check if distances between places not changed distance_1_2 = waymarks_storage.look_for_road(self.place_1, self.place_2).length distance_2_3 = waymarks_storage.look_for_road(self.place_2, self.place_3).length self.assertTrue(distance_2_3 < distance_1_2 < waymarks_storage.look_for_road(self.place_1, self.place_3).length) # check that every place has more then 1 person self.assertTrue(len(self.place_1.persons) > 1) self.assertTrue(len(self.place_2.persons) > 1) self.assertTrue(len(self.place_3.persons) > 1) self.assertEqual(len(self.place_3.persons), 3) connected_persons = self.place_3.persons[1] test_person = self.place_2.persons[0] logic.create_social_connection(connection_type=relations.SOCIAL_CONNECTION_TYPE.random(), person_1=test_person, person_2=connected_persons) expected_persons = set(person.id for person in self.place_3.persons) - set((connected_persons.id,)) with mock.patch('the_tale.game.balance.constants.QUEST_AREA_RADIUS', (distance_1_2 + distance_2_3) / 2): candidates = set(person.id for person in logic.search_available_connections(test_person)) # no persons from same place — no persons from place_2 # no persons out radius — no persons from place_1 # no connected_persons — no connected_person self.assertEqual(expected_persons, candidates)
def setUp(self): super(SocialConnectionsStorageTest, self).setUp() self.place_1, self.place_2, self.place_3 = create_test_map() self.person_1_1, self.person_1_2 = self.place_1.persons[:2] self.person_2_1, self.person_2_2 = self.place_2.persons[:2] self.person_3_1, self.person_3_2 = self.place_3.persons[:2] self.connection_1 = logic.create_social_connection(relations.SOCIAL_CONNECTION_TYPE.random(), self.person_1_1, self.person_2_1) self.connection_2 = logic.create_social_connection(relations.SOCIAL_CONNECTION_TYPE.random(), self.person_1_2, self.person_2_1) self.connection_3 = logic.create_social_connection(relations.SOCIAL_CONNECTION_TYPE.random(), self.person_3_1, self.person_2_1)
def test_user_form__has_connection(self): persons_logic.create_social_connection(connection_type=persons_relations.SOCIAL_CONNECTION_TYPE.PARTNER, person_1=self.person_1_1, person_2=self.person_2_1) data = {'caption': 'caption-caption', 'rationale': 'rationale', 'chronicle_on_accepted': 'chronicle-on-accepted', 'person_1': self.person_1_1.id, 'person_2': self.person_2_1.id, 'connection_type': persons_relations.SOCIAL_CONNECTION_TYPE.PARTNER} form = self.bill.data.get_user_form_update(post=data, owner_id=self.account.id) self.assertFalse(form.is_valid())
def test_create_social_connection__uniqueness(self): connection = relations.SOCIAL_CONNECTION_TYPE.random() person_1 = self.place_1.persons[0] person_2 = self.place_2.persons[0] logic.create_social_connection(connection_type=connection, person_1=person_1, person_2=person_2) self.assertRaises(exceptions.PersonsAlreadyConnectedError, logic.create_social_connection, connection_type=connection, person_1=person_1, person_2=person_2) self.assertRaises(exceptions.PersonsAlreadyConnectedError, logic.create_social_connection, connection_type=connection, person_1=person_2, person_2=person_1) self.assertRaises(exceptions.PersonsAlreadyConnectedError, logic.create_social_connection, connection_type=relations.SOCIAL_CONNECTION_TYPE.random(exclude=(connection,)), person_1=person_1, person_2=person_2) self.assertRaises(exceptions.PersonsAlreadyConnectedError, logic.create_social_connection, connection_type=relations.SOCIAL_CONNECTION_TYPE.random(exclude=(connection,)), person_1=person_2, person_2=person_1)
def test_social_connections(self): persons_1 = self.place_1.persons persons_2 = self.place_2.persons persons_3 = self.place_3.persons persons_logic.create_social_connection(persons_relations.SOCIAL_CONNECTION_TYPE.random(), persons_1[0], persons_2[0]) persons_logic.create_social_connection(persons_relations.SOCIAL_CONNECTION_TYPE.random(), persons_1[1], persons_3[0]) persons_logic.create_social_connection(persons_relations.SOCIAL_CONNECTION_TYPE.random(), persons_2[0], persons_3[0]) persons_logic.create_social_connection(persons_relations.SOCIAL_CONNECTION_TYPE.random(), persons_2[1], persons_3[1]) self.hero.position.set_place(self.place_1) logic.fill_places(self.knowledge_base, self.get_hero_info(), waymarks_storage.look_for_road(self.place_1, self.place_2).length) logic.setup_persons(self.knowledge_base, self.get_hero_info()) logic.setup_social_connections(self.knowledge_base) expected_connections = [] for person in persons_storage.persons.all(): if person.place_id == self.place_3.id: continue for connection_type, connected_person_id in persons_storage.social_connections.get_person_connections(person): connected_person = persons_storage.persons[connected_person_id] if connected_person.place_id == self.place_3.id: continue expected_connections.append(logic.fact_social_connection(connection_type, uids.person(person.id), uids.person(connected_person.id))) self.check_facts(places=[logic.fact_place(self.place_1), logic.fact_place(self.place_2)], persons=[logic.fact_person(person) for person in persons_storage.persons.all() if person.place_id != self.place_3.id], locations=[logic.fact_located_in(person) for person in persons_storage.persons.all() if person.place_id != self.place_3.id], social_connections=expected_connections)
def test_social_connections(self): persons_1 = self.place_1.persons persons_2 = self.place_2.persons persons_3 = self.place_3.persons persons_logic.create_social_connection( persons_relations.SOCIAL_CONNECTION_TYPE.random(), persons_1[0], persons_2[0]) persons_logic.create_social_connection( persons_relations.SOCIAL_CONNECTION_TYPE.random(), persons_1[1], persons_3[0]) persons_logic.create_social_connection( persons_relations.SOCIAL_CONNECTION_TYPE.random(), persons_2[0], persons_3[0]) persons_logic.create_social_connection( persons_relations.SOCIAL_CONNECTION_TYPE.random(), persons_2[1], persons_3[1]) self.hero.position.set_place(self.place_1) logic.fill_places( self.knowledge_base, self.get_hero_info(), waymarks_storage.look_for_road(self.place_1, self.place_2).length) logic.setup_persons(self.knowledge_base, self.get_hero_info()) logic.setup_social_connections(self.knowledge_base) expected_connections = [] for person in persons_storage.persons.all(): if person.place_id == self.place_3.id: continue for connection_type, connected_person_id in persons_storage.social_connections.get_person_connections( person): connected_person = persons_storage.persons[connected_person_id] if connected_person.place_id == self.place_3.id: continue expected_connections.append( logic.fact_social_connection( connection_type, uids.person(person.id), uids.person(connected_person.id))) self.check_facts(places=[ logic.fact_place(self.place_1), logic.fact_place(self.place_2) ], persons=[ logic.fact_person(person) for person in persons_storage.persons.all() if person.place_id != self.place_3.id ], locations=[ logic.fact_located_in(person) for person in persons_storage.persons.all() if person.place_id != self.place_3.id ], social_connections=expected_connections)
def test_remove_social_connection(self): connection_type = relations.SOCIAL_CONNECTION_TYPE.random() person_1 = self.place_1.persons[0] person_2 = self.place_2.persons[0] with self.check_delta(models.SocialConnection.objects.count, 1): with self.check_changed(lambda: storage.social_connections._version): connection = logic.create_social_connection(connection_type=connection_type, person_1=person_1, person_2=person_2) logic.remove_connection(connection) self.assertNotIn(connection.id, storage.social_connections)
def test_create_social_connection(self): connection_type = relations.SOCIAL_CONNECTION_TYPE.random() person_1 = self.place_1.persons[0] person_2 = self.place_2.persons[0] with self.check_delta(models.SocialConnection.objects.count, 1): with self.check_changed(lambda: storage.social_connections._version): connection = logic.create_social_connection(connection_type=connection_type, person_1=person_1, person_2=person_2) self.assertEqual(connection.connection, connection_type) self.assertTrue(person_1.id < person_2.id) self.assertEqual(connection.person_1_id, person_1.id) self.assertEqual(connection.person_2_id, person_2.id) self.assertIn(connection.id, storage.social_connections)
def apply(self, bill=None): if self.has_meaning(): persons_logic.create_social_connection(connection_type=self.connection_type, person_1=self.person_1, person_2=self.person_2)