Ejemplo n.º 1
0
def get_form_parts(request, view, object):
    with override_provides("service_behavior_component_form",
                           DEFAULT_BEHAVIOR_FORMS):
        with override_provides("service_behavior_component_form_part",
                               DEFAULT_BEHAVIOR_FORM_PARTS):
            initialized_view = view(request=request, kwargs={"pk": object.pk})
            return initialized_view.get_form_parts(object)
Ejemplo n.º 2
0
def test_campaign_edit_save(rf, admin_user):
    """
    To make things little bit more simple let's use only english as
    a language.
    """
    with override_settings(LANGUAGES=[("en", "en")]):
        shop = get_default_shop()
        object = BasketCampaign.objects.create(name="test campaign", active=True, shop=shop)
        object.save()
        view = BasketCampaignEditView.as_view()
        new_name = "Test Campaign"
        assert object.name != new_name
        data = {
            "base-name": new_name,
            "base-public_name__en": "Test Campaign",
            "base-shop": get_default_shop().id,
            "base-active": True,
            "base-basket_line_text": "Test campaign activated!"
        }
        methods_before = BasketCampaign.objects.count()
        # Conditions and effects is tested separately
        with override_provides("campaign_basket_condition", []):
            with override_provides("campaign_basket_discount_effect_form", []):
                with override_provides("campaign_basket_line_effect_form", []):
                    request = apply_request_middleware(rf.post("/", data=data), user=admin_user)
                    response = view(request, pk=object.pk)
                    assert response.status_code in [200, 302]

        assert BasketCampaign.objects.count() == methods_before
        assert BasketCampaign.objects.get(pk=object.pk).name == new_name
Ejemplo n.º 3
0
def test_rules_and_effects(rf, admin_user):
    """
    To make things little bit more simple let's use only english as
    a language.
    """
    get_default_shop()
    with override_settings(LANGUAGES=[("en", "en")]):
        shop = get_default_shop()
        object = BasketCampaign.objects.create(name="test campaign", active=True, shop=shop)
        assert object.conditions.count() == 0
        assert object.discount_effects.count() == 0
        view = BasketCampaignEditView.as_view()
        data = {
            "base-name": "test campaign",
            "base-public_name__en": "Test Campaign",
            "base-shop": get_default_shop().id,
            "base-active": True,
            "base-basket_line_text": "Test campaign activated!"
        }
        with override_provides(
                "campaign_basket_condition", ["wshop.campaigns.admin_module.forms:BasketTotalProductAmountConditionForm"]):
            with override_provides(
                    "campaign_basket_discount_effect_form", ["wshop.campaigns.admin_module.forms:BasketDiscountAmountForm"]):
                with override_provides("campaign_basket_line_effect_form", []):
                    data.update(get_products_in_basket_data())
                    data.update(get_free_product_data(object))
                    request = apply_request_middleware(rf.post("/", data=data), user=admin_user)
                    view(request, pk=object.pk)

        object.refresh_from_db()
        assert object.conditions.count() == 1
        assert object.discount_effects.count() == 1
Ejemplo n.º 4
0
def test_method_edit_save(rf, admin_user, view, model, get_object,
                          service_provider_attr):
    """
    To make things little bit more simple let's use only english as
    an language.
    """
    with override_settings(LANGUAGES=[("en", "en")]):
        object = get_object()
        object.choice_identifier = ""
        object.save()
        assert object.choice_identifier == ""
        view = view.as_view()
        service_provider_attr_field = "base-%s" % service_provider_attr
        data = {
            "base-name__en": object.name,
            "base-shop": object.shop.id,
            "base-tax_class": object.tax_class.id,
            "base-enabled": True,
            service_provider_attr_field: getattr(object,
                                                 service_provider_attr).pk,
            "base-choice_identifier": "manual"
        }
        methods_before = model.objects.count()
        # Behavior components is tested at wshop.tests.admin.test_service_behavior_components
        with override_provides("service_behavior_component_form", []):
            with override_provides("service_behavior_component_form_part", []):
                request = apply_request_middleware(rf.post("/", data=data),
                                                   user=admin_user)
                response = view(request, pk=object.pk)
                if hasattr(response, "render"):
                    response.render()
                assert response.status_code in [200, 302]

        assert model.objects.count() == methods_before
        assert model.objects.get(pk=object.pk).choice_identifier == "manual"
