Пример #1
0
    def test_search_by_name(self):
        """
        Search text should be contained by either firstname or
        lastname.
        """
        client1 = ClientFactory(member__firstname='tessst',
                                member__lastname='woooo')
        client2 = ClientFactory(member__firstname='woooo',
                                member__lastname='tessst')
        client3 = ClientFactory(member__firstname='woooo',
                                member__lastname='woooo')
        note1a = NoteFactory(client=client1)
        note1b = NoteFactory(client=client1)
        note2a = NoteFactory(client=client2)
        note2b = NoteFactory(client=client2)
        note3a = NoteFactory(client=client3)
        note3b = NoteFactory(client=client3)

        self.force_login()
        url = reverse('note:note_list')
        response = self.client.get(url, {'name': 'esss'})
        self.assertEqual(response.status_code, 200)
        notes = response.context['notes']
        self.assertIn(note1a, notes)
        self.assertIn(note1b, notes)
        self.assertIn(note2a, notes)
        self.assertIn(note2b, notes)
        self.assertNotIn(note3a, notes)
        self.assertNotIn(note3b, notes)
Пример #2
0
 def setUpTestData(cls):
     cls.client1 = ClientFactory()
     cls.billed_orders = OrderFactory.create_batch(
         10,
         delivery_date=datetime.datetime.today(),
         client=cls.client1,
         status="D",
     )
     cls.orders = OrderFactory.create_batch(
         10,
         delivery_date=datetime.datetime.today(),
         client=ClientFactory(),
         status="O",
     )
Пример #3
0
 def test_get_with_client_pk(self):
     client = ClientFactory()
     response = self.client.get(
         reverse('member:client_notes_add', kwargs={'pk': client.pk}))
     self.assertEqual(response.status_code, 200)
     content = str(response.content, encoding=response.charset)
     self.assertIn(str(client.pk), content)
     self.assertIn(client.member.firstname, content)
     self.assertIn(client.member.lastname, content)
Пример #4
0
 def setUpTestData(cls):
     cls.clients = ClientFactory()
     cls.admin = User.objects.create_superuser(
         username='******',
         email='*****@*****.**',
         password='******')
     cls.note = NoteFactory.create(
         client=cls.clients,
         author=cls.admin,
     )
Пример #5
0
    def handle(self, *args, **options):
        # Load fixtures for the routes
        fixture_dir = os.path.abspath(
            os.path.join(os.path.dirname(__file__), '../fixtures'))
        fixture_filename = 'routes.json'
        fixture_file = os.path.join(fixture_dir, fixture_filename)
        call_command('loaddata', fixture_filename)

        client = ClientFactory.create_batch(10)
        self.stdout.write(
            self.style.SUCCESS('Successfully created client "%s"' % client))
Пример #6
0
 def test_allow_access_to_users_with_edit_permission(self):
     # Setup
     user = User.objects.create_superuser(username='******',
                                          email='*****@*****.**',
                                          password='******')
     user.save()
     self.client.login(username='******', password='******')
     client = ClientFactory()
     url = reverse('member:client_notes_add', kwargs={'pk': client.pk})
     # Run
     response = self.client.get(url)
     # Check
     self.assertEqual(response.status_code, 200)
Пример #7
0
 def test_redirects_users_who_do_not_have_edit_permission(self):
     # Setup
     user = User.objects.create_user(username='******',
                                     email='*****@*****.**',
                                     password='******')
     user.is_staff = True
     user.save()
     self.client.login(username='******', password='******')
     client = ClientFactory()
     url = reverse('member:client_notes_add', kwargs={'pk': client.pk})
     # Run
     response = self.client.get(url)
     # Check
     self.assertEqual(response.status_code, 302)
