def test_delete(self): now = timezone.now() two_weeks_ago = now - relativedelta(weeks=2) with freeze_time(two_weeks_ago, tick=True): series = PickupDateSeriesFactory(place=self.place, start_date=two_weeks_ago) pickup_dates = series.pickup_dates.all() past_date_count = pickup_dates.filter(date__startswith__lt=now).count() self.assertGreater(pickup_dates.count(), 2) series.delete() upcoming_pickups = PickupDate.objects.filter(date__startswith__gte=now, is_disabled=False) self.assertEqual(upcoming_pickups.count(), 0, upcoming_pickups) self.assertEqual(PickupDate.objects.filter(date__startswith__lt=now).count(), past_date_count)
class PickupDateSeriesReceiverTests(WSTestCase): def setUp(self): super().setUp() self.member = UserFactory() self.group = GroupFactory(members=[self.member]) self.place = PlaceFactory(group=self.group) # Create far in the future to generate no pickup dates # They would lead to interfering websocket messages self.series = PickupDateSeriesFactory(place=self.place, start_date=timezone.now() + relativedelta(months=2)) def test_receive_series_changes(self): self.client = self.connect_as(self.member) date = faker.future_datetime( end_date='+30d', tzinfo=timezone.utc) + relativedelta(months=2) self.series.start_date = date self.series.save() response = self.client.messages_by_topic.get('pickups:series')[0] self.assertEqual(parse(response['payload']['start_date']), date) self.assertEqual(len(self.client.messages), 1) def test_receive_series_delete(self): self.client = self.connect_as(self.member) id = self.series.id self.series.delete() response = self.client.messages_by_topic.get( 'pickups:series_deleted')[0] self.assertEqual(response['payload']['id'], id) self.assertEqual(len(self.client.messages), 1)