Пример #1
0
    def test_in_alternative_currency__more(self):
        primary_currency = EURCurrencyFactory()
        primary_currency.primary = True
        primary_currency.save()
        alternative_currency = USDCurrencyFactory()

        order = TestOrderFactory(currency=alternative_currency,
                                 exchange_rate=Decimal("1.06649"))
        self.assertEqual(
            order.total_in_primary_currency().quantize(Decimal(".01")),
            Decimal("32.82"))
Пример #2
0
    def test_in_alternative_currency__more(self):
        primary_currency = EURCurrencyFactory()
        primary_currency.primary = True
        primary_currency.save()
        alternative_currency = USDCurrencyFactory()

        order = TestOrderFactory(
            currency=alternative_currency, exchange_rate=Decimal("1.06649")
        )
        self.assertEqual(
            order.total_in_primary_currency().quantize(Decimal(".01")), Decimal("32.82")
        )
Пример #3
0
    def test_in_alternative_currency__more(self):
        primary_currency = EURCurrencyFactory()
        primary_currency.primary = True
        primary_currency.save()
        alternative_currency = USDCurrencyFactory()

        order = TestOrderFactory(currency=alternative_currency)
        OrderRefund.objects.create(order=order,
                                   amount=Decimal("5.00"),
                                   exchange_rate=Decimal("1.06649"))
        self.assertEqual(
            order.refund_in_primary_currency().quantize(Decimal(".01")),
            Decimal("4.69"))
Пример #4
0
    def test_in_alternative_currency__more(self):
        primary_currency = EURCurrencyFactory()
        primary_currency.primary = True
        primary_currency.save()
        alternative_currency = USDCurrencyFactory()

        order = TestOrderFactory(currency=alternative_currency)
        OrderRefund.objects.create(
            order=order, amount=Decimal("5.00"), exchange_rate=Decimal("1.06649")
        )
        self.assertEqual(
            order.refund_in_primary_currency().quantize(Decimal(".01")), Decimal("4.69")
        )
Пример #5
0
    def test_in_alternative_currency__less(self):
        primary_currency = USDCurrencyFactory()
        primary_currency.primary = True
        primary_currency.save()
        alternative_currency = EURCurrencyFactory(primary=False)
        alternative_currency.accepted = True
        alternative_currency.save()

        order = TestOrderFactory(currency=alternative_currency)
        OrderRefund.objects.create(order=order,
                                   amount=Decimal("5.00"),
                                   exchange_rate=Decimal("0.937658"))
        self.assertEqual(
            order.refund_in_primary_currency().quantize(Decimal(".01")),
            Decimal("5.33"))
Пример #6
0
    def test_in_alternative_currency__less(self):
        primary_currency = USDCurrencyFactory()
        primary_currency.primary = True
        primary_currency.save()
        alternative_currency = EURCurrencyFactory(primary=False)
        alternative_currency.accepted = True
        alternative_currency.save()

        order = TestOrderFactory(currency=alternative_currency)
        OrderRefund.objects.create(
            order=order, amount=Decimal("5.00"), exchange_rate=Decimal("0.937658")
        )
        self.assertEqual(
            order.refund_in_primary_currency().quantize(Decimal(".01")), Decimal("5.33")
        )
Пример #7
0
    def test_validate__correct(self):
        EURCurrencyFactory()

        data = {"iso_4217_code": "EUR"}
        serializer = CurrencySessionSerializer(data=data)

        self.assertTrue(serializer.is_valid())
Пример #8
0
    def test_multiple_refunds(self):
        primary_currency = EURCurrencyFactory(primary=True)
        order = TestOrderFactory(currency=primary_currency)
        OrderRefund.objects.create(order=order, amount=Decimal("1.00"))
        OrderRefund.objects.create(order=order, amount=Decimal("1.00"))

        self.assertEqual(order.refund_in_primary_currency(), Decimal("2.00"))
Пример #9
0
    def test_accepted_currencies(self):
        currency = EURCurrencyFactory(primary=True)
        accepted_currency = GBPCurrencyFactory()
        accepted_currency.accepted = True
        accepted_currency.save()
        request = self.factory.get("/api/currency/")

        response = CurrencyListAPIView.as_view()(request)
        self.assertEqual(response.status_code, 200)

        test_data = [
            {
                "iso_4217_code": currency.iso_4217_code,
                "name": currency.name,
                "symbol": currency.symbol,
                "primary": currency.primary,
                "accepted": currency.accepted,
                "latest_exchange_rate": None,
            },
            {
                "iso_4217_code": accepted_currency.iso_4217_code,
                "name": accepted_currency.name,
                "symbol": accepted_currency.symbol,
                "primary": accepted_currency.primary,
                "accepted": accepted_currency.accepted,
                "latest_exchange_rate": None,
            },
        ]
        self.assertEqual(response.data, test_data)
Пример #10
0
    def test_get_latest_exchange_rate(self):
        currency = EURCurrencyFactory()
        exchange_rate = ExchangeRateFactory(currency=currency)
        serializer = CurrencySerializer(currency)

        self.assertEqual(serializer.get_latest_exchange_rate(currency),
                         exchange_rate.rate)