Ejemplo n.º 5
0
def get_form_parts(request, view, object):
    with override_provides("campaign_context_condition",
                           DEFAULT_CONDITION_FORMS):
        with override_provides("campaign_catalog_filter",
                               DEFAULT_FILTER_FORMS):
            with override_provides("campaign_product_discount_effect_form",
                                   DEFAULT_EFFECT_FORMS):
                initialized_view = view(request=request,
                                        kwargs={"pk": object.pk})
                return initialized_view.get_form_parts(object)
Ejemplo n.º 6
0
def test_contact_detail_has_mocked_toolbar_action_items(rf, admin_user):
    get_default_shop()
    contact = create_random_person(locale="en_US", minimum_name_comp_len=5)

    request = apply_request_middleware(rf.get("/"), user=admin_user)
    view_func = ContactDetailView.as_view()
    with override_provides("admin_contact_toolbar_action_item", [
        "wshop.testing.admin_module.toolbar:MockContactToolbarActionItem"
    ]):
        assert _check_if_mock_action_item_exists(view_func, request, contact)

    with override_provides("admin_contact_toolbar_action_item", []):
        assert not _check_if_mock_action_item_exists(view_func, request, contact)
Ejemplo n.º 7
0
def test_dummy_script_template_manual(rf):

    with override_provides(
            "notify_script_template",
        ["wshop.testing.notify_script_templates:DummyScriptTemplate"]):
        shop = get_default_shop()
        Script.objects.all().delete()

        script_template = DummyScriptTemplate()
        form = script_template.get_form()
        assert form is None

        script = script_template.create_script(shop)
        assert script is not None

        db_script = Script.objects.first()
        assert script.pk == db_script.pk

        serialized_steps = db_script.get_serialized_steps()

        assert len(serialized_steps) == 1
        assert len(serialized_steps[0]["actions"]) == 0
        assert len(serialized_steps[0]["conditions"]) == 1
        assert serialized_steps[0]["conditions"][0]["v1"]["constant"]
        assert not serialized_steps[0]["conditions"][0]["v2"]["constant"]
Ejemplo n.º 8
0
def test_multishops_middleware(rf, host):
    with override_provides("xtheme", [
            "wshop_tests.xtheme.utils:FauxTheme",
            "wshop_tests.xtheme.utils:FauxTheme2"
    ]):
        shop1 = Shop.objects.create(identifier="shop1", domain="shop-1")
        shop2 = Shop.objects.create(identifier="shop2", domain="shop-test-2")

        theme_settings_shop1 = ThemeSettings.objects.create(
            theme_identifier=FauxTheme.identifier, shop=shop1)
        theme_settings_shop2 = ThemeSettings.objects.create(
            theme_identifier=FauxTheme2.identifier, shop=shop2)

        request = rf.get("/")
        request.META["HTTP_HOST"] = host

        # should apply the correct shop and the template
        apply_request_middleware(request)

        if host == "shop-1.somedomain.com":
            assert request.shop.id == shop1.id
            assert get_middleware_current_theme(
            ).identifier == FauxTheme.identifier
            assert get_middleware_current_theme(
            ).settings_obj.id == theme_settings_shop1.id
        else:
            assert request.shop.id == shop2.id
            assert get_middleware_current_theme(
            ).identifier == FauxTheme2.identifier
            assert get_middleware_current_theme(
            ).settings_obj.id == theme_settings_shop2.id
