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)
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)
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)
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"))
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")
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"))
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")
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"))
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, }, )
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"))
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"))
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"))
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)
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"))
def test_GBP(self): currency = GBPCurrencyFactory() order = TestOrderFactory(currency=currency) self.assertEqual(order.display_total, "£35.00 (GBP)")
def test_unicode(self): currency = GBPCurrencyFactory.build() self.assertEqual("{currency}".format(currency=currency), "GBP")
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")