def test_custom_view_toolbar_buttons(rf, admin_user): factories.get_default_shop() request = apply_request_middleware(rf.get("/"), user=admin_user) list_view_func = ContactGroupPriceDisplayListView.as_view() edit_view_func = ContactGroupPriceDisplayEditView.as_view() with override_provides("contact_group_price_list_toolbar_provider", [ "shuup.testing.modules.mocker.toolbar:ContactGroupPriceDisplayButtonProvider" ]): list_response = list_view_func(request) list_response.render() list_content = list_response.content.decode("utf-8") assert "btn-contact-group-hello" in list_content edit_response = edit_view_func(request) edit_response.render() edit_response = edit_response.content.decode("utf-8") assert "btn-contact-group-hello" not in edit_response # use global provider - all views should have that button with override_provides("admin_toolbar_button_provider", [ "shuup.testing.modules.mocker.toolbar:ContactGroupPriceDisplayButtonProvider" ]): list_response = list_view_func(request) list_response.render() list_content = list_response.content.decode("utf-8") assert "btn-contact-group-hello" in list_content edit_response = edit_view_func(request) edit_response.render() edit_response = edit_response.content.decode("utf-8") assert "btn-contact-group-hello" in edit_response
def test_admin_edit(rf, admin_user): shop = get_default_shop() group = get_default_customer_group(shop) cgpd = ContactGroupPriceDisplay.objects.for_group_and_shop(group, shop) view = ContactGroupPriceDisplayEditView.as_view() options = get_price_display_options_for_group_and_shop(group, shop) assert options.show_prices request = apply_request_middleware(rf.get("/"), user=admin_user) response = view(request, pk=cgpd.pk) response.render() content = force_text(response.content) data = extract_form_fields(BeautifulSoup(content)) data.update({ "price_display_mode": [PriceDisplayChoices.HIDE.value], "group": group.id, }) request = apply_request_middleware(rf.post("/", data), user=admin_user, shop=shop) response = view(request, pk=cgpd.pk) assert response.status_code == 302 # save successful group = get_default_customer_group(shop) options = get_price_display_options_for_group_and_shop(group, shop) assert options.show_prices is False assert options.include_taxes is None # none, with_taxes, without_taxes, hide k = "price_display_mode" data.update({k: [PriceDisplayChoices.NONE.value]}) request = apply_request_middleware(rf.post("/", data), user=admin_user, shop=shop) response = view(request, pk=cgpd.pk) assert response.status_code == 302 # save successful options = get_price_display_options_for_group_and_shop(group, shop) assert options.show_prices is True # default assert options.include_taxes is None data.update({k: [PriceDisplayChoices.WITH_TAXES.value]}) request = apply_request_middleware(rf.post("/", data), user=admin_user, shop=shop) response = view(request, pk=cgpd.pk) assert response.status_code == 302 # save successful options = get_price_display_options_for_group_and_shop(group, shop) assert options.show_prices is True # default assert options.include_taxes is True data.update({k: [PriceDisplayChoices.WITHOUT_TAXES.value]}) request = apply_request_middleware(rf.post("/", data), user=admin_user, shop=shop) response = view(request, pk=cgpd.pk) assert response.status_code == 302 # save successful options = get_price_display_options_for_group_and_shop(group, shop) assert options.show_prices is True assert options.include_taxes is False