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')
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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
        )
Ejemplo n.º 5
0
    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())
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
    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())
Ejemplo n.º 12
0
    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)
Ejemplo n.º 13
0
    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)
Ejemplo n.º 14
0
    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)
Ejemplo n.º 15
0
    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)
Ejemplo n.º 16
0
    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)
Ejemplo n.º 18
0
 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)