コード例 #1
0
ファイル: test_modules.py プロジェクト: suutari/shoop
def test_modules_in_core_admin_work(rf, admin_user):
    get_default_shop()
    request = rf.get("/")
    apply_request_middleware(request, user=admin_user)
    request = apply_request_middleware(rf.get("/"), user=admin_user)
    with replace_modules(ShuupAdminAppConfig.provides["admin_module"]):
        assert all(get_module_urls())
        assert get_menu_entry_categories(request)
コード例 #2
0
ファイル: test_admin_menu.py プロジェクト: yurkobb/shuup
def test_menu_flip_parent_child(rf, admin_user):
    arrange_url = reverse("shuup_admin:menu.arrange")
    menu_request = apply_request_middleware(rf.get(arrange_url), user=admin_user)
    admin_menu_before_save = [m.to_dict() for m in get_menu_entry_categories(menu_request)]

    # move child on top level and set parent as child
    entry_parent = admin_menu_before_save[0]
    entry = admin_menu_before_save[0]["entries"][0]
    del admin_menu_before_save[0]["entries"][0]
    entry["entries"] = [admin_menu_before_save[0]]
    admin_menu_before_save.append(entry)
    del admin_menu_before_save[0]

    data = {"menus": json.dumps(admin_menu_before_save)}
    AdminMenuArrangeView.as_view()(apply_request_middleware(rf.post(arrange_url, data=data), user=admin_user))

    admin_menu_after_save = [m.to_dict() for m in get_menu_entry_categories(menu_request)]
    assert admin_menu_after_save[-1]["entries"][0]["id"] == entry_parent["id"]
コード例 #3
0
ファイル: test_modules.py プロジェクト: suutari/shoop
def test_menu_entries(rf, admin_user):
    request = rf.get("/")
    request.user = admin_user
    with replace_modules([ATestModule]):
        categories = get_menu_entry_categories(request)
        assert categories

        test_category_menu_entries = [cat for cat in categories if cat.name == "Test"][0]
        assert any(me.text == "OK" for me in test_category_menu_entries)
コード例 #4
0
def test_menu_entries(rf, admin_user):
    request = rf.get("/")
    request.user = admin_user
    with replace_modules([ATestModule]):
        categories = get_menu_entry_categories(request)
        assert categories

        test_category_menu_entries = [cat for cat in categories if cat.name == "Test"][0]
        assert any(me.text == "OK" for me in test_category_menu_entries)
コード例 #5
0
def test_menu_save_arrange_view(rf, admin_user):
    url = reverse('shuup_admin:menu.arrange')

    menu_request = apply_request_middleware(rf.get(url), user=admin_user)
    admin_menu_before_save = [
        m.to_dict() for m in get_menu_entry_categories(menu_request)
    ]
    data = {'menus': json.dumps(admin_menu_before_save[::-1])}
    request = apply_request_middleware(rf.post(url, data=data),
                                       user=admin_user)
    response = AdminMenuArrangeView.as_view()(request)
    assert response.status_code == 302

    menu_request = apply_request_middleware(rf.get(url), user=admin_user)
    admin_menu_after_save = [
        m.to_dict() for m in get_menu_entry_categories(menu_request)
    ]
    assert admin_menu_after_save == admin_menu_before_save[::-1]
コード例 #6
0
def test_menu_reset_view(rf):
    staff_user = get_staff_user()
    arrange_url = reverse('shuup_admin:menu.arrange_staff')
    menu_request = apply_request_middleware(rf.get(arrange_url), user=staff_user)
    admin_menu_before_save = [m.to_dict() for m in get_menu_entry_categories(menu_request)]
    new_data = [m.to_dict() for m in get_menu_entry_categories(menu_request)][::-1]
    new_data[0]["entries"][0]["name"] = "Menu Arrange"
    data = {'menus': json.dumps(new_data)}
    StaffMenuArrangeView.as_view()(apply_request_middleware(rf.post(arrange_url, data=data), user=staff_user))
    admin_menu_after_save = [m.to_dict() for m in get_menu_entry_categories(menu_request)]
    assert admin_menu_after_save == new_data

    reset_url = reverse('shuup_admin:menu.reset_staff')
    request = apply_request_middleware(rf.get(reset_url), user=staff_user)
    response = StaffMenuResetView.as_view()(request)
    assert response.status_code == 302
    admin_menu_after_reset = [m.to_dict() for m in get_menu_entry_categories(menu_request)]
    assert admin_menu_after_reset == admin_menu_before_save
