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
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", ["shuup.campaigns.admin_module.forms:BasketTotalProductAmountConditionForm"]): with override_provides( "campaign_basket_discount_effect_form", ["shuup.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
def test_admin_campaign_edit_view_works(rf, admin_user): shop = get_default_shop() view_func = BasketCampaignEditView.as_view() request = apply_request_middleware(rf.get("/"), user=admin_user) campaign = BasketCampaign.objects.create(name="test campaign", active=True, shop=shop) response = view_func(request, pk=campaign.pk) assert campaign.name in response.rendered_content response = view_func(request, pk=None) assert response.rendered_content
def test_campaign_creation(rf, admin_user): """ To make things little bit more simple let's use only english as a language. """ with override_settings(LANGUAGES=[("en", "en")]): 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!" } campaigns_before = BasketCampaign.objects.count() request = apply_request_middleware(rf.post("/", data=data), user=admin_user) response = view(request, pk=None) assert response.status_code in [200, 302] assert BasketCampaign.objects.count() == (campaigns_before + 1)
def test_admin_campaign_edit_view_works_with_supplier(rf, admin_user): shop = get_default_shop() supplier = Supplier.objects.create(identifier=admin_user.username) view_func = BasketCampaignEditView.as_view() request = apply_request_middleware(rf.get("/"), user=admin_user) campaign = BasketCampaign.objects.create(name="test campaign", active=True, shop=shop) response = view_func(request, pk=campaign.pk) assert campaign.name in response.rendered_content response = view_func(request, pk=None) assert response.rendered_content soup = BeautifulSoup(response.rendered_content) assert soup.find("select", {"id": "id_base-supplier"}) supplier_provider = "shuup.testing.supplier_provider.UsernameSupplierProvider" with override_settings(SHUUP_ADMIN_SUPPLIER_PROVIDER_SPEC=supplier_provider): assert get_supplier(request) == supplier response = view_func(request, pk=None) assert response.rendered_content soup = BeautifulSoup(response.rendered_content) assert not soup.find("select", {"id": "id_base-supplier"})
def test_campaign_creation_for_supplier(rf, admin_user): """ To make things little bit more simple let's use only english as a language. """ shop = get_default_shop() supplier = Supplier.objects.create(identifier=admin_user.username) another_superuser = create_random_user(is_superuser=True, is_staff=True) supplier2 = Supplier.objects.create(identifier=another_superuser.username) supplier_provider = "shuup.testing.supplier_provider.UsernameSupplierProvider" with override_settings(LANGUAGES=[("en", "en")]): with override_settings(SHUUP_ADMIN_SUPPLIER_PROVIDER_SPEC=supplier_provider): view = BasketCampaignEditView.as_view() data = { "base-name": "Test Campaign", "base-public_name__en": "Test Campaign", "base-shop": shop.id, "base-active": True, "base-basket_line_text": "Test campaign activated!" } campaigns_before = BasketCampaign.objects.count() request = apply_request_middleware(rf.post("/", data=data), user=admin_user) assert get_supplier(request) == supplier response = view(request, pk=None) assert response.status_code in [200, 302] assert BasketCampaign.objects.count() == (campaigns_before + 1) new_campaign = BasketCampaign.objects.filter(supplier=supplier).first() assert new_campaign # Another superuser shouldn't see this campaign request = apply_request_middleware(rf.post("/", data=data), user=another_superuser) assert get_supplier(request) == supplier2 with pytest.raises(Http404): response = view(request, pk=new_campaign.pk)