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)
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", )
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)
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, )
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))
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)
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)
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. )
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)
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. )
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)
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)