def test_leave_group(self):
        store = StoreFactory(group=self.group)
        pickupdate = PickupDateFactory(store=store,
                                       collectors=[self.member, self.user],
                                       date=timezone.now() +
                                       relativedelta(weeks=1))
        past_pickupdate = PickupDateFactory(store=store,
                                            collectors=[
                                                self.member,
                                            ],
                                            date=timezone.now() -
                                            relativedelta(weeks=1))
        unrelated_pickupdate = PickupDateFactory(
            date=timezone.now() + relativedelta(weeks=1),
            collectors=[
                self.member,
            ],
        )
        unrelated_pickupdate.store.group.members.add(self.member)

        self.client.force_login(user=self.member)
        response = self.client.post('/api/groups/{}/leave/'.format(
            self.group.id))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertFalse(pickupdate.collectors.get_queryset().filter(
            id=self.member.id).exists())
        self.assertTrue(past_pickupdate.collectors.get_queryset().filter(
            id=self.member.id).exists())
        self.assertTrue(unrelated_pickupdate.collectors.get_queryset().filter(
            id=self.member.id).exists())
    def setUpClass(cls):
        super().setUpClass()
        cls.url = '/api/pickup-dates/'

        # pickup date for group with one member and one store
        cls.member = UserFactory()
        cls.group = GroupFactory(members=[cls.member, ])
        cls.store = StoreFactory(group=cls.group)
        cls.pickup = PickupDateFactory(store=cls.store)
        cls.pickup_url = cls.url + str(cls.pickup.id) + '/'
        cls.join_url = cls.pickup_url + 'add/'
        cls.leave_url = cls.pickup_url + 'remove/'

        # not a member of the group
        cls.user = UserFactory()

        # another pickup date for above store
        cls.pickup_data = {'date': timezone.now() + relativedelta(days=2),
                           'max_collectors': 5,
                           'store': cls.store.id}

        # past pickup date
        cls.past_pickup_data = {'date': timezone.now() - relativedelta(days=1),
                                'max_collectors': 5,
                                'store': cls.store.id}
        cls.past_pickup = PickupDateFactory(store=cls.store, date=timezone.now() - relativedelta(days=1))
        cls.past_pickup_url = cls.url + str(cls.past_pickup.id) + '/'
        cls.past_join_url = cls.past_pickup_url + 'add/'
        cls.past_leave_url = cls.past_pickup_url + 'remove/'
Exemplo n.º 3
0
    def setUpClass(cls):
        super().setUpClass()
        cls.url = '/api/pickup-dates/'

        # pickup date for group with one member and one store
        cls.member = UserFactory()
        cls.group = GroupFactory(members=[
            cls.member,
        ])
        cls.store = StoreFactory(group=cls.group)
        cls.pickup = PickupDateFactory(store=cls.store)

        # and another store + group + pick-update
        cls.group2 = GroupFactory(members=[
            cls.member,
        ])
        cls.store2 = StoreFactory(group=cls.group2)
        cls.pickup2 = PickupDateFactory(store=cls.store2)

        # a pickup date series
        cls.series = PickupDateSeriesFactory(store=cls.store)
        cls.series.update_pickup_dates()

        # another pickup date series
        cls.series2 = PickupDateSeriesFactory(store=cls.store)
        cls.series2.update_pickup_dates()
Exemplo n.º 4
0
 def setUpClass(cls):
     super().setUpClass()
     cls.user = UserFactory()
     cls.group = GroupFactory(members=[cls.user, ])
     cls.store = StoreFactory(group=cls.group)
     cls.pickupdate = PickupDateFactory(
         store=cls.store,
         date=timezone.now() + relativedelta(days=1),
         collectors=[cls.user, ])
     cls.past_pickupdate = PickupDateFactory(
         store=cls.store,
         date=timezone.now() - relativedelta(days=1),
         collectors=[cls.user, ]
     )
     cls.url = '/api/users/{}/'.format(cls.user.id)
Exemplo n.º 5
0
 def setUpTestData(cls):
     cls.member = UserFactory()
     cls.group = GroupFactory(members=[cls.member, ])
     cls.store = StoreFactory(group=cls.group)
     cls.pickup = PickupDateFactory(store=cls.store)
     cls.pickup_url = '/api/pickup-dates/{}/'.format(cls.pickup.id)
     cls.series = PickupDateSeriesFactory(store=cls.store)
     cls.series_url = '/api/pickup-date-series/{}/'.format(cls.series.id)
Exemplo n.º 6
0
 def setUpTestData(cls):
     cls.member = UserFactory()
     cls.group = GroupFactory(members=[cls.member, ])
     cls.store = StoreFactory(group=cls.group)
     cls.pickup = PickupDateFactory(
         store=cls.store,
         date=timezone.now() - relativedelta(days=1)
     )
     cls.pickup_url = '/api/pickup-dates/{}/'.format(cls.pickup.id)
     cls.pickup.collectors.add(cls.member)
     call_command('delete_old_pickup_dates')
Exemplo n.º 7
0
 def setUpTestData(cls):
     cls.member = UserFactory()
     cls.group = GroupFactory(members=[cls.member, ])
     cls.store = StoreFactory(group=cls.group)
     cls.pickup = PickupDateFactory(
         store=cls.store,
         date=timezone.now() - relativedelta(days=1)
     )
     cls.pickup_url = '/api/pickup-dates/{}/'.format(cls.pickup.id)
     # No one who joined the pickup
     call_command('process_finished_pickup_dates')
Exemplo n.º 8
0
    def test_delete_stores_as_group_member(self):
        PickupDateSeriesFactory(store=self.store)
        PickupDateFactory(store=self.store)

        self.client.force_login(user=self.member)
        response = self.client.delete(self.store_url)
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
        response = self.client.get(self.url)
        self.assertEqual(len(response.data), 0)

        # should also delete pickup dates & series
        response = self.client.get('/api/pickup-dates/')
        self.assertEqual(len(response.data), 0)
        response = self.client.get('/api/pickup-date-series/')
        self.assertEqual(len(response.data), 0)
Exemplo n.º 9
0
 def setUpClass(cls):
     super().setUpClass()
     cls.series = PickupDateFactory(date=timezone.now() -
                                    relativedelta(weeks=1))
Exemplo n.º 10
0
 def setUpClass(cls):
     super().setUpClass()
     cls.pickup = PickupDateFactory(date=timezone.now() +
                                    relativedelta(hours=1))
Exemplo n.º 11
0
 def test_join_pickup_without_max_collectors_as_member(self):
     self.client.force_login(user=self.member)
     p = PickupDateFactory(max_collectors=None, store=self.store)
     response = self.client.post('/api/pickup-dates/{}/add/'.format(p.id))
     self.assertEqual(response.status_code, status.HTTP_200_OK,
                      response.data)