class PickupDateReceiverTests(WSTestCase): def setUp(self): super().setUp() self.member = UserFactory() self.group = GroupFactory(members=[self.member]) self.store = StoreFactory(group=self.group) self.pickup = PickupDateFactory(store=self.store) def test_receive_pickup_changes(self): self.client = self.connect_as(self.member) # change property date = faker.future_datetime(end_date='+30d', tzinfo=timezone.utc) self.pickup.date = date self.pickup.save() response = self.client.messages_by_topic.get('pickups:pickupdate')[0] self.assertEqual(parse(response['payload']['date']), date) # join self.client = self.connect_as(self.member) self.pickup.add_collector(self.member) response = self.client.messages_by_topic.get('pickups:pickupdate')[0] self.assertEqual(response['payload']['collector_ids'], [self.member.id]) response = self.client.messages_by_topic.get( 'conversations:conversation')[0] self.assertEqual(response['payload']['participants'], [self.member.id]) # leave self.client = self.connect_as(self.member) self.pickup.remove_collector(self.member) response = self.client.messages_by_topic.get('pickups:pickupdate')[0] self.assertEqual(response['payload']['collector_ids'], []) self.assertIn('conversations:leave', self.client.messages_by_topic.keys()) def test_receive_pickup_delete(self): self.client = self.connect_as(self.member) self.pickup.deleted = True self.pickup.save() response = self.client.messages_by_topic.get( 'pickups:pickupdate_deleted')[0] self.assertEqual(response['payload']['id'], self.pickup.id) self.assertEqual(len(self.client.messages), 1)
def test_deletes_pickup_upcoming_notification(self): user = UserFactory() group = GroupFactory(members=[user]) store = StoreFactory(group=group) in_one_hour = timezone.now() + relativedelta(hours=1) pickup = PickupDateFactory(store=store, date=in_one_hour, collectors=[user]) Notification.objects.all().delete() create_pickup_upcoming_notifications.call_local() pickup.remove_collector(user) notifications = Notification.objects.filter(type=NotificationType.PICKUP_UPCOMING.value) self.assertEqual(notifications.count(), 0)