コード例 #7
0
def test_menu_bad_customized_id(rf, admin_user):
    arrange_url = reverse('shuup_admin:menu.arrange')
    menu_request = apply_request_middleware(rf.get(arrange_url),
                                            user=admin_user)
    admin_menu_before_save = [
        m.to_dict() for m in get_menu_entry_categories(menu_request)
    ]
    bad_entry = admin_menu_before_save[-1]
    bad_entry['id'] = 'BAD_ID'
    admin_menu_before_save.append(bad_entry)

    data = {'menus': json.dumps(admin_menu_before_save)}
    AdminMenuArrangeView.as_view()(apply_request_middleware(rf.post(
        arrange_url, data=data),
                                                            user=admin_user))

    admin_menu_after_save = [
        m.to_dict() for m in get_menu_entry_categories(menu_request)
    ]
    assert len(admin_menu_after_save) == len(admin_menu_before_save) - 1
コード例 #8
0
def test_menu_save_arrange_view(rf):
    staff_user = get_staff_user()
    url = reverse('shuup_admin:menu.arrange_staff')

    menu_request = apply_request_middleware(rf.get(url), user=staff_user)
    admin_menu_before_save = [m.to_dict() for m in get_menu_entry_categories(menu_request)]
    new_data = admin_menu_before_save[::-1]
    new_data[0]["entries"][0]["name"] = "Menu Arrange"
    data = {'menus': json.dumps(new_data)}

    request = apply_request_middleware(rf.post(url, data=data), user=staff_user)
    response = StaffMenuArrangeView.as_view()(request)
    assert response.status_code == 302

    menu_request = apply_request_middleware(rf.get(url), user=staff_user)
    admin_menu_after_save = [m.to_dict() for m in get_menu_entry_categories(menu_request)]
    assert admin_menu_after_save == new_data

    # Make sure other staff has same menu after save
    another_staff_user = get_staff_user()
    menu_request = apply_request_middleware(rf.get(url), user=staff_user)
    admin_menu_after_save = [m.to_dict() for m in get_menu_entry_categories(menu_request)]
    assert admin_menu_after_save == new_data

    # Test that different languages are also customizable
    activate("fi")
    new_data[0]["entries"][0]["name"] = "Listan jarjestaminen"
    data = {'menus': json.dumps(new_data)}
    request = apply_request_middleware(rf.post(url, data=data), user=staff_user)
    response = StaffMenuArrangeView.as_view()(request)
    assert response.status_code == 302

    menu_request = apply_request_middleware(rf.get(url), user=staff_user)
    admin_menu_after_save = [m.to_dict() for m in get_menu_entry_categories(menu_request)]
    assert admin_menu_after_save == new_data

    # Back in english menu title should still be "Menu Arrange"
    activate("en")
    menu_request = apply_request_middleware(rf.get(url), user=staff_user)
    admin_menu_after_save = [m.to_dict() for m in get_menu_entry_categories(menu_request)]
    assert admin_menu_after_save[0]["entries"][0]["name"] == "Menu Arrange"
コード例 #9
0
ファイル: test_permissions.py プロジェクト: ruqaiya/shuup
def test_permissions_for_menu_entries(rf, admin_user):
    request = rf.get("/")
    request.user = factories.get_default_staff_user()
    permission_group = request.user.groups.first()
    set_permissions_for_group(
        permission_group,
        set("dashboard") | set(ARestrictedTestModule().get_required_permissions())
    )

    with replace_modules([ARestrictedTestModule]):
        categories = get_menu_entry_categories(request)
        assert categories

        # Make sure category is displayed if user has correct permissions
        test_category_menu_entries = [cat for cat in categories if cat.name == "RestrictedTest"][0]
        assert any(me.text == "OK" for me in test_category_menu_entries)

        # No menu items should be displayed if user has no permissions
        set_permissions_for_group(permission_group, set())
        categories = get_menu_entry_categories(request)
        assert not categories