Пример #11
0
    def test_read_fields(self):
        currency = EURCurrencyFactory()
        serializer = CurrencySessionSerializer(currency)

        self.assertEqual(serializer.data["iso_4217_code"],
                         currency.iso_4217_code)
        self.assertEqual(len(list(serializer.data.keys())), 1)
 def setUp(self):
     # Set primary currency + accepted currencies
     EURCurrencyFactory()
     USDCurrencyFactory()
     currency = GBPCurrencyFactory()
     currency.primary = True
     currency.save()
     Currency.objects.update(accepted=True)
Пример #13
0
    def test_in_alternative_currency(self):
        primary_currency = USDCurrencyFactory()
        primary_currency.primary = True
        primary_currency.save()
        alternative_currency = EURCurrencyFactory()
        order = TestOrderFactory(currency=alternative_currency)
        refund = OrderRefundFactory(order=order,
                                    exchange_rate=Decimal("1.5555"))

        self.assertEqual(refund.amount_in_primary_currency(), Decimal("11.25"))
    def setUp(self):
        self.client = FixerExchangeRateClient()

        # Set primary currency + accepted currencies
        EURCurrencyFactory()
        USDCurrencyFactory()
        currency = GBPCurrencyFactory()
        currency.primary = True
        currency.save()
        Currency.objects.update(accepted=True)
Пример #15
0
    def test_set_exchange_rate__alternative_currency(self):
        primary_currency = USDCurrencyFactory()
        primary_currency.primary = True
        primary_currency.save()
        alternative_currency = EURCurrencyFactory()
        ExchangeRate.objects.create(currency=alternative_currency,
                                    rate="0.1234")

        order = TestOrderFactory(currency=alternative_currency)
        refund = OrderRefundFactory(order=order)
        self.assertEqual(refund.exchange_rate, Decimal("0.1234"))
Пример #16
0
    def test_save__set_primary__turns_off_other_primary(self):
        currency = GBPCurrencyFactory(primary=False, accepted=False)
        currency.primary = True
        currency.save()

        # Make Euro primary currency
        currency = EURCurrencyFactory(primary=False, accepted=False)
        currency.primary = True
        currency.save()

        currency = Currency.objects.get(iso_4217_code="GBP")
        self.assertFalse(currency.primary)
Пример #17
0
    def test_in_alternative_currency__less(self):
        primary_currency = USDCurrencyFactory()
        primary_currency.primary = True
        primary_currency.save()
        alternative_currency = EURCurrencyFactory()

        order = TestOrderFactory(currency=alternative_currency,
                                 exchange_rate=Decimal("0.937658"))
        self.assertEqual(
            order.shipping_cost_in_primary_currency().quantize(Decimal(".01")),
            Decimal("10.66"),
        )
Пример #18
0
 def test_read_fields(self):
     currency = EURCurrencyFactory(primary=True)
     serializer = CurrencySerializer(currency)
     self.assertEqual(
         serializer.data["iso_4217_code"].encode("utf-8"),
         currency.iso_4217_code.encode("utf-8"),
     )
     self.assertEqual(serializer.data["name"], currency.name)
     self.assertEqual(serializer.data["symbol"], currency.symbol)
     self.assertTrue(serializer.data["primary"])
     self.assertTrue(serializer.data["accepted"])
     self.assertIsNone(serializer.data["latest_exchange_rate"])
Пример #19
0
    def test_multiple_refunds_different_exhange_rates(self):
        primary_currency = USDCurrencyFactory()
        primary_currency.primary = True
        primary_currency.save()
        alternative_currency = EURCurrencyFactory()
        order = TestOrderFactory(currency=alternative_currency)
        OrderRefund.objects.create(order=order,
                                   amount=Decimal("1.00"),
                                   exchange_rate=Decimal("1.5555"))
        OrderRefund.objects.create(order=order,
                                   amount=Decimal("1.00"),
                                   exchange_rate=Decimal("0.95"))

        self.assertEqual(order.refund_in_primary_currency(), Decimal("1.69"))
Пример #20
0
    def test_anonymous__cant_post_currency(self):
        currency = EURCurrencyFactory.build()  # Build, don't create
        data = {
            "iso_4217_code": currency.iso_4217_code,
            "name": currency.name,
            "symbol": currency.symbol,
            "primary": currency.primary,
            "accepted": currency.accepted,
            "latest_exchange_rate": None,
        }
        request = self.factory.post("/api/currency/", data)

        response = CurrencyListAPIView.as_view()(request, data)
        self.assertEqual(response.status_code, 405)
        self.assertEqual(response.data, {"detail": 'Method "POST" not allowed.'})
Пример #21
0
    def test_get_primary_from_session(self):
        currency = EURCurrencyFactory(primary=True)
        request = self.factory.get("/api/currency/session/")
        request.session = {}

        response = CurrencySessionAPIView.as_view()(request)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(
            response.data,
            {
                "iso_4217_code": currency.iso_4217_code,
                "name": currency.name,
                "symbol": currency.symbol,
                "primary": currency.primary,
                "accepted": currency.accepted,
                "latest_exchange_rate": None,
            },
        )
Пример #22
0
    def test_primary_currency_only(self):
        currency = EURCurrencyFactory(primary=True)
        request = self.factory.get("/api/currency/")

        response = CurrencyListAPIView.as_view()(request)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(
            response.data,
            [
                {
                    "iso_4217_code": currency.iso_4217_code,
                    "name": currency.name,
                    "symbol": currency.symbol,
                    "primary": currency.primary,
                    "accepted": currency.accepted,
                    "latest_exchange_rate": None,
                }
            ],
        )
Пример #23
0
    def test_converts_currency(self):
        Setting.objects.create(group="CURRENCY",
                               key="BUFFER",
                               value=Decimal("0.00"))
        EURCurrencyFactory(primary=True)
        currency = GBPCurrencyFactory()
        currency.accepted = True
        currency.save()

        order = TestOrderFactory(currency=currency)
        cart = Cart.objects.create(currency=currency)
        for item in order.orderitem_set.all():
            CartItem.objects.create(cart=cart,
                                    product=item.product,
                                    quantity=item.quantity)
        ExchangeRateFactory(rate=Decimal("0.5"), currency=currency)

        update_shipping(order, "per", order.contact, cart)

        self.assertEqual(order.shipping_cost, Decimal("10.00"))
Пример #24
0
    def test_set_currency_in_session__primary(self):
        currency = EURCurrencyFactory(primary=True)
        accepted_currency = GBPCurrencyFactory()
        accepted_currency.accepted = True
        accepted_currency.save()
        data = {"iso_4217_code": currency.iso_4217_code}
        request = self.factory.post("/api/currency/session/", data=data)
        request.session = {"currency_code": accepted_currency.iso_4217_code}

        response = CurrencySessionAPIView.as_view()(request)
        self.assertEqual(response.status_code, 200)

        test_data = {
            "iso_4217_code": currency.iso_4217_code,
            "name": currency.name,
            "symbol": currency.symbol,
            "primary": currency.primary,
            "accepted": currency.accepted,
            "latest_exchange_rate": None,
        }
        self.assertEqual(response.data, test_data)
Пример #25
0
    def test_updates_from_shipper(self, mock_shipping_method_by_key):
        currency = EURCurrencyFactory(primary=True)
        order = TestOrderFactory(currency=currency)
        cart = Cart.objects.create(currency=currency)
        for item in order.orderitem_set.all():
            CartItem.objects.create(cart=cart,
                                    product=item.product,
                                    quantity=item.quantity)
        tier = WeightTierFactory()

        mock_shipping_method_by_key.return_value = Shipper(tier.carrier)

        update_shipping(order, tier.carrier.key, order.contact, cart)

        self.assertEqual(order.shipping_cost, Decimal("1.00"))
        self.assertTrue(order.shipping_signed_for)
        self.assertTrue(order.shipping_tracked)
        self.assertEqual(order.shipping_postage_speed, ECONOMY)
        self.assertTrue(order.shipping_signed_for)
        self.assertEqual(order.estimated_delivery_min_days, 2)
        self.assertEqual(order.estimated_delivery_expected_days, 4)
        self.assertEqual(order.estimated_delivery_max_days, 15)
Пример #26
0
 def setUp(self):
     EURCurrencyFactory(primary=True)
     self.request_factory = RequestFactory()
Пример #27
0
    def test_get_latest_exchange_rate__no_exchange_rate(self):
        currency = EURCurrencyFactory()
        serializer = CurrencySerializer(currency)

        self.assertIsNone(serializer.get_latest_exchange_rate(currency))
Пример #28
0
 def test_in_primary_currency(self):
     primary_currency = EURCurrencyFactory(primary=True)
     order = TestOrderFactory(currency=primary_currency)
     self.assertEqual(order.total_in_primary_currency(), Decimal("35.00"))
Пример #29
0
 def test_in_primary_currency(self):
     primary_currency = EURCurrencyFactory(primary=True)
     order = TestOrderFactory(currency=primary_currency)
     self.assertEqual(order.shipping_cost_in_primary_currency(),
                      Decimal("10.00"))
Пример #30
0
 def setUp(self):
     EURCurrencyFactory(primary=True)
     Currency.objects.update(accepted=True)
Пример #31
0
    def test_currency(self):
        EURCurrencyFactory()
        value = Decimal("1.00")
        currency_code = "EUR"

        self.assertEqual(money_format(value, currency_code), "€1.00 (EUR)")
Пример #32
0
    def test_EUR(self):
        currency = EURCurrencyFactory()

        order = TestOrderFactory(currency=currency)
        self.assertEqual(order.display_total, "€35.00 (EUR)")
Пример #33
0
    def test_value_is_none(self):
        EURCurrencyFactory()
        value = None
        currency_code = "EUR"

        self.assertEqual(money_format(value, currency_code), "€0.00 (EUR)")