Ejemplo n.º 9
0
def test_extending_shipment_clean_hook(rf, admin_user):
    shop = get_default_shop()
    supplier = get_default_supplier()
    product = create_product(sku="test-sku",
                             shop=shop,
                             supplier=supplier,
                             default_price=3.33)
    quantity = 1
    order = create_order_with_product(product,
                                      supplier,
                                      quantity=quantity,
                                      taxless_base_unit_price=1,
                                      shop=shop)

    extend_form_class = "wshop_tests.admin.test_shipment_creator.ShipmentFormModifierTest"
    with override_provides(ShipmentForm.form_modifier_provide_key,
                           [extend_form_class]):
        data = {
            "q_%s" % product.pk: 1,
            "supplier": supplier.pk,
            "phone": "911"
        }
        request = apply_request_middleware(rf.post("/", data=data),
                                           user=admin_user)
        view = OrderCreateShipmentView.as_view()
        response = view(request, pk=order.pk).render()
        assert response.status_code == 200
        soup = BeautifulSoup(response.content)
        assert soup.body.findAll(
            text=re.compile("Phone number should start with country code!"))
Ejemplo n.º 10
0
def test_extending_shipment_with_extra_fields(rf, admin_user):
    shop = get_default_shop()
    supplier = get_default_supplier()
    product = create_product(sku="test-sku",
                             shop=shop,
                             supplier=supplier,
                             default_price=3.33)
    quantity = 1
    order = create_order_with_product(product,
                                      supplier,
                                      quantity=quantity,
                                      taxless_base_unit_price=1,
                                      shop=shop)

    extend_form_class = "wshop_tests.admin.test_shipment_creator.ShipmentFormModifierTest"
    with override_provides(ShipmentForm.form_modifier_provide_key,
                           [extend_form_class]):
        request = apply_request_middleware(rf.get("/"), user=admin_user)
        view = OrderCreateShipmentView.as_view()
        response = view(request, pk=order.pk).render()
        assert response.status_code == 200

        # Should contain supplier input, input for product and input for phone
        soup = BeautifulSoup(response.content)
        assert soup.find("input", {"id": "id_q_%s" % product.pk})
        assert soup.find("select", {"id": "id_supplier"})
        assert soup.find("input", {"id": "id_phone"})
Ejemplo n.º 11
0
def test_stacked_tax_taxful_price():
    shop = get_shop(prices_include_tax=True, currency='EUR')
    source = OrderSource(shop)
    assert source.prices_include_tax
    source.add_line(type=OrderLineType.OTHER,
                    quantity=1,
                    base_unit_price=source.create_price(20))
    with override_provides("tax_module", TAX_MODULE_SPEC):
        with override_settings(WSHOP_TAX_MODULE="irvine"):
            source.shipping_address = MutableAddress(
                street="16215 Alton Pkwy",
                postal_code="92602",
            )
            line = source.get_final_lines(with_taxes=True)[0]
            assert isinstance(line, SourceLine)
            assert line.taxes
            assert line.taxful_price == TaxfulPrice(20, 'EUR')
            assert_almost_equal(line.taxless_price,
                                TaxlessPrice("18.52", 'EUR'))
            source.uncache()

            # Let's move out to a taxless location.
            source.shipping_address.postal_code = "11111"
            line = source.get_final_lines(with_taxes=True)[0]
            assert isinstance(line, SourceLine)
            assert not line.taxes
            assert line.taxful_price == TaxfulPrice(20, source.currency)
            assert line.taxless_price.value == Decimal("20")
Ejemplo n.º 12
0
def test_extender_renders_main_menu(rf):
    get_default_shop()

    with override_provides("front_menu_extender", ["wshop_tests.xtheme.test_extenders:TestExtender"]):
        c = SmartClient()
        soup = c.soup(reverse("wshop:index"))
        link_texts = [a.text for a in soup.findAll("a")]
        assert "Test Link to Front" in link_texts
Ejemplo n.º 13
0
def test_report_writer_populator_provide():
    with override_provides("report_writer_populator", [
        "wshop.reports.writer.populate_default_writers"
    ]):
        populator = ReportWriterPopulator()
        populator.populate()

        for k, v in REPORT_WRITERS_MAP.items():
            assert populator.populated_map[k] == v
