예제 #1
0
 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>",
            ],
        )
예제 #3
0
 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])
예제 #4
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': "*****@*****.**",
         },
     )
예제 #6
0
 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)
예제 #8
0
 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,
     )
예제 #10
0
    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,
            ),
        )
예제 #11
0
 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,
     )
예제 #12
0
 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>",
         ],
     )
예제 #14
0
 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,
         ),
     )
예제 #15
0
 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,
     )