Пример #8
0
    def test_refresh_create_only_if_scheduled_today(self):
        """
        Refs bug #734.
        If a client is ongoing but don't have scheduled delivery,
        then don't create his order.
        """
        meals_default = {}
        data = {
            'main_dish_{}_quantity': 2,
            'size_{}': 'R',
            'dessert_{}_quantity': 0,
            'diabetic_dessert_{}_quantity': 0,
            'fruit_salad_{}_quantity': 1,
            'green_salad_{}_quantity': 1,
            'pudding_{}_quantity': 1,
            'compote_{}_quantity': 0,
        }
        for day, _ in DAYS_OF_WEEK:
            for key_tmpl, value in data.items():
                meals_default[key_tmpl.format(day)] = value

        ongoing_clients = ClientFactory.create_batch(
            10,
            status=Client.ACTIVE,
            delivery_type='O',
            meal_default_week=meals_default,
            route=RouteFactory())

        # The meal schedule should exclude today.
        schedule_delivery = []
        weekday = datetime.date.today().weekday()
        for i, t in enumerate(DAYS_OF_WEEK):
            if i != weekday:
                schedule_delivery.append(t[0])

        for c in ongoing_clients:
            c.set_simple_meals_schedule(schedule_delivery)

        self.force_login()
        url = reverse('delivery:refresh_orders')
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        self.assertEqual(
            Order.objects.all().count(),
            0  # No order should be created.
        )
Пример #9
0
 def test_allow_access_to_users_with_edit_permission(self):
     # Setup
     user = User.objects.create_superuser(username='******',
                                          email='*****@*****.**',
                                          password='******')
     user.save()
     self.client.login(username='******', password='******')
     url = reverse('note:note_add')
     # Run
     response = self.client.post(url, {
         'note': "test note TEST_PHRASE",
         "client": ClientFactory().pk,
         "priority": '1'
     },
                                 follow=True)
     # Check
     self.assertEqual(response.status_code, 200)
Пример #10
0
    def test_refresh_create_only_if_scheduled_today(self):
        """
        Refs bug #734.
        If a client is ongoing but don't have scheduled delivery,
        then don't create his order.
        """
        meals_default = {}
        data = {
            'main_dish_{}_quantity': 2,
            'size_{}': 'R',
            'dessert_{}_quantity': 0,
            'diabetic_dessert_{}_quantity': 0,
            'fruit_salad_{}_quantity': 1,
            'green_salad_{}_quantity': 1,
            'pudding_{}_quantity': 1,
            'compote_{}_quantity': 0,
        }
        for day, _ in DAYS_OF_WEEK:
            for key_tmpl, value in data.items():
                meals_default[key_tmpl.format(day)] = value

        ongoing_clients = ClientFactory.create_batch(
            10, status=Client.ACTIVE, delivery_type='O',
            meal_default_week=meals_default,
            route=RouteFactory()
        )

        # The meal schedule should exclude today.
        schedule_delivery = []
        weekday = datetime.date.today().weekday()
        for i, t in enumerate(DAYS_OF_WEEK):
            if i != weekday:
                schedule_delivery.append(t[0])

        for c in ongoing_clients:
            c.set_simple_meals_schedule(schedule_delivery)

        self.force_login()
        url = reverse('delivery:refresh_orders')
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

        self.assertEqual(
            Order.objects.all().count(),
            0  # No order should be created.
        )
Пример #11
0
 def test_create_set_fields(self):
     """
     Test if author, date, is_read are correctly set.
     """
     time_1 = timezone.now()
     response = self.client.post(reverse('note:note_add'), {
         'note': "test note TEST_PHRASE",
         "client": ClientFactory().pk,
         "priority": '1',
         "category": '1'
     },
                                 follow=False)
     time_2 = timezone.now()
     self.assertEqual(response.status_code, 302)  # successful creation
     note = Note.objects.get(note__contains="TEST_PHRASE")
     self.assertEqual(note.author, self.admin)
     self.assertEqual(note.is_read, False)
     self.assertTrue(time_1 <= note.date <= time_2)