Ejemplo n.º 14
0
def test_campaign_edit_save(rf, admin_user):
    """
    To make things little bit more simple let's use only english as
    a language.
    """
    with override_settings(LANGUAGES=[("en", "en")]):
        shop = get_default_shop()
        object = CatalogCampaign.objects.create(name="test campaign",
                                                active=True,
                                                shop=shop)
        object.save()
        view = CatalogCampaignEditView.as_view()
        new_name = "Test Campaign"
        new_end_datetime = datetime.datetime(year=2016, month=6, day=20)
        assert object.name != new_name
        assert object.end_datetime is None
        data = {
            "base-name": new_name,
            "base-public_name__en": "Test Campaign",
            "base-shop": get_default_shop().id,
            "base-active": True,
            "base-basket_line_text": "Test campaign activated!",
            "base-start_datetime": datetime.datetime(year=2016,
                                                     month=6,
                                                     day=19),
            "base-end_datetime": new_end_datetime
        }
        methods_before = CatalogCampaign.objects.count()
        # Conditions, effects and effects is tested separately
        with override_provides("campaign_context_condition", []):
            with override_provides("campaign_catalog_filter", []):
                with override_provides("campaign_product_discount_effect_form",
                                       []):
                    request = apply_request_middleware(rf.post("/", data=data),
                                                       user=admin_user)
                    response = view(request, pk=object.pk)
                    assert response.status_code in [200, 302]

        assert CatalogCampaign.objects.count() == methods_before
        updated_object = CatalogCampaign.objects.get(pk=object.pk)
        assert updated_object.name == new_name
        assert updated_object.end_datetime == new_end_datetime.replace(
            tzinfo=pytz.UTC)
Ejemplo n.º 15
0
def test_order_detail_info_row_extend(rf, admin_user):
    shop = get_default_shop()
    supplier = get_default_supplier()
    order = _get_order(shop, supplier, True)
    request = apply_request_middleware(rf.get("/"), user=admin_user)
    view_func = OrderDetailView.as_view()

    # Test that context["provided_information"] is empty by default
    with override_provides("admin_order_information", []):
        response = view_func(request, pk=order.pk)
        assert response.context_data['provided_information'] == []

    # Test that we can insert extra information rows into Order detail page
    with override_provides("admin_order_information", [
        "wshop_tests.admin.test_order_detail_extensibility:PaymentMethodName",
    ]):
        response = view_func(request, pk=order.pk)
        soup = BeautifulSoup(response.render().content)
        assert soup.find_all(text="This is row data")
Ejemplo n.º 16
0
def test_order_detail_has_default_toolbar_action_items(rf, admin_user, has_price):
    shop = get_default_shop()
    supplier = get_default_supplier()
    order = _get_order(shop, supplier, has_price)
    request = apply_request_middleware(rf.get("/"), user=admin_user)
    view_func = OrderDetailView.as_view()
    create_payment_url = reverse("wshop_admin:order.create-payment", kwargs={"pk": order.pk})
    set_paid_url = reverse("wshop_admin:order.set-paid", kwargs={"pk": order.pk})
    with override_provides("admin_order_toolbar_action_item", [
        "wshop.admin.modules.orders.toolbar:CreatePaymentAction",
        "wshop.admin.modules.orders.toolbar:SetPaidAction",
    ]):
        if has_price:
            assert _check_if_link_exists(view_func, request, order, create_payment_url)
        else:
            assert _check_if_button_exists(view_func, request, order, set_paid_url)

    with override_provides("admin_order_toolbar_action_item", []):
        assert not _check_if_link_exists(view_func, request, order, create_payment_url)
Ejemplo n.º 17
0
def test_provide_columns():
    with override_provides(
            "provided_columns_ShopProduct",
        ["wshop_tests.admin.test_picotable:CustomProductDataColumn"]):
        view_settings = ViewSettings(ShopProduct,
                                     ProductListView.default_columns,
                                     ProductListView)
        column_ids = [col.id for col in view_settings.inactive_columns
                      ]  # provided column is not set active yet
        assert "custom_product_info" in column_ids
