def test_deleting_hiding_migration(self): for i in range(1,7): UserFactory.create(remote_id=i) group = GroupFactory.create(remote_id=GROUP_ID) stat1 = GroupMigrationFactory(group=group, time=datetime.now()-timedelta(10), members_ids=[1,2,3,4,5]) stat1.save_final() stat2 = GroupMigrationFactory(group=group, time=datetime.now()-timedelta(9), members_ids=[1,2,3,4,6]) stat2.save_final() stat3 = GroupMigrationFactory(group=group, time=datetime.now()-timedelta(8), members_ids=[1,2,3,5,7]) stat3.save_final() # difference between stat2 and stat1 self.assertItemsEqual(stat2.members_entered_ids, [6]) self.assertItemsEqual(stat2.members_left_ids, [5]) # difference between stat3 and stat2 self.assertItemsEqual(stat3.members_entered_ids, [5,7]) self.assertItemsEqual(stat3.members_left_ids, [4,6]) stat2.delete() stat3 = GroupMigration.objects.get(id=stat3.id) # difference between stat3 and stat1 self.assertItemsEqual(stat3.members_entered_ids, [7]) self.assertItemsEqual(stat3.members_left_ids, [4]) stat4 = GroupMigrationFactory(group=group, time=datetime.now()-timedelta(7), members_ids=[1,2,3,4,6]) stat4.save_final() # difference between stat4 and stat3 self.assertItemsEqual(stat4.members_entered_ids, [4,6]) self.assertItemsEqual(stat4.members_left_ids, [5,7]) stat3.hide() stat4 = GroupMigration.objects.get(id=stat4.id) # difference between stat4 and stat1 self.assertItemsEqual(stat4.members_entered_ids, [6]) self.assertItemsEqual(stat4.members_left_ids, [5]) stat5 = GroupMigrationFactory(group=group, time=datetime.now()-timedelta(6), members_ids=[1,2,3,5,7]) stat5.save_final() # difference between stat5 and stat4 self.assertItemsEqual(stat5.members_entered_ids, [5,7]) self.assertItemsEqual(stat5.members_left_ids, [4,6]) stat4.hidden = True stat4.save() stat5 = GroupMigration.objects.get(id=stat5.id) # difference between stat5 and stat1 self.assertItemsEqual(stat5.members_entered_ids, [7]) self.assertItemsEqual(stat5.members_left_ids, [4])
def test_comparing_entered_left(self): migration1 = GroupMigrationFactory(time=datetime.now() - timedelta(2), members_ids=range(0, 100000)) migration1.update() migration1.save() migration2 = GroupMigrationFactory(group=migration1.group, time=datetime.now() - timedelta(1), members_ids=range(99990, 100010)) migration2.update() migration2.save() self.assertEqual(migration2.hidden, False) migration2.compare_entered_left() self.assertEqual(migration2.hidden, True)
def test_comparing_with_statistic(self): if 'vkontakte_groups_statistic' not in settings.INSTALLED_APPS: return False from vkontakte_groups_statistic.factories import GroupStatFactory migration = GroupMigrationFactory(members_ids=range(0, 10000)) migration.update() migration.save() stat = GroupStatFactory(group=migration.group, members=9000, date=migration.time.date()) self.assertEqual(migration.hidden, False) migration.compare_with_statistic() self.assertEqual(migration.hidden, True) stat.members = 9001 stat.save() migration.hidden = False self.assertEqual(migration.hidden, False) migration.compare_with_statistic() self.assertEqual(migration.hidden, False)
def test_comparing_with_siblings(self): migration1 = GroupMigrationFactory(time=datetime.now() - timedelta(2), members_ids=range(0, 100000)) migration1.update() migration1.save() migration2 = GroupMigrationFactory(group=migration1.group, time=datetime.now() - timedelta(1), members_ids=range(0, 90000)) migration2.update() migration2.save() self.assertEqual(migration2.hidden, False) migration2.compare_with_siblings() self.assertEqual(migration2.hidden, True) migration3 = GroupMigrationFactory(group=migration1.group, members_ids=range(0, 90010)) migration3.update() migration3.save() self.assertEqual(migration3.hidden, False) migration3.compare_with_siblings() self.assertEqual(migration3.hidden, False) # comparing with previous and next GroupMigration.objects.all().delete() migration1 = GroupMigrationFactory(time=datetime.now() - timedelta(2), members_ids=range(0, 90000)) migration1.update() migration1.save() migration2 = GroupMigrationFactory(group=migration1.group, time=datetime.now() - timedelta(1), members_ids=range(0, 100000)) migration2.update() migration2.save() migration3 = GroupMigrationFactory(group=migration1.group, members_ids=range(0, 100010)) migration3.update() migration3.save() self.assertEqual(migration1.hidden, False) self.assertEqual(migration2.hidden, False) self.assertEqual(migration3.hidden, False) migration2.compare_with_siblings() self.assertEqual(GroupMigration.objects.get(id=migration1.id).hidden, True) self.assertEqual(GroupMigration.objects.get(id=migration2.id).hidden, False) self.assertEqual(GroupMigration.objects.get(id=migration3.id).hidden, False)