barbacompta/tests/conftest.py

49 lines
1.7 KiB
Python

# barbacompta - invoicing for dummies
# Copyright (C) 2019-2020 Entr'ouvert
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import django_webtest
import pytest
from django.contrib.auth.models import User
from django.core.management import call_command
DATA = ["tests/fixture.json"]
@pytest.fixture(scope="session")
def django_db_setup(django_db_setup, django_db_blocker, django_db_keepdb, django_db_createdb):
with django_db_blocker.unblock():
if not django_db_keepdb or django_db_createdb or User.objects.count() == 0:
for data in DATA:
call_command("loaddata", data)
admin, _ = User.objects.update_or_create(
username="admin",
defaults=dict(email="admin@example.com", is_superuser=True, is_staff=True),
)
admin.set_password("admin")
admin.save()
yield
@pytest.fixture
def app(db, freezer):
freezer.move_to("2019-01-01")
wtm = django_webtest.WebTestMixin()
wtm._patch_settings()
try:
return django_webtest.DjangoTestApp(extra_environ={"HTTP_HOST": "localhost"})
finally:
wtm._unpatch_settings()