コード例 #10
0
ファイル: test_permissions.py プロジェクト: xnemo12/shuup
def test_permissions_for_menu_entries(rf, admin_user):
    request = rf.get("/")
    request.user = factories.get_default_staff_user()
    permission_group = request.user.groups.first()
    set_permissions_for_group(
        permission_group,
        set("dashboard") | set(ARestrictedTestModule().get_required_permissions())
    )

    with replace_modules([ARestrictedTestModule]):
        categories = get_menu_entry_categories(request)
        assert categories

        # Make sure category is displayed if user has correct permissions
        test_category_menu_entries = [cat for cat in categories if cat.name == "RestrictedTest"][0]
        assert any(me.text == "OK" for me in test_category_menu_entries)

        # No menu items should be displayed if user has no permissions
        set_permissions_for_group(permission_group, set())
        categories = get_menu_entry_categories(request)
        assert not categories
コード例 #11
0
def test_menu_bad_entry_id(rf, admin_user):
    arrange_url = reverse('shuup_admin:menu.arrange')
    menu_request = apply_request_middleware(rf.get(arrange_url),
                                            user=admin_user)
    admin_menu_before_save = [
        m.to_dict() for m in get_menu_entry_categories(menu_request)
    ]
    admin_menu_before_save_id = admin_menu_before_save[-1]['id']
    admin_menu_before_save[-1]['id'] = 'BAD_ID'
    admin_menu_before_save[0]['entries'][-1]['id'] = 'BAD_ID'

    data = {'menus': json.dumps(admin_menu_before_save)}
    AdminMenuArrangeView.as_view()(apply_request_middleware(rf.post(
        arrange_url, data=data),
                                                            user=admin_user))

    admin_menu_after_save = [
        m.to_dict() for m in get_menu_entry_categories(menu_request)
    ]
    assert admin_menu_after_save[-1]['id'] != admin_menu_before_save[-1]['id']
    assert admin_menu_after_save[-1]['id'] == admin_menu_before_save_id
コード例 #12
0
ファイル: test_permissions.py プロジェクト: millujye/shuup
def test_permissions_for_menu_entries(rf, admin_user):
    permissions = set(["shuup.add_product", "shuup.delete_product", "shuup.change_product"])

    request = rf.get("/")
    request.user = StaffUser()
    request.user.permissions = permissions

    with replace_modules([ARestrictedTestModule]):
        modules = [m for m in get_modules()]
        assert request.user.permissions == modules[0].get_required_permissions()

        categories = get_menu_entry_categories(request)
        assert categories

        # Make sure category is displayed if user has correct permissions
        test_category_menu_entries = categories.get("RestrictedTest")
        assert any(me.text == "OK" for me in test_category_menu_entries)

        # No menu items should be displayed if user has no permissions
        request.user.permissions = []
        categories = get_menu_entry_categories(request)
        assert not categories
コード例 #13
0
def test_menu_move_child(rf, admin_user):
    arrange_url = reverse('shuup_admin:menu.arrange')
    menu_request = apply_request_middleware(rf.get(arrange_url),
                                            user=admin_user)
    admin_menu_before_save = [
        m.to_dict() for m in get_menu_entry_categories(menu_request)
    ]

    # move child on the top level
    entry = admin_menu_before_save[0]['entries'][0]
    del admin_menu_before_save[0]['entries'][0]
    admin_menu_before_save.append(entry)

    data = {'menus': json.dumps(admin_menu_before_save)}
    AdminMenuArrangeView.as_view()(apply_request_middleware(rf.post(
        arrange_url, data=data),
                                                            user=admin_user))

    admin_menu_after_save = [
        m.to_dict() for m in get_menu_entry_categories(menu_request)
    ]
    assert admin_menu_after_save[-1]['id'] == entry['id']
