def test_create_batch(self): """Test, that create_batch action makes DeliveryBatch with it's boxes""" UserAttendanceRecipe.make(_quantity=2, ) queryset = UserAttendance.objects.all() actions.create_batch(self.modeladmin, self.request, queryset) message = get_messages(self.request)._queued_messages[0].message self.assertEquals(message, "Vytvořena nová dávka obsahující 2 položek") self.assertEqual( models.DeliveryBatch.objects.count(), 1, )
def test_create_packages_max_packages(self): """ Test that packages are created on save. If package_max_count is reached, the box must be split into two. """ city = mommy.make("City", name="Foo city") subsidiary = mommy.make( "Subsidiary", address_street="Foo street", address_psc=12234, address_street_number="123", address_city="Foo city", city=city, address_recipient="Foo recipient", ) user_attendance = UserAttendanceRecipe.make( userprofile__user__first_name="Foo", userprofile__user__last_name=seq("Name "), approved_for_team="approved", team__subsidiary=subsidiary, team__name=seq("Team "), discount_coupon__discount=100, discount_coupon__coupon_type__name="Discount", _quantity=2, ) user_attendance[0].campaign.package_max_count = 1 user_attendance[0].campaign.save() delivery_batch = mommy.make( "DeliveryBatch", campaign=user_attendance[0].campaign, ) subsidiary_boxes = delivery_batch.subsidiarybox_set self.assertQuerysetEqual( subsidiary_boxes.all().order_by("pk"), ( "<SubsidiaryBox: Krabice pro pobočku Foo recipient, Foo street 123, 122 34 Foo city - Foo city>", "<SubsidiaryBox: Krabice pro pobočku Foo recipient, Foo street 123, 122 34 Foo city - Foo city>", ), ) pdf = PdfFileReader(subsidiary_boxes.all()[0].customer_sheets) pdf_string = pdf.pages[0].extractText() self.assertTrue("Foo Name 1" in pdf_string) pdf = PdfFileReader(subsidiary_boxes.all()[1].customer_sheets) pdf_string = pdf.pages[0].extractText() self.assertTrue("Foo Name 2" in pdf_string) self.assertQuerysetEqual( subsidiary_boxes.first().teampackage_set.all().order_by("pk"), [ "<TeamPackage: Balíček pro tým Team 1>", ], ) self.assertQuerysetEqual( PackageTransaction.objects.all().order_by("pk"), [ "<PackageTransaction: Package transaction for user Foo Name 1>", "<PackageTransaction: Package transaction for user Foo Name 2>", ], )
def setUp(self): super().setUp() self.client = Client(HTTP_HOST="testing-campaign.example.com", HTTP_REFERER="test-referer") self.t_shirt_size = mommy.make( "TShirtSize", campaign=testing_campaign, name="Foo t-shirt size", ) mommy.make( "price_level.PriceLevel", takes_effect_on=datetime.date(year=2010, month=2, day=1), pricable=testing_campaign, ) mommy.make( "Phase", phase_type="payment", campaign=testing_campaign, ) self.user_attendance = UserAttendanceRecipe.make( approved_for_team="approved", team__subsidiary__city__cityincampaign__campaign=testing_campaign, userprofile__user__first_name="Testing", userprofile__user__last_name="User", userprofile__user__email="*****@*****.**", userprofile__sex='male', personal_data_opt_in=True, distance=5, ) self.user_attendance.campaign.save() self.user_attendance.save() self.client.force_login(self.user_attendance.userprofile.user, settings.AUTHENTICATION_BACKENDS[0])
def test_deliverybatch_admin_add_t_shirt(self): """ Test with t_shirts to add """ self.user_attendance = UserAttendanceRecipe.make( t_shirt_size=self.t_shirt_size, transactions=[mommy.make("Payment", status=99)], team__name="Foo team", campaign=self.campaign, ) address = reverse('admin:t_shirt_delivery_deliverybatch_add') response = self.client.get(address, follow=True) self.assertContains( response, "<div>" "<label>Trik k odeslání:</label>" "<div class='readonly'>1</div>" "</div>", html=True, ) self.assertContains( response, "<div>" "<label>Velikosti trik:</label>" "<div class='readonly'>Testing t-shirt size: 1</div>" "</div>", html=True, )
def test_get_representative_user_attendance(self): campaign = CampaignRecipe.make() user_attendance = UserAttendanceRecipe.make( campaign=campaign, userprofile__user__first_name="Foo", userprofile__user__last_name="name", userprofile__telephone="123456789", userprofile__user__email="*****@*****.**", ) subsidiary_box = mommy.make( 'SubsidiaryBox', teampackage_set=[ mommy.make( 'TeamPackage', packagetransaction_set=mommy.make( 'PackageTransaction', user_attendance=user_attendance, _quantity=1, ), ), ], delivery_batch__campaign=campaign, ) self.assertEqual( subsidiary_box.get_representative_addressee(), { 'name': "Foo name", 'telephone': "123456789", 'email': "*****@*****.**", }, )
def test_box_parameters_non_zero(self): campaign = CampaignRecipe.make( package_weight=0.5, package_width=0.5, package_height=0.5, package_depth=0.5, year=2018, ) subsidiary_box = mommy.make( "SubsidiaryBox", teampackage_set=mommy.make( "TeamPackage", packagetransaction_set=mommy.make( "PackageTransaction", user_attendance=UserAttendanceRecipe.make( campaign=campaign, ), _quantity=2, ), _quantity=1, ), delivery_batch__campaign=campaign, ) self.assertEqual(subsidiary_box.get_t_shirt_count(), 2) self.assertEqual(subsidiary_box.get_weight(), 1) self.assertEqual(subsidiary_box.get_volume(), 0.25)
def test_create_packages(self): """ Test that packages are created on save """ city = mommy.make("City", name="Foo city") subsidiary = mommy.make( "Subsidiary", address_street="Foo street", address_psc=12234, address_street_number="123", address_city="Foo city", city=city, address_recipient="Foo recipient", ) user_attendance = UserAttendanceRecipe.make( userprofile__user__first_name="Foo", userprofile__user__last_name=seq("Name "), approved_for_team="approved", team__subsidiary=subsidiary, team__name=seq("Team "), discount_coupon__discount=100, discount_coupon__coupon_type__name="Discount", _quantity=2, ) delivery_batch = mommy.make( "DeliveryBatch", campaign=user_attendance[0].campaign, ) self.assertQuerysetEqual( delivery_batch.subsidiarybox_set.all(), ("<SubsidiaryBox: Krabice pro pobočku Foo recipient, Foo street 123, 122 34 Foo city - Foo city>", ), ) self.assertQuerysetEqual( delivery_batch.subsidiarybox_set.first().teampackage_set.all(). order_by("pk"), [ "<TeamPackage: Balíček pro tým Team 1>", "<TeamPackage: Balíček pro tým Team 2>", ], ) self.assertQuerysetEqual( PackageTransaction.objects.all().order_by("pk"), [ "<PackageTransaction: Package transaction for user Foo Name 1>", "<PackageTransaction: Package transaction for user Foo Name 2>", ], ) # Test that PackageTransaction object is created self.assertEqual( PackageTransaction.objects.first().team_package.box.delivery_batch, delivery_batch, ) # Test that PDF is created correctly - with the t-shirt sizes for all UserAttendance objects pdf = PdfFileReader( delivery_batch.subsidiarybox_set.first().customer_sheets) pdf_string = pdf.pages[0].extractText() self.assertTrue("Foo Name" in pdf_string)
def test_save(self): t_shirt_size = mommy.make("TShirtSize") user_attendance = UserAttendanceRecipe.make(t_shirt_size=t_shirt_size) package_transaction = mommy.make( "PackageTransaction", user_attendance=user_attendance, ) self.assertEqual(package_transaction.t_shirt_size, t_shirt_size)
def test_create_packages_not_member(self): """ Test that packages are created on save PackageTransaction should be added only if UserAttendance has paid and the t_shirt is shipped the approval for tema should not matter """ mommy.make( "PriceLevel", pricable=testing_campaign, price=100, takes_effect_on=datetime.date(year=2010, month=2, day=1), ) user_attendance = UserAttendanceRecipe.make( transactions=[mommy.make("Payment", status=1)], userprofile__user__first_name="Foo", campaign=testing_campaign, ) user_attendance.save() self.assertTrue(user_attendance.payment_status, "none") added_user_attendance = UserAttendanceRecipe.make( approved_for_team="undecided", transactions=[mommy.make("Payment", status=99)], userprofile__user__first_name="Bar", campaign=testing_campaign, ) added_user_attendance.save() self.assertTrue(added_user_attendance.payment_status, "done") UserAttendanceRecipe.make( t_shirt_size__ship=False, approved_for_team="approved", transactions=[mommy.make("Payment", status=99)], userprofile__user__first_name="Baz", campaign=testing_campaign, ) mommy.make( "DeliveryBatch", campaign=user_attendance.campaign, ) self.assertEqual( PackageTransaction.objects.get(). user_attendance, # Only one package transaction is created added_user_attendance, )
def setUp(self): campaign = CampaignRecipe.make( package_weight=0.5, package_width=0.5, package_height=0.5, package_depth=0.5, year=2018, ) user_attendance = UserAttendanceRecipe.make( campaign=campaign, userprofile__user__username="******", userprofile__user__first_name="Testing", userprofile__user__email="*****@*****.**", userprofile__user__last_name="User ", userprofile__nickname="Nick", userprofile__telephone=123456789, ) team = mommy.make( "dpnk.Team", campaign=campaign, name="Testin team", ) self.delivery_batch = mommy.prepare( "DeliveryBatch", campaign=campaign, ) self.delivery_batch.add_packages_on_save = False self.delivery_batch.save() self.subsidiary_box = mommy.make( "SubsidiaryBox", subsidiary__address_street="Foo street", subsidiary__address_psc=12234, subsidiary__address_street_number="123", subsidiary__address_city="Foo city", subsidiary__address_recipient="Foo recipient", subsidiary__id=123, subsidiary__company__name="Foo company", subsidiary__company__ico=1231321313, delivery_batch=self.delivery_batch, id=1603824, ) mommy.make( "TeamPackage", box=self.subsidiary_box, team=team, packagetransaction_set=mommy.make( 'PackageTransaction', user_attendance=user_attendance, _quantity=1, ), )
def setUp(self): super().setUp() self.user_attendance = UserAttendanceRecipe.make( t_shirt_size__ship=True, t_shirt_size__name="Foo T-Shirt size", transactions=[mommy.make("Payment", status=99)], userprofile__user__first_name="Foo", userprofile__user__last_name="name", team__name="Testing team", team__campaign=testing_campaign, campaign=testing_campaign, id=1, )
def setUp(self): super().setUp() self.user_attendance = UserAttendanceRecipe.make( userprofile__user__email="*****@*****.**", userprofile__user__first_name="Null", userprofile__user__last_name="User", team__subsidiary__address_street="Foo street", team__subsidiary__address_psc=11111, team__subsidiary__address_city="Foo city", team__subsidiary__company__name="Foo company", userprofile__telephone="123321123", id=3, ) mommy.make( "dpnk.Payment", user_attendance=self.user_attendance, realized="2015-11-12 18:18:40", pay_type="c", status=99, ) mommy.make( "price_level.PriceLevel", takes_effect_on=datetime.date(year=2010, month=2, day=1), pricable=self.user_attendance.campaign, ) self.user_attendance.save() mommy.make( "PackageTransaction", delivery_batch__campaign=self.user_attendance.campaign, delivery_batch__created=datetime.date(year=2015, month=11, day=12), delivery_batch__id=1, t_shirt_size__campaign=self.user_attendance.campaign, t_shirt_size__name="Foo size", created="2015-11-12 18:18:40", realized="2015-11-12 18:18:40", tracking_number=11112117, status=99, user_attendance=self.user_attendance, author=self.user, id=7, )
def test_create_packages_large_team(self): """ Test that packages are created on save. Also unapproved team members will get package. If there is more than 5 members of the team, the package should be divided. """ city = mommy.make("City", name="Foo city") subsidiary = mommy.make( "Subsidiary", address_street="Foo street", address_psc=12234, address_street_number="123", address_city="Foo city", city=city, address_recipient="Foo recipient", ) team = mommy.make( "Team", subsidiary=subsidiary, name="Foo Team", campaign=testing_campaign, ) user_attendance = UserAttendanceRecipe.make( userprofile__user__first_name="Foo", userprofile__user__last_name=seq("Name "), approved_for_team="undecided", team=team, discount_coupon__discount=100, discount_coupon__coupon_type__name="Discount", _quantity=6, ) user_attendance[0].campaign.package_max_count = 1 user_attendance[0].campaign.save() delivery_batch = mommy.make( "DeliveryBatch", campaign=user_attendance[0].campaign, ) self.assertQuerysetEqual( delivery_batch.subsidiarybox_set.all().order_by("pk"), ("<SubsidiaryBox: Krabice pro pobočku Foo recipient, Foo street 123, 122 34 Foo city - Foo city>", ), ) team_packages = delivery_batch.subsidiarybox_set.first( ).teampackage_set.all() self.assertQuerysetEqual( team_packages.order_by("pk"), [ "<TeamPackage: Balíček pro tým Foo Team>", "<TeamPackage: Balíček pro tým Foo Team>", ], ) self.assertQuerysetEqual( team_packages[0].packagetransaction_set.all().order_by("pk"), [ "<PackageTransaction: Package transaction for user Foo Name 1>", "<PackageTransaction: Package transaction for user Foo Name 2>", "<PackageTransaction: Package transaction for user Foo Name 3>", "<PackageTransaction: Package transaction for user Foo Name 4>", "<PackageTransaction: Package transaction for user Foo Name 5>", ], ) self.assertQuerysetEqual( team_packages[1].packagetransaction_set.all().order_by("pk"), [ "<PackageTransaction: Package transaction for user Foo Name 6>", ], )
def setUp(self): t_shirt_size = mommy.make( "TShirtSize", name="Testing t-shirt size", campaign=testing_campaign, t_shirt_preview=SimpleUploadedFile( "t_shirt_preview.svg", b'<svg xmlns="http://www.w3.org/2000/svg" width="600" height="600">' b'<text>Example SVG text 1</text>' b'<rect x="0" y="0" width="600" height="600"/>' b'</svg>', ), ship=True, ) mommy.make( 'price_level.PriceLevel', takes_effect_on=datetime.date(year=2017, month=1, day=1), pricable=testing_campaign, ) user_attendances = UserAttendanceRecipe.make( campaign=testing_campaign, userprofile__user__username=seq("test_username "), userprofile__user__first_name="Testing", userprofile__user__email="*****@*****.**", userprofile__user__last_name=seq("User "), userprofile__nickname=cycle(["Nick", None]), userprofile__telephone=seq(123456789), t_shirt_size=t_shirt_size, transactions=[ mommy.make( "Payment", status=99, realized=datetime.date(year=2017, month=2, day=1), ), ], _quantity=5, ) self.subsidiary_box = mommy.make( "SubsidiaryBox", subsidiary__address_street="Foo street", subsidiary__address_psc=12234, subsidiary__address_street_number="123", subsidiary__address_city="Foo city", subsidiary__address_recipient="Foo recipient", subsidiary__id=123, delivery_batch__campaign=testing_campaign, id=1603824, ) mommy.make( "TeamPackage", box=self.subsidiary_box, team__users=user_attendances, team__name="Foo team with max name lenth fooo foo foo foo fooo", team__campaign=testing_campaign, team__subsidiary__company__name="Foo company", team__subsidiary__company__ico=1231321313, id=34567812, packagetransaction_set=mommy.make( "PackageTransaction", t_shirt_size=t_shirt_size, user_attendance=cycle(user_attendances), _quantity=5, ), )
def setUp(self): self.subsidiary_box_id = 55 self.delivery_batch_id = 1 t_shirt_size = mommy.make( "TShirtSize", name="Testing t-shirt size", campaign=testing_campaign, code="Testing t-shirt code", ship=True, ) mommy.make( "price_level.PriceLevel", takes_effect_on=datetime.date(year=2017, month=1, day=1), pricable=testing_campaign, ) user_attendances = UserAttendanceRecipe.make( campaign=testing_campaign, userprofile__user__username=seq("test_username "), userprofile__user__first_name="Testing", userprofile__user__email="*****@*****.**", userprofile__user__last_name=seq("User "), userprofile__nickname=cycle(["Nick", None]), userprofile__telephone=seq(123456789), t_shirt_size=t_shirt_size, transactions=[ mommy.make( "Payment", status=99, realized=datetime.date(year=2017, month=2, day=1), ), ], _quantity=5, ) subsidiary_box = mommy.make( "SubsidiaryBox", id=self.subsidiary_box_id, subsidiary__address_street="Foo street", subsidiary__address_psc=12234, subsidiary__address_street_number="123", subsidiary__address_city="Foo city", subsidiary__address_recipient="Foo recipient", subsidiary__id=123, delivery_batch__campaign=testing_campaign, ) mommy.make( "TeamPackage", box=subsidiary_box, team__users=user_attendances, team__name="Foo team with max name lenth fooo foo foo foo fooo", team__campaign=testing_campaign, team__subsidiary__company__name="Foo company", team__subsidiary__company__ico=1231321313, id=34567812, packagetransaction_set=mommy.make( "PackageTransaction", t_shirt_size=t_shirt_size, user_attendance=cycle(user_attendances), _quantity=1, ), ) self.delivery_batch = mommy.make( "DeliveryBatch", id=self.delivery_batch_id, campaign=testing_campaign, )