Ejemplo n.º 18
0
def test_provides():
    shop = get_default_shop()
    product = create_product("test", shop, default_price=20)
    shop_product = product.get_shop_instance(shop)

    with override_provides("campaign_catalog_filter", [__name__ + ":UltraFilter"]):
        uf = UltraFilter.objects.create()
        uf.products.add(product)
        assert get_matching_for_product(shop_product, provide_category="campaign_catalog_filter")
        assert not get_matching_for_product(shop_product, provide_category="test_test_test")
Ejemplo n.º 19
0
def test_product_view_extra_context(rf, admin_user):
    product = get_default_product()
    request = apply_request_middleware(rf.get("/"), user=admin_user)
    view_func = ProductDetailView.as_view()

    # Test that we can insert extra information into ProductDetailView context
    with override_provides("product_context_extra", [
        "wshop_tests.front.test_product:ExtraContextTest",
    ]):
        response = view_func(request, pk=product.pk)
        assert response.context_data['product_sku'] == product.sku
Ejemplo n.º 20
0
def test_simple_addon_injection():
    request = get_request(edit=False)
    request.shop = get_default_shop()
    jeng = get_jinja2_engine()
    template = jeng.get_template("resinject.jinja")

    with override_current_theme_class():
        with override_provides("xtheme_resource_injection", [
                "wshop_tests.xtheme.test_addon_injections:add_test_injection",
        ]):
            # TestInjector should add alert to end of the body for every request
            output = template.render(request=request)
            head, body = output.split("</head>", 1)
            assert "window.injectedFromAddon=true;" in body
Ejemplo n.º 21
0
def test_get_by_identifier_theme(rf):
    with override_provides("xtheme", [
            "wshop_tests.xtheme.utils:FauxTheme",
            "wshop_tests.xtheme.utils:FauxTheme2"
    ]):
        shop1 = Shop.objects.create(identifier="shop1", domain="shop-1")
        shop2 = Shop.objects.create(identifier="shop2", domain="shop-test-2")

        theme = get_theme_by_identifier(FauxTheme2.identifier, shop1)
        assert theme.settings_obj.theme_identifier == FauxTheme2.identifier
        assert theme.settings_obj.shop.id == shop1.id

        theme = get_theme_by_identifier(FauxTheme.identifier, shop2)
        assert theme.settings_obj.theme_identifier == FauxTheme.identifier
        assert theme.settings_obj.shop.id == shop2.id
Ejemplo n.º 22
0
def test_theme_settings_api():
    shop = get_default_shop()
    with override_provides("xtheme", [
            "wshop_tests.xtheme.utils:FauxTheme",
            "wshop_tests.xtheme.utils:FauxTheme2"
    ]):
        ThemeSettings.objects.all().delete()
        theme = get_theme_by_identifier(FauxTheme2.identifier, shop)
        theme.set_setting("foo", "bar")
        theme.set_settings(quux=[4, 8, 15, 16, 23, 42])
        theme = get_theme_by_identifier(FauxTheme2.identifier, shop)
        assert theme.get_setting("foo") == "bar"
        assert theme.get_settings() == {
            "foo": "bar",
            "quux": [4, 8, 15, 16, 23, 42]
        }
Ejemplo n.º 23
0
def test_set_get_theme(rf):
    with override_provides("xtheme", [
            "wshop_tests.xtheme.utils:FauxTheme",
            "wshop_tests.xtheme.utils:FauxTheme2"
    ]):
        shop1 = Shop.objects.create(identifier="shop1", domain="shop-1")
        shop2 = Shop.objects.create(identifier="shop2", domain="shop-test-2")

        assert get_current_theme(shop1) is None
        assert get_current_theme(shop2) is None

        set_current_theme(FauxTheme2.identifier, shop1)
        assert get_current_theme(shop1).identifier == FauxTheme2.identifier
        assert get_current_theme(shop1).settings_obj is not None

        set_current_theme(FauxTheme.identifier, shop2)
        assert get_current_theme(shop2).identifier == FauxTheme.identifier