コード例 #14
0
def test_menu_reset_view(rf, admin_user):
    arrange_url = reverse("shuup_admin:menu.arrange_superuser")
    menu_request = apply_request_middleware(rf.get(arrange_url),
                                            user=admin_user)
    admin_menu_before_save = [
        m.to_dict() for m in get_menu_entry_categories(menu_request)
    ]
    data = {"menus": json.dumps(admin_menu_before_save[::-1])}
    SuperUserMenuArrangeView.as_view()(apply_request_middleware(
        rf.post(arrange_url, data=data), user=admin_user))
    admin_menu_after_save = [
        m.to_dict() for m in get_menu_entry_categories(menu_request)
    ]
    assert admin_menu_after_save == admin_menu_before_save[::-1]

    reset_url = reverse("shuup_admin:menu.reset_superuser")
    request = apply_request_middleware(rf.get(reset_url), user=admin_user)
    response = SuperUserMenuResetView.as_view()(request)
    assert response.status_code == 302
    admin_menu_after_reset = [
        m.to_dict() for m in get_menu_entry_categories(menu_request)
    ]
    assert admin_menu_after_reset == admin_menu_before_save
コード例 #15
0
def test_permissions_for_menu_entries(rf, admin_user):
    permissions = set(
        ["shuup.add_product", "shuup.delete_product", "shuup.change_product"])

    request = rf.get("/")
    request.user = StaffUser()
    request.user.permissions = permissions

    with replace_modules([ARestrictedTestModule]):
        modules = [m for m in get_modules()]
        assert request.user.permissions == modules[0].get_required_permissions(
        )

        categories = get_menu_entry_categories(request)
        assert categories

        # Make sure category is displayed if user has correct permissions
        test_category_menu_entries = categories.get("RestrictedTest")
        assert any(me.text == "OK" for me in test_category_menu_entries)

        # No menu items should be displayed if user has no permissions
        request.user.permissions = []
        categories = get_menu_entry_categories(request)
        assert not categories
コード例 #16
0
ファイル: test_admin_menu.py プロジェクト: yurkobb/shuup
def test_is_menu_category_active(rf, admin_user):
    url = reverse("shuup_admin:shop_product.list")
    menu_request = apply_request_middleware(rf.get(url), user=admin_user)
    menu_categories = get_menu_entry_categories(menu_request)

    env = Environment()
    context = Context(environment=env, parent=None, name="FauxContext", blocks={})
    context.vars.update({"request": menu_request})

    product_category = [category for category in menu_categories if category.identifier == PRODUCTS_MENU_CATEGORY][0]
    assert is_menu_category_active(context, product_category, menu_request.path)
    assert is_menu_item_active(context, url, menu_request.path)

    shop_category = [category for category in menu_categories if category.identifier == SETTINGS_MENU_CATEGORY][0]
    assert not is_menu_category_active(context, shop_category, menu_request.path)

    with override_settings(SHUUP_ALWAYS_ACTIVE_MENU_CATEGORY_IDENTIFIERS=[SETTINGS_MENU_CATEGORY]):
        assert is_menu_category_active(context, shop_category, menu_request.path)
コード例 #17
0
def test_is_menu_category_active(rf, admin_user):
    url = reverse('shuup_admin:shop_product.list')
    menu_request = apply_request_middleware(rf.get(url), user=admin_user)
    menu_categories = get_menu_entry_categories(menu_request)

    product_category = [
        category for category in menu_categories
        if category.identifier == PRODUCTS_MENU_CATEGORY
    ][0]
    assert is_menu_category_active(product_category, menu_request.path)

    shop_category = [
        category for category in menu_categories
        if category.identifier == SETTINGS_MENU_CATEGORY
    ][0]
    assert not is_menu_category_active(shop_category, menu_request.path)

    with override_settings(SHUUP_ALWAYS_ACTIVE_MENU_CATEGORY_IDENTIFIERS=[
            SETTINGS_MENU_CATEGORY
    ]):
        assert is_menu_category_active(shop_category, menu_request.path)
