def test_manager_apply_taxes_to_product(product, plugins, price): country = Country("PL") variant = product.variants.all()[0] currency = variant.get_price().currency expected_price = Money(price, currency) taxed_price = ExtensionsManager(plugins=plugins).apply_taxes_to_product( product, variant.get_price(), country) assert TaxedMoney(expected_price, expected_price) == taxed_price
def test_manager_calculates_checkout_line_total(checkout_with_item, discount_info, plugins, amount): line = checkout_with_item.lines.all()[0] currency = line.get_total().currency expected_total = Money(amount, currency) taxed_total = ExtensionsManager( plugins=plugins).calculate_checkout_line_total(line, [discount_info]) assert TaxedMoney(expected_total, expected_total) == taxed_total
def test_plugin_add_new_configuration( new_config, new_config_structure, monkeypatch, ): monkeypatch.setattr(PluginInactive, "DEFAULT_ACTIVE", True) monkeypatch.setattr( PluginInactive, "DEFAULT_CONFIGURATION", [new_config], ) config_structure = {"Foo": new_config_structure} monkeypatch.setattr(PluginInactive, "CONFIG_STRUCTURE", config_structure) manager = ExtensionsManager( plugins=["tests.extensions.sample_plugins.PluginInactive"]) plugin = manager.get_plugin("PluginInactive") assert len(plugin.configuration) == 1 assert plugin.configuration[0] == {**new_config, **new_config_structure}
def test_manager_calculates_order_shipping(order_with_lines, plugins, shipping_amount): currency = order_with_lines.total.currency expected_shipping_price = Money(shipping_amount, currency) taxed_shipping_price = ExtensionsManager( plugins=plugins).calculate_order_shipping(order_with_lines) assert (TaxedMoney(expected_shipping_price, expected_shipping_price) == taxed_shipping_price)
def test_manager_calculates_checkout_subtotal(checkout_with_item, discount_info, plugins, subtotal_amount): currency = checkout_with_item.get_total().currency expected_subtotal = Money(subtotal_amount, currency) taxed_subtotal = ExtensionsManager( plugins=plugins).calculate_checkout_subtotal(checkout_with_item, [discount_info]) assert TaxedMoney(expected_subtotal, expected_subtotal) == taxed_subtotal
def test_manager_get_plugin_configurations(plugin_configuration): plugins = [ "tests.extensions.sample_plugins.PluginSample", "tests.extensions.sample_plugins.PluginInactive", ] manager = ExtensionsManager(plugins=plugins) plugin_configs = manager._plugin_configs.values() assert len(plugin_configs) == 1 assert set(plugin_configs) == set(list(PluginConfiguration.objects.all()))
def test_manager_calculates_checkout_shipping(checkout_with_item, discount_info, plugins, shipping_amount): currency = checkout_with_item.get_total().currency expected_shipping_price = Money(shipping_amount, currency) taxed_shipping_price = ExtensionsManager( plugins=plugins).calculate_checkout_shipping(checkout_with_item, [discount_info]) assert (TaxedMoney(expected_shipping_price, expected_shipping_price) == taxed_shipping_price)
def test_manager_serve_list_all_payment_gateways(): expected_gateways = [ { "name": ActivePaymentGateway.PLUGIN_NAME, "config": ActivePaymentGateway.CLIENT_CONFIG, }, { "name": InactivePaymentGateway.PLUGIN_NAME, "config": [] }, ] plugins = [ "tests.extensions.sample_plugins.ActivePaymentGateway", "tests.extensions.sample_plugins.InactivePaymentGateway", ] manager = ExtensionsManager(plugins=plugins) assert manager.list_payment_gateways( active_only=False) == expected_gateways
def test_plugin_updates_configuration_shape( new_config, new_config_structure, plugin_configuration, monkeypatch, ): config_structure = PluginSample.CONFIG_STRUCTURE.copy() config_structure["Foo"] = new_config_structure monkeypatch.setattr(PluginSample, "CONFIG_STRUCTURE", config_structure) monkeypatch.setattr( PluginSample, "DEFAULT_CONFIGURATION", plugin_configuration.configuration + [new_config], ) manager = ExtensionsManager( plugins=["tests.extensions.sample_plugins.PluginSample"]) plugin = manager.get_plugin("PluginSample") assert len(plugin.configuration) == 5 assert plugin.configuration[-1] == {**new_config, **new_config_structure}
def test_manager_show_taxes_on_storefront(plugins, show_taxes): assert show_taxes == ExtensionsManager( plugins=plugins).show_taxes_on_storefront()
def test_manager_get_tax_rate_percentage_value(plugins, amount, product): country = Country("PL") tax_rate_value = ExtensionsManager( plugins=plugins).get_tax_rate_percentage_value(product, country) assert tax_rate_value == Decimal(amount)
def test_manager_apply_taxes_to_shipping(shipping_method, address, plugins, price_amount): expected_price = Money(price_amount, "USD") taxed_price = ExtensionsManager(plugins=plugins).apply_taxes_to_shipping( shipping_method.price, address) assert TaxedMoney(expected_price, expected_price) == taxed_price
def test_manager_taxes_are_enabled(plugins, taxes_enabled): assert taxes_enabled == ExtensionsManager( plugins=plugins).taxes_are_enabled()
def manager_with_plugin_without_configuration_enabled(): plugins = ["tests.extensions.test_manager.SamplePlugin1"] manager = ExtensionsManager(plugins=plugins) manager.get_plugin_configuration(plugin_name="Sample Plugin1") return manager
def test_manager_uses_get_tax_rate_choices(plugins, tax_rate_list): assert (tax_rate_list == ExtensionsManager( plugins=plugins).get_tax_rate_type_choices())
def test_manager_calculates_order_line(order_line, plugins, amount): currency = order_line.unit_price.currency expected_price = Money(amount, currency) unit_price = ExtensionsManager( plugins=plugins).calculate_order_line_unit(order_line) assert expected_price == unit_price.gross
def test_manager_save_plugin_configuration(plugin_configuration): plugins = ["tests.extensions.sample_plugins.PluginSample"] manager = ExtensionsManager(plugins=plugins) manager.save_plugin_configuration("PluginSample", {"active": False}) plugin_configuration.refresh_from_db() assert not plugin_configuration.active
def manager_with_plugin_without_configuration_enabled(): plugins = ["tests.extensions.sample_plugins.PluginInactive"] manager = ExtensionsManager(plugins=plugins) manager.get_plugin_configuration(plugin_name="PluginInactive") return manager