Ejemplo n.º 24
0
def initialize_editor_view(view_name, placeholder_name, request=None):
    if request is None:
        request = RequestFactory().get("/")
    request.shop = get_default_shop()
    request.user = SuperUser()
    if hasattr(request.GET, "_mutable"):
        request.GET._mutable = True  # Ahem
    request.GET.update({
        "theme": FauxTheme.identifier,
        "view": view_name,
        "ph": placeholder_name
    })

    with plugin_override():
        with override_provides("xtheme", ["wshop_tests.xtheme.utils:FauxTheme"]):
            with override_current_theme_class(FauxTheme):
                yield EditorView(request=request, args=(), kwargs={})
Ejemplo n.º 25
0
def test_theme_activation():
    shop = get_default_shop()
    with override_current_theme_class():
        with override_provides("xtheme", [
                "wshop_tests.xtheme.utils:FauxTheme",
                "wshop_tests.xtheme.utils:FauxTheme2"
        ]):
            ThemeSettings.objects.all().delete()
            # ThemeSettings will be created on the fly
            theme = get_current_theme(shop)
            assert theme
            assert theme.settings_obj
            set_current_theme(FauxTheme.identifier, shop)
            assert isinstance(get_current_theme(shop), FauxTheme)
            set_current_theme(FauxTheme2.identifier, shop)
            assert isinstance(get_current_theme(shop), FauxTheme2)
            with pytest.raises(ValueError):
                set_current_theme(printable_gibberish(), shop)
Ejemplo n.º 26
0
def test_sorts_and_filter_in_shop_edit(rf, admin_user):
    cache.clear()
    activate("en")
    with override_settings(WSHOP_ENABLE_MULTIPLE_SHOPS=False):
        with override_provides("front_extend_product_list_form",
                               DEFAULT_FORM_MODIFIERS):
            shop = get_default_shop()
            view = ShopEditView.as_view()
            assert get_configuration(
                shop=shop) == settings.WSHOP_FRONT_DEFAULT_SORT_CONFIGURATION
            data = {
                "base-name__en": shop.name,
                "base-public_name__en": shop.public_name,
                "base-status": shop.status.value,
                "base-currency": shop.currency,
                "base-prices_include_tax": shop.prices_include_tax,
                "base-languages": "en",
                "order_configuration-order_min_total": 0,
                "order_configuration-order_reference_number_length": 18,
                "product_list_facets-sort_products_by_name": True,
                "product_list_facets-sort_products_by_name_ordering": 11,
                "product_list_facets-sort_products_by_price": False,
                "product_list_facets-sort_products_by_price_ordering": 32,
                "product_list_facets-filter_products_by_manufacturer": False,
                "product_list_facets-filter_products_by_manufacturer_ordering":
                1,
            }
            request = apply_request_middleware(rf.post("/", data=data),
                                               user=admin_user)
            response = view(request, pk=shop.pk)
            if hasattr(response, "render"):
                response.render()
            assert response.status_code in [200, 302]

            expected_configurations = {
                "sort_products_by_name": True,
                "sort_products_by_name_ordering": 11,
                "sort_products_by_price": False,
                "sort_products_by_price_ordering": 32,
                "filter_products_by_manufacturer": False,
                "filter_products_by_manufacturer_ordering": 1
            }
            assert get_configuration(shop=shop) == expected_configurations
Ejemplo n.º 27
0
def get_bs_object_for_view(request, view, user, object=None):
    """
    Help function to get BeautifulSoup object from the html rendered
    by the edit view.

    Also override ``service_provider_admin_form`` here to enable
    ``PseudoPaymentProcessor``
    """
    with override_provides("service_provider_admin_form", [
            "wshop.testing.service_forms.PseudoPaymentProcessorForm",
            "wshop.admin.modules.service_providers.forms:CustomCarrierForm",
            "wshop.admin.modules.service_providers.forms:CustomPaymentProcessorForm"
    ]):
        request = apply_all_middleware(request, user=user)
        response = view(request, pk=object.pk if object else None)
        if hasattr(response, "render"):
            response.render()
        assert response.status_code in [200, 302]
        return BeautifulSoup(response.content)