コード例 #18
0
ファイル: shuup_admin.py プロジェクト: masindeandrew/shuup
def get_menu_entries(context):
    return sorted(itertools.chain(*(c.entries
                                    for c in menu.get_menu_entry_categories(
                                        request=context["request"]).values())),
                  key=(lambda m: m.text))
コード例 #19
0
ファイル: shuup_admin.py プロジェクト: masindeandrew/shuup
def get_menu_entry_categories(context):
    return menu.get_menu_entry_categories(request=context["request"])
コード例 #20
0
def test_menu_save_arrange_view(rf):
    with override_settings(
            SHUUP_ADMIN_SHOP_PROVIDER_SPEC=
            "shuup.testing.shop_provider.TestingAdminShopProvider",
            SHUUP_ADMIN_SUPPLIER_PROVIDER_SPEC=
            "shuup.testing.supplier_provider.FirstSupplierProvider",
    ):
        supplier_user = get_supplier_user()
        url = reverse("shuup_admin:menu.arrange_supplier")

        menu_request = apply_request_middleware(rf.get(url),
                                                user=supplier_user)
        admin_menu_before_save = [
            m.to_dict() for m in get_menu_entry_categories(menu_request)
        ]
        new_data = admin_menu_before_save[::-1]
        new_data[0]["entries"][0]["name"] = "Menu Arrange"
        data = {"menus": json.dumps(new_data)}

        request = apply_request_middleware(rf.post(url, data=data),
                                           user=supplier_user)
        response = SupplierMenuArrangeView.as_view()(request)
        assert response.status_code == 302

        menu_request = apply_request_middleware(rf.get(url),
                                                user=supplier_user)
        admin_menu_after_save = [
            m.to_dict() for m in get_menu_entry_categories(menu_request)
        ]
        assert admin_menu_after_save == new_data

        # Make sure other staff has same menu after save
        another_supplier_user = get_supplier_user()
        menu_request = apply_request_middleware(rf.get(url),
                                                user=supplier_user)
        admin_menu_after_save = [
            m.to_dict() for m in get_menu_entry_categories(menu_request)
        ]
        assert admin_menu_after_save == new_data

        # Test that different languages are also customizable
        activate("fi")
        new_data[0]["entries"][0]["name"] = "Listan jarjestaminen"
        data = {"menus": json.dumps(new_data)}
        request = apply_request_middleware(rf.post(url, data=data),
                                           user=supplier_user)
        response = SupplierMenuArrangeView.as_view()(request)
        assert response.status_code == 302

        menu_request = apply_request_middleware(rf.get(url),
                                                user=supplier_user)
        admin_menu_after_save = [
            m.to_dict() for m in get_menu_entry_categories(menu_request)
        ]
        assert admin_menu_after_save == new_data

        # Back in english menu title should still be "Menu Arrange"
        activate("en")
        menu_request = apply_request_middleware(rf.get(url),
                                                user=supplier_user)
        admin_menu_after_save = [
            m.to_dict() for m in get_menu_entry_categories(menu_request)
        ]
        assert admin_menu_after_save[0]["entries"][0]["name"] == "Menu Arrange"

    # Make sure staff does not receive this menu as long as the get_supplier provider
    # returns None which is the default
    staff = get_staff_user()
    menu_request = apply_request_middleware(rf.get(url), user=staff)
    staff_menu = [m.to_dict() for m in get_menu_entry_categories(menu_request)]
    assert staff_menu != admin_menu_after_save
コード例 #21
0
ファイル: shuup_admin.py プロジェクト: shuup/shuup
def get_menu_entry_categories(context):
    return menu.get_menu_entry_categories(request=context["request"])
コード例 #22
0
ファイル: shuup_admin.py プロジェクト: shuup/shuup
def get_menu_entries(context):
    return sorted(itertools.chain(*(
        c.entries
        for c
        in menu.get_menu_entry_categories(request=context["request"]).values()
    )), key=(lambda m: m.text))