shuup.testing package

Submodules

shuup.testing.admin_main_menu_updater module

class shuup.testing.admin_main_menu_updater.TestAdminMainMenuUpdater(menu)[source]

Bases: shuup.core.utils.menu.MainMenuUpdater

updates = {2: [{'identifier': 'test_0', 'title': 'Test 0'}, {'identifier': 'test_1', 'title': 'Test 1'}]}

shuup.testing.basket_middleware module

class shuup.testing.basket_middleware.TestBasketCommandMiddleware[source]

Bases: shuup.core.basket.command_middleware.BaseBasketCommandMiddleware

preprocess_kwargs(basket, request, command: str, kwargs: dict) → dict[source]
postprocess_response(basket, request, command: str, kwargs: dict, response: dict) → dict[source]

shuup.testing.browser_utils module

System Message: WARNING/2 (/home/docs/checkouts/readthedocs.org/user_builds/shuup/checkouts/latest/doc/api/shuup.testing.rst, line 37)

autodoc: failed to import module ‘shuup.testing.browser_utils’; the following exception was raised: Traceback (most recent call last): File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/envs/latest/lib/python3.6/site-packages/sphinx/ext/autodoc.py”, line 560, in import_object __import__(self.modname) File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/checkouts/latest/doc/../shuup/testing/browser_utils.py”, line 9, in <module> from selenium.common.exceptions import ElementNotVisibleException, StaleElementReferenceException ModuleNotFoundError: No module named ‘selenium’

shuup.testing.checkout_with_login_and_register_urls module

shuup.testing.extend_classes module

class shuup.testing.extend_classes.DifferentProductOrderForm(request, context, product, language, **kwargs)[source]

Bases: shuup.front.forms.order_forms.ProductOrderForm

template_name = 'shuup_testing/different_order_form.jinja'
is_compatible()[source]

shuup.testing.factories module

class shuup.testing.factories.FuzzyBoolean(probability, **kwargs)[source]

Bases: factory.fuzzy.BaseFuzzyAttribute

fuzz()[source]
class shuup.testing.factories.UserFactory[source]

Bases: factory.django.DjangoModelFactory

Would be called if trying to instantiate the class.

username = <factory.declarations.Sequence object>
email = <factory.declarations.Sequence object>
password = <factory.declarations.PostGenerationMethodCall object>
first_name = <factory.fuzzy.FuzzyText object>
last_name = <factory.fuzzy.FuzzyText object>
class shuup.testing.factories.CompanyFactory[source]

Bases: factory.django.DjangoModelFactory

Would be called if trying to instantiate the class.

name = <factory.fuzzy.FuzzyText object>
tax_number = <factory.fuzzy.FuzzyText object>
email = <factory.declarations.Sequence object>
class shuup.testing.factories.ShopFactory[source]

Bases: factory.django.DjangoModelFactory

Would be called if trying to instantiate the class.

slug = <factory.fuzzy.FuzzyText object>
name = <factory.fuzzy.FuzzyText object>
owner = <factory.declarations.SubFactory object>
class shuup.testing.factories.ProductTypeFactory[source]

Bases: factory.django.DjangoModelFactory

Would be called if trying to instantiate the class.

identifier = <factory.declarations.Sequence object>
name = <factory.fuzzy.FuzzyText object>
class shuup.testing.factories.SalesUnitFactory[source]

Bases: factory.django.DjangoModelFactory

Would be called if trying to instantiate the class.

name = <factory.fuzzy.FuzzyText object>
symbol = <factory.fuzzy.FuzzyText object>
class shuup.testing.factories.CategoryFactory[source]

Bases: factory.django.DjangoModelFactory

Would be called if trying to instantiate the class.

identifier = <factory.declarations.Sequence object>
name = <factory.fuzzy.FuzzyText object>
status = <factory.fuzzy.FuzzyChoice object>
post = <factory.declarations.PostGeneration object>
class shuup.testing.factories.ShopProductFactory[source]

Bases: factory.django.DjangoModelFactory

Would be called if trying to instantiate the class.