Ejemplo n.º 28
0
def test_adding_extra_fields_to_the_delivery(rf):
    try:
        import weasyprint
    except ImportError:
        pytest.skip()

    shop = get_default_shop()
    supplier = get_default_supplier()
    product = create_product("simple-test-product", shop)
    order = create_order_with_product(product, supplier, 6, 6, shop=shop)
    shipment = order.create_shipment_of_all_products(supplier)
    request = rf.get("/")

    with override_provides("order_printouts_delivery_extra_fields", [
            "wshop_tests.order_printouts.test_printouts:PrintoutTestDeliveryExtraFields",
    ]):
        response = get_delivery_html(request, shipment.id)
        assert response.status_code == 200
        assert "123456789" in response.content.decode()
        assert "Random" in response.content.decode()
Ejemplo n.º 29
0
def test_sorts_and_filter_in_category_edit(rf, admin_user):
    get_default_shop()
    cache.clear()
    activate("en")
    with override_settings(WSHOP_ENABLE_MULTIPLE_SHOPS=False):
        with override_provides("front_extend_product_list_form",
                               DEFAULT_FORM_MODIFIERS):
            category = get_default_category()
            view = CategoryEditView.as_view()
            assert get_configuration(
                category=category
            ) == settings.WSHOP_FRONT_DEFAULT_SORT_CONFIGURATION
            data = {
                "base-name__en": category.name,
                "base-status": category.status.value,
                "base-visibility": category.visibility.value,
                "base-ordering": category.ordering,
                "product_list_facets-sort_products_by_name": True,
                "product_list_facets-sort_products_by_name_ordering": 6,
                "product_list_facets-sort_products_by_price": False,
                "product_list_facets-sort_products_by_price_ordering": 32,
                "product_list_facets-filter_products_by_manufacturer": True,
                "product_list_facets-filter_products_by_manufacturer_ordering":
                1
            }
            request = apply_request_middleware(rf.post("/", data=data),
                                               user=admin_user)
            response = view(request, pk=category.pk)
            if hasattr(response, "render"):
                response.render()
            assert response.status_code in [200, 302]
            expected_configurations = {
                "sort_products_by_name": True,
                "sort_products_by_name_ordering": 6,
                "sort_products_by_price": False,
                "sort_products_by_price_ordering": 32,
                "filter_products_by_manufacturer": True,
                "filter_products_by_manufacturer_ordering": 1
            }
            assert get_configuration(
                category=category) == expected_configurations
Ejemplo n.º 30
0
def test_product_page(client):
    get_default_shop()
    product = get_default_product()
    response = client.get(
        reverse('wshop:product', kwargs={
            'pk': product.pk,
            'slug': product.slug
            }
        )
    )
    assert b'no such element' not in response.content, 'All items are not rendered correctly'
    # TODO test purchase_multiple and  sales_unit.allow_fractions

    product_mode_forms = [
        "wshop.front.forms.order_forms:VariableVariationProductOrderForm",
        "wshop.front.forms.order_forms:SimpleVariationProductOrderForm",
        "wshop.front.forms.order_forms:SimpleProductOrderForm",
        "wshop.testing.extend_classes:DifferentProductOrderForm"
    ]

    with override_provides("front_product_order_form", product_mode_forms):
        get_default_shop()
        product = get_default_product()
        product_modes = [ProductMode.NORMAL, ProductMode.PACKAGE_PARENT,
                         ProductMode.VARIABLE_VARIATION_PARENT, ProductMode.SIMPLE_VARIATION_PARENT,
                         ProductMode.SUBSCRIPTION]

        for product_mode in product_modes:
            product.mode = product_mode
            product.save()

            response = client.get(
                reverse('wshop:product', kwargs={
                    'pk': product.pk,
                    'slug': product.slug
                }
                        )
            )
            assert b'no such element' not in response.content, 'All items are not rendered correctly'
            if product_mode == ProductMode.SUBSCRIPTION:
                assert b'This is different' in response.content, 'DifferentProductOrderForm not rendered properly'