Beispiel #1
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)
 def setUp(self):
     # Set primary currency + accepted currencies
     EURCurrencyFactory()
     USDCurrencyFactory()
     currency = GBPCurrencyFactory()
     currency.primary = True
     currency.save()
     Currency.objects.update(accepted=True)
Beispiel #3
0
    def test_save__set_primary__sets_accepted(self):
        currency = GBPCurrencyFactory(primary=False, accepted=False)
        currency.primary = True
        currency.save()

        currency = Currency.objects.get(iso_4217_code="GBP")
        self.assertTrue(currency.primary)
        self.assertTrue(currency.accepted)
 def setUp(self):
     # Set primary currency + accepted currencies
     EURCurrencyFactory()
     USDCurrencyFactory()
     currency = GBPCurrencyFactory()
     currency.primary = True
     currency.save()
     Currency.objects.update(accepted=True)
    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)
    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)
Beispiel #7
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)
Beispiel #8
0
 def test_round_up_is_off(self):
     value = Decimal("0.33")
     currency_code = "GBP"
     currency = GBPCurrencyFactory()
     ExchangeRateFactory(rate=Decimal("1.11"), currency=currency)
     Setting.objects.create(group="CURRENCY", key="ROUND_UP", value=False)
     test_value = convert_to_currency(value, currency_code)
     self.assertEqual(test_value, Decimal("0.37"))
Beispiel #9
0
    def test_geoip__country_matches_accepted_country(self, mock_get_real_ip,
                                                     mock_geoip):
        mock_get_real_ip.return_value = "88.97.34.8"
        gbp = GBPCurrencyFactory()
        gbp.accepted = True
        gbp.save()

        class MockGeoIP(object):
            def country(self, ip):
                return {"country_name": "United Kingdom", "country_code": "GB"}

        mock_geoip.return_value = MockGeoIP()

        request = self.request_factory.get("/")
        request.session = {}

        self.assertEqual(currency_for_request(request), "GBP")
Beispiel #10
0
    def test_round_up_is_honoured__whole_number(self):
        value = Decimal("0.50")
        currency_code = "GBP"
        currency = GBPCurrencyFactory()
        ExchangeRateFactory(rate=Decimal("1.11"), currency=currency)
        Setting.objects.create(group="CURRENCY", key="ROUND_UP", value=True)

        test_value = convert_to_currency(value, currency_code)
        self.assertEqual(test_value, Decimal("1.00"))
Beispiel #11
0
    def test_geoip__country_matches_accepted_country(
        self, mock_get_real_ip, mock_geoip
    ):
        mock_get_real_ip.return_value = "88.97.34.8"
        gbp = GBPCurrencyFactory()
        gbp.accepted = True
        gbp.save()

        class MockGeoIP(object):
            def country(self, ip):
                return {"country_name": "United Kingdom", "country_code": "GB"}

        mock_geoip.return_value = MockGeoIP()

        request = self.request_factory.get("/")
        request.session = {}

        self.assertEqual(currency_for_request(request), "GBP")
Beispiel #12
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"))
Beispiel #13
0
 def test_get_accepted_from_session(self):
     EURCurrencyFactory(primary=True)
     currency = GBPCurrencyFactory()
     currency.accepted = True
     currency.save()
     request = self.factory.get("/api/currency/session/")
     request.session = {"currency_code": currency.iso_4217_code}
     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,
         },
     )
Beispiel #14
0
    def test_values_are_quantized(self):
        value = Decimal("1.00")
        currency_code = "GBP"
        currency = GBPCurrencyFactory()
        ExchangeRateFactory(rate=Decimal("0.750123"), currency=currency)
        Setting.objects.create(group="CURRENCY",
                               key="BUFFER",
                               value=Decimal("0.00"))

        test_value = convert_to_currency(value, currency_code)
        self.assertEqual(test_value, Decimal("0.75"))
Beispiel #15
0
    def test_psychological_pricing__not_whole_currency(self):
        value = Decimal("0.75")
        currency_code = "GBP"
        currency = GBPCurrencyFactory()
        ExchangeRateFactory(rate=Decimal("2.00"), currency=currency)
        Setting.objects.create(group="CURRENCY",
                               key="PSYCHOLOGICAL_PRICING",
                               value=True)

        test_value = convert_to_currency(value, currency_code)
        self.assertEqual(test_value, Decimal("1.50"))
Beispiel #16
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"))
Beispiel #17
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)
Beispiel #18
0
    def test_exchange_rate_exists(self):
        """If the exchange rate doesn't exist, the value shouldn't change
        """
        value = Decimal("1.00")
        currency_code = "GBP"
        currency = GBPCurrencyFactory()
        ExchangeRateFactory(rate=Decimal("0.75"), currency=currency)
        Setting.objects.create(group="CURRENCY",
                               key="BUFFER",
                               value=Decimal("0.00"))

        test_value = convert_to_currency(value, currency_code)
        self.assertEqual(test_value, Decimal("0.75"))
Beispiel #19
0
    def test_GBP(self):
        currency = GBPCurrencyFactory()

        order = TestOrderFactory(currency=currency)
        self.assertEqual(order.display_total, "£35.00 (GBP)")
Beispiel #20
0
    def test_unicode(self):
        currency = GBPCurrencyFactory.build()

        self.assertEqual("{currency}".format(currency=currency), "GBP")
Beispiel #21
0
    def test_currency_code_in_session(self):
        GBPCurrencyFactory()
        request = self.request_factory.get("/")
        request.session = {"currency_code": "GBP"}

        self.assertEqual(currency_for_request(request), "GBP")