purchasable = <shuup.testing.factories.FuzzyBoolean object>
visibility = <factory.fuzzy.FuzzyChoice object>
default_price_value = <factory.fuzzy.FuzzyDecimal object>
class shuup.testing.factories.FuzzyName(prefix='', length=12, suffix='', chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', **kwargs)[source]

Bases: factory.fuzzy.FuzzyText

fuzz()[source]
class shuup.testing.factories.ProductFactory[source]

Bases: factory.django.DjangoModelFactory

Would be called if trying to instantiate the class.

type = <factory.declarations.LazyAttribute object>
sku = <factory.fuzzy.FuzzyText object>
sales_unit = <factory.declarations.LazyAttribute object>
tax_class = <factory.declarations.LazyAttribute object>
profit_center = <factory.fuzzy.FuzzyInteger object>
cost_center = <factory.fuzzy.FuzzyInteger object>
name = <shuup.testing.factories.FuzzyName object>
post = <factory.declarations.PostGeneration object>
shuup.testing.factories.get_address(**overrides)[source]
shuup.testing.factories.default_by_identifier(model)[source]
shuup.testing.factories.get_default_attribute_set()[source]
shuup.testing.factories.get_default_product_type()[source]
shuup.testing.factories.get_default_manufacturer()[source]
shuup.testing.factories.get_tax(code, name, rate=None, amount=None)[source]
shuup.testing.factories.create_default_tax_rule(tax)[source]
shuup.testing.factories.get_default_tax()[source]
shuup.testing.factories.get_test_tax(rate)[source]
shuup.testing.factories.get_default_tax_class()[source]
shuup.testing.factories.get_currency(code, digits=2)[source]
shuup.testing.factories.get_default_currency()[source]
shuup.testing.factories.get_custom_payment_processor()[source]
shuup.testing.factories.get_payment_processor_with_checkout_phase()[source]
shuup.testing.factories.get_custom_carrier()[source]
shuup.testing.factories.get_default_payment_method()[source]
shuup.testing.factories.get_payment_method(shop=None, price=None, waive_at=None, name=None)[source]
shuup.testing.factories.get_default_shipping_method()[source]
shuup.testing.factories.get_shipping_method(shop=None, price=None, waive_at=None, name=None)[source]
shuup.testing.factories.get_default_customer_group(shop=None)[source]
shuup.testing.factories.get_default_supplier(shop=None)[source]
shuup.testing.factories.get_supplier(module_identifier, shop=None, **kwargs)[source]
shuup.testing.factories.get_default_shop()[source]
shuup.testing.factories.get_shop(prices_include_tax=True, currency='EUR', identifier=None, enabled=False, **kwargs)[source]
shuup.testing.factories.complete_product(product)[source]
shuup.testing.factories.get_default_product()[source]
shuup.testing.factories.get_default_shop_product()[source]
shuup.testing.factories.get_default_sales_unit()[source]
shuup.testing.factories.get_fractional_sales_unit()[source]
shuup.testing.factories.get_default_category()[source]
shuup.testing.factories.get_initial_order_status()[source]
shuup.testing.factories.get_completed_order_status()[source]
shuup.testing.factories.create_attribute_with_options(name, options, min_options=0, max_options=0)[source]
shuup.testing.factories.create_product(sku, shop=None, supplier=None, default_price=None, **attrs)[source]
shuup.testing.factories.create_package_product(sku, shop=None, supplier=None, default_price=None, children=4, **attrs)[source]
shuup.testing.factories.create_empty_order(prices_include_tax=False, shop=None)[source]
shuup.testing.factories.add_product_to_order(order, supplier, product, quantity, taxless_base_unit_price, tax_rate=0, pricing_context=None)[source]
shuup.testing.factories.create_order_with_product(product, supplier, quantity, taxless_base_unit_price, tax_rate=0, n_lines=1, shop=None)[source]
shuup.testing.factories.get_random_filer_image()[source]
shuup.testing.factories.get_faker(providers, locale='en')[source]
shuup.testing.factories.get_random_email(fake)[source]
shuup.testing.factories.create_random_address(fake=None, save=True, **values)[source]
shuup.testing.factories.create_random_person(locale='en', minimum_name_comp_len=0, shop=None)[source]

Create a random PersonContact from the given locale (or a random one).

The minimum length for name components can be given, to work around possible issues with components expecting a long-enough string.

Parameters:
  • locale (str|None) – Locale name.
  • minimum_name_comp_len (int) – Minimum name component length.
Returns:

Person contact.

Return type:

PersonContact

shuup.testing.factories.create_random_contact_group(shop=None)[source]
shuup.testing.factories.create_random_company(shop=None)[source]
shuup.testing.factories.create_random_order(customer=None, products=(), completion_probability=0, shop=None, random_products=True, create_payment_for_order_total=False, order_date=None)[source]
shuup.testing.factories.create_random_product_attribute()[source]
shuup.testing.factories.create_random_user(locale='en', **kwargs)[source]
shuup.testing.factories.get_all_seeing_key(user_or_contact)[source]
shuup.testing.factories.get_basket(shop=None)[source]
shuup.testing.factories.get_default_permission_group(permissions=('dashboard', ))[source]
shuup.testing.factories.get_default_staff_user(shop=None)[source]

shuup.testing.image_generator module

class shuup.testing.image_generator.BaseImageGenerator(image, palette, seed)[source]

Bases: object

Parameters:
  • image (PIL.Image.Image) – The image to draw on
  • palette – A list of RGB tuples
  • seed (int) – Random generator seed
generate()[source]
draw_circle(x, y, w, h, color)[source]
draw_rectangle(x, y, w, h, color)[source]
class shuup.testing.image_generator.RandomImageGenerator(image, palette, seed)[source]

Bases: shuup.testing.image_generator.BaseImageGenerator

Parameters:
  • image (PIL.Image.Image) – The image to draw on
  • palette – A list of RGB tuples
  • seed (int) – Random generator seed
generate()[source]
step()[source]
class shuup.testing.image_generator.ModernArtImageGenerator(image, palette, seed)[source]

Bases: shuup.testing.image_generator.BaseImageGenerator

Parameters:
  • image (PIL.Image.Image) – The image to draw on
  • palette – A list of RGB tuples
  • seed (int) – Random generator seed
generate()[source]
class shuup.testing.image_generator.RingImageGenerator(image, palette, seed)[source]

Bases: shuup.testing.image_generator.BaseImageGenerator

Parameters:
  • image (PIL.Image.Image) – The image to draw on
  • palette – A list of RGB tuples
  • seed (int) – Random generator seed
generate()[source]
shuup.testing.image_generator.generate_image(width, height, palette=None, seed=None, supersample=2)[source]

shuup.testing.importers module

class shuup.testing.importers.DummyImporter(data, context)[source]

Bases: shuup.importer.importing.importing.DataImporter

identifier = 'dummy_importer'
name = 'Dummy Importer'
model

alias of Contact

example_files = [<shuup.importer.importing.importing.ImporterExampleFile object>]
get_row_model(row)[source]
class shuup.testing.importers.DummyFileImporter(data, context)[source]

Bases: shuup.importer.importing.importing.DataImporter

identifier = 'dummy_file_importer'
name = 'Dummy File Importer'
model

alias of Contact

example_files = [<shuup.importer.importing.importing.ImporterExampleFile object>]
get_row_model(row)[source]
classmethod get_example_file_content(example_file, request)[source]

shuup.testing.line_properties_descriptor module

class shuup.testing.line_properties_descriptor.TestLinePropertiesDescriptor[source]

Bases: shuup.front.utils.order_source.BaseLinePropertiesDescriptor

classmethod get_line_properties(line, **kwargs)[source]

shuup.testing.mock_population module

class shuup.testing.mock_population.Populator[source]

Bases: object

populate()[source]
generate_pricing(product)[source]
populate_if_required()[source]
shuup.testing.mock_population.populate_if_required()[source]

shuup.testing.notify_script_templates module

class shuup.testing.notify_script_templates.DummyScriptTemplate(script_instance=None)[source]

Bases: shuup.notify.base.ScriptTemplate

Parameters:script_instance (shuup.notify.models.script.Script|None) – script instance to change or None
identifier = 'dummy_script_template'
name = 'A Dummy Script Template'
description = 'More Texts'
help_text = 'A good help here'
create_script(shop, form=None)[source]
can_edit_script()[source]
update_script(form)[source]

shuup.testing.receivers module

shuup.testing.receivers.shop_product_orderability_check(sender, **kwargs)[source]

Signal handler for detecting shop product orderability changes

For projects which purchasable doesn’t change based on contact or contact group can hide unorderable products from frontend by changing the product visibility. By default Shuup shows all visible products at front which might not be desired for all projects.

Orderability can depend on contact or contact group only when some custom supplier modules are included. In these cases the project orderability signal handler has to adapt accordingly.

shuup.testing.receivers.ensure_shop_product_visibility(shop_product)[source]

shuup.testing.service_forms module

System Message: WARNING/2 (/home/docs/checkouts/readthedocs.org/user_builds/shuup/checkouts/latest/doc/api/shuup.testing.rst, line 117)

autodoc: failed to import module ‘shuup.testing.service_forms’; the following exception was raised: Traceback (most recent call last): File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/envs/latest/lib/python3.6/site-packages/sphinx/ext/autodoc.py”, line 560, in import_object __import__(self.modname) File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/checkouts/latest/doc/../shuup/testing/service_forms.py”, line 10, in <module> from .models import CarrierWithCheckoutPhase, PaymentWithCheckoutPhase, PseudoPaymentProcessor File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/checkouts/latest/doc/../shuup/testing/models/__init__.py”, line 8, in <module> from ._behavior_components import ExpensiveSwedenBehaviorComponent File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/checkouts/latest/doc/../shuup/testing/models/_behavior_components.py”, line 14, in <module> class ExpensiveSwedenBehaviorComponent(ServiceBehaviorComponent): File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/envs/latest/lib/python3.6/site-packages/polymorphic/base.py”, line 83, in __new__ new_class = self.call_superclass_new_method(model_name, bases, attrs) File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/envs/latest/lib/python3.6/site-packages/polymorphic/base.py”, line 124, in call_superclass_new_method self, model_name, bases, attrs File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/envs/latest/lib/python3.6/site-packages/django/db/models/base.py”, line 111, in __new__ “INSTALLED_APPS.” % (module, name) RuntimeError: Model class shuup.testing.models._behavior_components.ExpensiveSwedenBehaviorComponent doesn’t declare an explicit app_label and isn’t in an application in INSTALLED_APPS.

shuup.testing.shop_provider module

class shuup.testing.shop_provider.TestingAdminShopProvider[source]

Bases: object

get_shop(request)[source]
set_shop(request, shop=None)[source]
unset_shop(request)[source]

shuup.testing.simple_checkout_phase module

System Message: WARNING/2 (/home/docs/checkouts/readthedocs.org/user_builds/shuup/checkouts/latest/doc/api/shuup.testing.rst, line 133)

autodoc: failed to import module ‘shuup.testing.simple_checkout_phase’; the following exception was raised: Traceback (most recent call last): File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/envs/latest/lib/python3.6/site-packages/sphinx/ext/autodoc.py”, line 560, in import_object __import__(self.modname) File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/checkouts/latest/doc/../shuup/testing/simple_checkout_phase.py”, line 14, in <module> from .models import CarrierWithCheckoutPhase, PaymentWithCheckoutPhase File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/checkouts/latest/doc/../shuup/testing/models/__init__.py”, line 8, in <module> from ._behavior_components import ExpensiveSwedenBehaviorComponent File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/checkouts/latest/doc/../shuup/testing/models/_behavior_components.py”, line 14, in <module> class ExpensiveSwedenBehaviorComponent(ServiceBehaviorComponent): File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/envs/latest/lib/python3.6/site-packages/polymorphic/base.py”, line 83, in __new__ new_class = self.call_superclass_new_method(model_name, bases, attrs) File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/envs/latest/lib/python3.6/site-packages/polymorphic/base.py”, line 124, in call_superclass_new_method self, model_name, bases, attrs File “/home/docs/checkouts/readthedocs.org/user_builds/shuup/envs/latest/lib/python3.6/site-packages/django/db/models/base.py”, line 111, in __new__ “INSTALLED_APPS.” % (module, name) RuntimeError: Model class shuup.testing.models._behavior_components.ExpensiveSwedenBehaviorComponent doesn’t declare an explicit app_label and isn’t in an application in INSTALLED_APPS.

shuup.testing.single_page_checkout_test_urls module

shuup.testing.single_page_checkout_with_login_and_register_conf module

class shuup.testing.single_page_checkout_with_login_and_register_conf.SinglePageCheckoutViewWithLoginAndRegister(**kwargs)[source]

Bases: shuup.front.views.checkout.SinglePageCheckoutView

Constructor. Called in the URLconf; can contain helpful extra keyword arguments, and other things.

initial_phase = 'checkout_method'
phase_specs = ['shuup.front.checkout.checkout_method:CheckoutMethodPhase', 'shuup.front.checkout.checkout_method:RegisterPhase', 'shuup.front.checkout.addresses:AddressesPhase', 'shuup.front.checkout.methods:MethodsPhase', 'shuup.front.checkout.methods:ShippingMethodPhase', 'shuup.front.checkout.methods:PaymentMethodPhase', 'shuup.front.checkout.confirm:ConfirmPhase']
empty_phase_spec = 'shuup.front.checkout.empty:EmptyPhase'

shuup.testing.soup_utils module

shuup.testing.soup_utils.extract_form_fields(soup)[source]

Turn a BeautifulSoup form in to a dict of fields and default values

shuup.testing.subscription_option_provider module

class shuup.testing.subscription_option_provider.TestSubscriptionOptionProvider[source]

Bases: shuup.core.utils.product_subscription.BaseProductSubscriptionOptionProvider

classmethod get_subscription_options(context: shuup.core.utils.product_subscription.ProductSubscriptionContext) → typing.Iterable[shuup.core.utils.product_subscription.ProductSubscriptionOption][source]

shuup.testing.supplier_provider module

class shuup.testing.supplier_provider.UsernameSupplierProvider[source]

Bases: object

classmethod get_supplier(request, **kwargs)[source]
class shuup.testing.supplier_provider.RequestSupplierProvider[source]

Bases: object

classmethod get_supplier(request, **kwargs)[source]
class shuup.testing.supplier_provider.FirstSupplierProvider[source]

Bases: object

classmethod get_supplier(request, **kwargs)[source]

shuup.testing.text_data module

shuup.testing.text_data.random_title(second_adj_chance=0.3, prefix='', suffix='')[source]

shuup.testing.utils module

shuup.testing.utils.apply_request_middleware(request, **attrs)[source]

Apply all the process_request capable middleware configured into the given request.

Parameters:
  • request (django.http.HttpRequest) – The request to massage.
  • attrs (dict) – Additional attributes to set after massage.
Returns:

The same request, massaged in-place.

Return type:

django.http.HttpRequest

shuup.testing.utils.apply_view_middleware(request)[source]

Apply all the process_view capable middleware configured into the given request.

The logic is roughly copied from django.core.handlers.base.BaseHandler.get_response

Parameters:request (django.http.HttpRequest) – The request to massage.
Returns:The same request, massaged in-place.
Return type:django.http.HttpRequest
shuup.testing.utils.apply_all_middleware(request, **attrs)[source]

Apply all the process_request and process_view capable middleware configured into the given request.

Parameters:
  • request (django.http.HttpRequest) – The request to massage.
  • attrs (dict) – Additional attributes to set to the request after massage.
Returns:

The same request, massaged in-place.

Return type:

django.http.HttpRequest

Module contents

shuup.testing.activate_sqlite_fk_constraint(sender, connection, **kwargs)[source]

Enable integrity constraint with SQLite and not running browser tests.

class shuup.testing.ShuupTestingAppConfig(*args, **kwargs)[source]

Bases: shuup.apps.AppConfig

name = 'shuup.testing'
verbose_name = 'Shuup Testing & Demo Utilities'
label = 'shuup_testing'
provides = {'admin_module': ['shuup.testing.modules.mocker:TestingAdminModule', 'shuup.testing.modules.sample_data:SampleDataAdminModule', 'shuup.testing.modules.demo:DemoModule'], 'service_provider_admin_form': ['shuup.testing.service_forms:PseudoPaymentProcessorForm', 'shuup.testing.service_forms:PaymentWithCheckoutPhaseForm', 'shuup.testing.service_forms:CarrierWithCheckoutPhaseForm'], 'front_service_checkout_phase_provider': ['shuup.testing.simple_checkout_phase.PaymentPhaseProvider', 'shuup.testing.simple_checkout_phase.ShipmentPhaseProvider'], 'admin_contact_toolbar_button': ['shuup.testing.modules.mocker.toolbar:MockContactToolbarButton'], 'admin_contact_toolbar_action_item': ['shuup.testing.modules.mocker.toolbar:MockContactToolbarActionItem'], 'admin_contact_edit_toolbar_button': ['shuup.testing.modules.mocker.toolbar:MockContactToolbarButton'], 'admin_shop_edit_toolbar_button': ['shuup.testing.modules.mocker.toolbar:MockShopToolbarButton'], 'admin_product_toolbar_action_item': ['shuup.testing.modules.mocker.toolbar:MockProductToolbarActionItem'], 'admin_contact_section': ['shuup.testing.modules.mocker.sections:MockContactSection'], 'importers': ['shuup.testing.importers.DummyImporter', 'shuup.testing.importers.DummyFileImporter'], 'xtheme': ['shuup.testing.themes:ShuupTestingTheme', 'shuup.testing.themes:ShuupTestingThemeWithCustomBase'], 'pricing_module': ['shuup.testing.supplier_pricing.pricing:SupplierPricingModule']}
ready()[source]