Пример #12
0
    def setUpTestData(cls):
        meal_default_week = {
            "main_dish_friday_quantity": 1,
            "main_dish_monday_quantity": 1,
            "main_dish_saturday_quantity": 1,
            "main_dish_sunday_quantity": 1,
            "main_dish_thursday_quantity": 1,
            "main_dish_tuesday_quantity": 1,
            "main_dish_wednesday_quantity": 1,
            "size_friday": "L",
            "size_monday": "L",
            "size_saturday": "L",
            "size_sunday": "L",
            "size_thursday": "L",
            "size_tuesday": "L",
            "size_wednesday": "L",
            "dessert_friday_quantity": 1,
            "dessert_monday_quantity": 1,
            "dessert_saturday_quantity": 1,
            "dessert_sunday_quantity": 1,
            "dessert_thursday_quantity": 1,
            "dessert_tuesday_quantity": 1,
            "dessert_wednesday_quantity": 1,
        }
        cls.route1 = RouteFactory()
        cls.route2 = RouteFactory()
        cls.c_valid = ClientFactory(
            pk=10,
            status=Client.ACTIVE,
            delivery_type="O",  # ongoing
            route=cls.route1,
            meal_default_week=meal_default_week,
            member=MemberFactory(firstname="Valid",
                                 lastname="Valid",
                                 address=AddressFactory()))
        cls.c_nr = ClientFactory(
            pk=20,
            status=Client.ACTIVE,
            delivery_type="O",  # ongoing
            route=None,
            meal_default_week=meal_default_week,
            member=MemberFactory(firstname="Nronly",
                                 lastname="Nronly",
                                 address=AddressFactory()))
        cls.c_ng = ClientFactory(
            pk=30,
            status=Client.ACTIVE,
            delivery_type="O",  # ongoing
            route=cls.route2,
            meal_default_week=meal_default_week,
            member=MemberFactory(firstname="Ngonly",
                                 lastname="Ngonly",
                                 address=AddressFactory(latitude=None)))
        cls.c_nrng = ClientFactory(
            pk=40,
            status=Client.ACTIVE,
            delivery_type="O",  # ongoing
            route=None,
            meal_default_week=meal_default_week,
            member=MemberFactory(firstname="Nrng",
                                 lastname="Nrng",
                                 address=AddressFactory(longitude=None)))

        cls.main_dish = ComponentFactory(name="coq au vin",
                                         component_group="main_dish")
        cls.sides = ComponentFactory(name="sides", component_group="sides")

        cls.ingred_chickens = []
        cls.ingred_wines = []
        for client in (cls.c_valid, cls.c_nr, cls.c_ng, cls.c_nrng):
            # Ensure that orders are created when refrshing orders.
            client.set_simple_meals_schedule([
                'monday', 'tuesday', 'wednesday', 'thursday', 'friday',
                'saturday', 'sunday'
            ])

            # client-specific ingredient (for testing clashes)
            this_chicken = IngredientFactory(name="chicken_{0}".format(
                client.id),
                                             ingredient_group="meat")
            this_wine = IngredientFactory(name="wine_{0}".format(client.id),
                                          ingredient_group="oils_and_sauces")

            # add them to main_dish
            ComponentIngredientFactory(component=cls.main_dish,
                                       ingredient=this_chicken)
            ComponentIngredientFactory(component=cls.main_dish,
                                       ingredient=this_wine)

            # all special veggies, special winehaters
            this_incompatib = IncompatibilityFactory(
                restricted_item=RestrictedItemFactory(
                    name="veggie_{0}".format(client.id),
                    restricted_item_group="meat"),
                ingredient=this_chicken)
            Restriction.objects.create(
                client=client, restricted_item=this_incompatib.restricted_item)
            Client_avoid_ingredient.objects.create(client=client,
                                                   ingredient=this_wine)

            # keep track of these chickens and wines
            cls.ingred_chickens.append(this_chicken)
            cls.ingred_wines.append(this_wine)