def test_create_all_pickup_dates_inactive_stores(self):
        self.store.status = StoreStatus.ARCHIVED.value
        self.store.save()

        start_date = self.store.group.timezone.localize(datetime.now().replace(
            2017, 3, 18, 15, 0, 0, 0))

        series = PickupDateSeries(store=self.store,
                                  rule=str(self.recurrence),
                                  start_date=start_date)
        series.save()
        PickupDate.objects.all().delete()
        PickupDateSeries.objects.create_all_pickup_dates()
        self.assertEqual(PickupDate.objects.count(), 0)
 def test_delete(self):
     now = timezone.now()
     two_weeks_ago = now - relativedelta(weeks=2)
     series = PickupDateSeries(store=self.store,
                               rule=str(self.recurrence),
                               start_date=two_weeks_ago)
     series.save()
     series.update_pickup_dates(start=lambda: two_weeks_ago)
     pickup_dates = series.pickup_dates.all()
     past_date_count = pickup_dates.filter(date__lt=now).count()
     self.assertGreater(pickup_dates.count(), 2)
     series.delete()
     self.assertEqual(PickupDate.objects.filter(date__gte=now).count(), 0)
     self.assertEqual(
         PickupDate.objects.filter(date__lt=now).count(), past_date_count)
    def test_daylight_saving_time_to_winter(self):
        start_date = self.store.group.timezone.localize(datetime.now().replace(
            2016, 10, 22, 15, 0, 0, 0))

        series = PickupDateSeries(store=self.store,
                                  rule=str(self.recurrence),
                                  start_date=start_date)
        series.save()
        series.update_pickup_dates(
            start=lambda: timezone.now().replace(2016, 10, 22, 4, 40, 13))
        expected_dates = []
        for month, day in [(10, 22), (10, 29), (11, 5), (11, 12)]:
            expected_dates.append(
                self.store.group.timezone.localize(
                    datetime(2016, month, day, 15, 0)))
        for actual_date, expected_date in zip(
                PickupDate.objects.filter(series=series), expected_dates):
            self.assertEqual(actual_date.date, expected_date)