Ejemplo n.º 1
0
    def test_staff_can_create_delete_and_update(self) -> None:
        with token_auth(self, self.staff_token):
            response = self.client.post(f'{self.api_uri}/', {
                'name': 'beer',
                'price': '3.20'
            },
                                        format='json')
            self.assertEqual(response.status_code, status.HTTP_201_CREATED)

            response = self.client.put(
                self.beverage_type_uri,
                {
                    'name': 'espresso',
                    'price': '3.20'
                },
                format='json',
            )
            self.assertEqual(response.status_code, status.HTTP_200_OK)

            response = self.client.patch(self.beverage_type_uri,
                                         {'price': '3.30'},
                                         format='json')
            self.assertEqual(response.status_code, status.HTTP_200_OK)

            response = self.client.delete(self.beverage_type_uri)
            self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
            # Restore beverage type
            self.beverage_type1.save()
Ejemplo n.º 2
0
    def test_name_query(self) -> None:
        with token_auth(self, self.user1_token):
            response = self.client.get(f'{self.api_uri}/?name=coff')
            self.assertEqual(response.status_code, status.HTTP_200_OK)

            for user in response.data:
                self.assertIn('coff', user['name'].lower())
Ejemplo n.º 3
0
    def test_users_can_list_and_retrieve(self) -> None:
        with token_auth(self, self.user1_token):
            response = self.client.get(f'{self.api_uri}/')
            self.assertEqual(response.status_code, status.HTTP_200_OK)

            response = self.client.get(self.beverage_type_uri)
            self.assertEqual(response.status_code, status.HTTP_200_OK)
Ejemplo n.º 4
0
    def test_users_cant_create_delete_or_update(self) -> None:
        with token_auth(self, self.user1_token):
            response = self.client.post(f'{self.api_uri}/', {
                'name': 'beer',
                'price': '3.20'
            },
                                        format='json')
            self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

            response = self.client.put(
                self.beverage_type_uri,
                {
                    'name': 'espresso',
                    'price': '3.20'
                },
                format='json',
            )
            self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

            response = self.client.patch(self.beverage_type_uri,
                                         {'price': '3.30'},
                                         format='json')
            self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

            response = self.client.delete(self.beverage_type_uri)
            self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Ejemplo n.º 5
0
    def test_user_query(self) -> None:
        with token_auth(self, self.user1_token):
            response = self.client.get(f'{self.api_uri}/?user=1')
            self.assertEqual(response.status_code, status.HTTP_200_OK)

            for purchase in response.data:
                self.assertIn(self.user1_uri, purchase['user'])
Ejemplo n.º 6
0
 def test_staff_can_create_purchases_for_others(self) -> None:
     with token_auth(self, self.staff_token):
         response = self.client.post(
             f'{self.api_uri}/',
             {
                 'beverage_type': self.beverage_type_uri,
                 'user': self.user2_uri
             },
             format='json',
         )
         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
Ejemplo n.º 7
0
    def test_purchase_creation_updates_profile_balance(self) -> None:
        with token_auth(self, self.user1_token):
            self.user1.refresh_from_db()
            previous_balance = self.user1.profile.balance

            response = self.client.post(
                f'{self.api_uri}/',
                {
                    'beverage_type': self.beverage_type_uri,
                    'user': self.user1_uri
                },
            )
            self.assertEqual(response.status_code, status.HTTP_201_CREATED)

            self.user1.refresh_from_db()
            new_balance = self.user1.profile.balance
            self.assertEqual(new_balance,
                             previous_balance - self.beverage_type.price)
Ejemplo n.º 8
0
    def test_users_cant_delete_or_update_purchases(self) -> None:
        with token_auth(self, self.user1_token):
            response = self.client.put(
                self.purchase1_uri,
                {'beverage_type': self.beverage_type_uri},
                format='json',
            )
            self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

            response = self.client.patch(
                self.purchase1_uri,
                {'beverage_type': self.beverage_type_uri},
                format='json',
            )
            self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

            response = self.client.delete(self.purchase1_uri)
            self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Ejemplo n.º 9
0
    def test_admins_can_delete_and_update_purchases(self) -> None:
        with token_auth(self, self.staff_token):
            response = self.client.put(
                self.purchase1_uri,
                {
                    'beverage_type': self.beverage_type_uri,
                    'user': self.user1_uri
                },
                format='json',
            )
            self.assertEqual(response.status_code, status.HTTP_200_OK)

            response = self.client.patch(
                self.purchase1_uri,
                {'beverage_type': self.beverage_type_uri},
                format='json',
            )
            self.assertEqual(response.status_code, status.HTTP_200_OK)

            response = self.client.delete(self.purchase1_uri)
            self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
            # Restore purchase
            self.purchase1.save()
Ejemplo n.º 10
0
 def test_beverage_type_query_ignores_wrong_type(self) -> None:
     with token_auth(self, self.user1_token):
         response = self.client.get(
             f'{self.api_uri}/?beverage_type=has-to-be-0-or-1')
         self.assertEqual(response.status_code, status.HTTP_200_OK)