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"))
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") )
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"))
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") )
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"))
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") )
def test_validate__correct(self): EURCurrencyFactory() data = {"iso_4217_code": "EUR"} serializer = CurrencySessionSerializer(data=data) self.assertTrue(serializer.is_valid())
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"))
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 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)
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)
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)
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"))
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_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"), )
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"])
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"))
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.'})
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, }, )
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, } ], )
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_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)
def setUp(self): EURCurrencyFactory(primary=True) self.request_factory = RequestFactory()
def test_get_latest_exchange_rate__no_exchange_rate(self): currency = EURCurrencyFactory() serializer = CurrencySerializer(currency) self.assertIsNone(serializer.get_latest_exchange_rate(currency))
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"))
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"))
def setUp(self): EURCurrencyFactory(primary=True) Currency.objects.update(accepted=True)
def test_currency(self): EURCurrencyFactory() value = Decimal("1.00") currency_code = "EUR" self.assertEqual(money_format(value, currency_code), "€1.00 (EUR)")
def test_EUR(self): currency = EURCurrencyFactory() order = TestOrderFactory(currency=currency) self.assertEqual(order.display_total, "€35.00 (EUR)")
def test_value_is_none(self): EURCurrencyFactory() value = None currency_code = "EUR" self.assertEqual(money_format(value, currency_code), "€0.00 (EUR)")