Created
September 15, 2021 09:47
-
-
Save rj76/c1f254dfda2e0ec9bdcb069cb2f2fe67 to your computer and use it in GitHub Desktop.
pytest tenant fixtures
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pytest | |
from django.core.management import call_command | |
from django_tenants.utils import get_public_schema_name | |
from apps.core import test_mixins as mixins | |
from apps.core.nmbrs import NmbrsEmployee, NmbrsCompany | |
from apps.member import models as member_models | |
from apps.member.tests import factories as member_factories | |
def get_or_create(companycode): | |
try: | |
member = member_models.Member.objects.get(companycode=companycode) | |
member.tenant = member.tenants.all()[0] | |
member.settings = None | |
member.check_settings() | |
except member_models.Member.DoesNotExist: | |
member = member_factories.MemberFactory.create(companycode=companycode) | |
member.check_settings() | |
member.create_tenants() | |
call_command('migrate_schemas', | |
schema_name=get_public_schema_name(), | |
interactive=False, | |
verbosity=0) | |
member.tenant = member.tenants.all()[0] | |
return member | |
@pytest.fixture(scope='session') | |
def django_db_setup(django_db_setup, django_db_blocker): | |
with django_db_blocker.unblock(): | |
get_or_create('companycode1') | |
get_or_create('companycode2') | |
get_or_create('companycode3') | |
@pytest.fixture | |
def member1(): | |
return get_or_create('companycode1') | |
@pytest.fixture | |
def client1(member1): | |
return mixins.My24ApiClient(member1.tenant) | |
@pytest.fixture | |
def member2(): | |
return get_or_create('companycode2') | |
@pytest.fixture | |
def client2(member2): | |
return mixins.My24ApiClient(member2.tenant) | |
@pytest.fixture | |
def member3(): | |
return get_or_create('companycode3') | |
@pytest.fixture | |
def client3(member3): | |
return mixins.My24ApiClient(member3.tenant) | |
@pytest.fixture | |
def nmbrs_employee(): | |
return NmbrsEmployee('companycode1') | |
@pytest.fixture | |
def nmbrs_company(): | |
return NmbrsCompany() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment