misc: speed up import/export tests
This commit is contained in:
parent
3f1ae0d037
commit
1ca2d08677
|
@ -15,7 +15,7 @@ import pytest
|
|||
from django.contrib.auth.models import Group
|
||||
from django.core.management import call_command, CommandError
|
||||
from django.utils.encoding import force_bytes
|
||||
from django.utils.timezone import make_aware
|
||||
from django.utils.timezone import make_aware, now
|
||||
|
||||
from chrono.agendas.models import (
|
||||
Agenda,
|
||||
|
@ -30,8 +30,6 @@ from chrono.agendas.models import (
|
|||
)
|
||||
from chrono.manager.utils import import_site
|
||||
|
||||
from test_api import some_data, meetings_agenda, time_zone, mock_now
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
|
@ -43,16 +41,21 @@ def get_output_of_command(command, *args, **kwargs):
|
|||
return output.getvalue()
|
||||
|
||||
|
||||
def test_import_export(app, some_data, meetings_agenda):
|
||||
first_event = Agenda.objects.get(label='Foo bar').event_set.first()
|
||||
def test_import_export(app):
|
||||
agenda_events = Agenda.objects.create(label='Events Agenda', kind='events')
|
||||
first_event = Event.objects.create(
|
||||
agenda=agenda_events, start_datetime=make_aware(datetime.datetime(2020, 7, 21, 16, 42, 35)), places=10
|
||||
)
|
||||
agenda_meetings = Agenda.objects.create(label='Meetings Agenda', kind='meetings')
|
||||
MeetingType.objects.create(agenda=agenda_meetings, label='Meeting Type', duration=30)
|
||||
desk = Desk.objects.create(agenda=agenda_meetings, label='Desk')
|
||||
|
||||
# add exception to meeting agenda
|
||||
desk = meetings_agenda.desk_set.first()
|
||||
tpx_start = make_aware(datetime.datetime(2017, 5, 22, 8, 0))
|
||||
tpx_end = make_aware(datetime.datetime(2017, 5, 22, 12, 30))
|
||||
TimePeriodException.objects.create(desk=desk, start_datetime=tpx_start, end_datetime=tpx_end)
|
||||
output = get_output_of_command('export_site')
|
||||
assert len(json.loads(output)['agendas']) == 3
|
||||
assert len(json.loads(output)['agendas']) == 2
|
||||
import_site(data={}, clean=True)
|
||||
empty_output = get_output_of_command('export_site')
|
||||
assert len(json.loads(empty_output)['agendas']) == 0
|
||||
|
@ -72,15 +75,15 @@ def test_import_export(app, some_data, meetings_agenda):
|
|||
f.flush()
|
||||
call_command('import_site', f.name)
|
||||
|
||||
assert Agenda.objects.count() == 3
|
||||
first_imported_event = Agenda.objects.get(label='Foo bar').event_set.first()
|
||||
assert Agenda.objects.count() == 2
|
||||
first_imported_event = Agenda.objects.get(label='Events Agenda').event_set.first()
|
||||
assert first_imported_event.start_datetime == first_event.start_datetime
|
||||
assert TimePeriodException.objects.get().start_datetime == tpx_start
|
||||
assert TimePeriodException.objects.get().end_datetime == tpx_end
|
||||
|
||||
agenda1 = Agenda.objects.get(label=u'Foo bar')
|
||||
agenda2 = Agenda.objects.get(label=u'Foo bar Meeting')
|
||||
event = Event(agenda=agenda1, start_datetime=make_aware(datetime.datetime.now()), places=10)
|
||||
agenda1 = Agenda.objects.get(label='Events Agenda')
|
||||
agenda2 = Agenda.objects.get(label='Meetings Agenda')
|
||||
event = Event(agenda=agenda1, start_datetime=now(), places=10)
|
||||
event.save()
|
||||
desk, _ = Desk.objects.get_or_create(agenda=agenda2, label='Desk A', slug='desk-a')
|
||||
timeperiod = TimePeriod(
|
||||
|
@ -100,7 +103,7 @@ def test_import_export(app, some_data, meetings_agenda):
|
|||
assert TimePeriod.objects.filter(id=timeperiod.id).count() == 0
|
||||
assert TimePeriodException.objects.filter(id=exception.id).count() == 0
|
||||
|
||||
event = Event(agenda=agenda1, start_datetime=make_aware(datetime.datetime.now()), places=10)
|
||||
event = Event(agenda=agenda1, start_datetime=now(), places=10)
|
||||
event.save()
|
||||
desk, _ = Desk.objects.get_or_create(agenda=agenda2, label='Desk A', slug='desk-a')
|
||||
timeperiod = TimePeriod(
|
||||
|
@ -119,7 +122,7 @@ def test_import_export(app, some_data, meetings_agenda):
|
|||
assert TimePeriodException.objects.filter(id=exception.id).count() == 1
|
||||
|
||||
import_site(data={}, if_empty=True)
|
||||
assert Agenda.objects.count() == 3
|
||||
assert Agenda.objects.count() == 2
|
||||
|
||||
import_site(data={}, clean=True)
|
||||
tempdir = tempfile.mkdtemp('chrono-test')
|
||||
|
@ -128,16 +131,20 @@ def test_import_export(app, some_data, meetings_agenda):
|
|||
shutil.rmtree(tempdir)
|
||||
|
||||
|
||||
def test_import_export_event_details(app, some_data, meetings_agenda):
|
||||
first_event = Agenda.objects.get(label='Foo bar').event_set.first()
|
||||
first_event.description = 'description'
|
||||
first_event.pricing = '100'
|
||||
first_event.url = 'https://example.net/'
|
||||
first_event.publication_date = datetime.date(2020, 5, 11)
|
||||
first_event.save()
|
||||
def test_import_export_event_details(app):
|
||||
agenda = Agenda.objects.create(label='Foo Bar', kind='events')
|
||||
Event.objects.create(
|
||||
agenda=agenda,
|
||||
description='description',
|
||||
pricing='100',
|
||||
url='https://example.net/',
|
||||
publication_date=datetime.date(2020, 5, 11),
|
||||
places=42,
|
||||
start_datetime=now(),
|
||||
)
|
||||
|
||||
output = get_output_of_command('export_site')
|
||||
assert len(json.loads(output)['agendas']) == 3
|
||||
assert len(json.loads(output)['agendas']) == 1
|
||||
import_site(data={}, clean=True)
|
||||
|
||||
with tempfile.NamedTemporaryFile() as f:
|
||||
|
@ -145,25 +152,23 @@ def test_import_export_event_details(app, some_data, meetings_agenda):
|
|||
f.flush()
|
||||
call_command('import_site', f.name)
|
||||
|
||||
assert Agenda.objects.count() == 3
|
||||
first_imported_event = Agenda.objects.get(label='Foo bar').event_set.first()
|
||||
assert Agenda.objects.count() == 1
|
||||
first_imported_event = Agenda.objects.get(label='Foo Bar').event_set.first()
|
||||
assert first_imported_event.description == 'description'
|
||||
assert first_imported_event.pricing == '100'
|
||||
assert first_imported_event.url == 'https://example.net/'
|
||||
assert first_imported_event.publication_date == datetime.date(2020, 5, 11)
|
||||
|
||||
|
||||
def test_import_export_permissions(app, some_data, meetings_agenda):
|
||||
group1 = Group(name=u'gé1')
|
||||
group1.save()
|
||||
group2 = Group(name=u'gé2')
|
||||
group2.save()
|
||||
|
||||
def test_import_export_permissions(app):
|
||||
meetings_agenda = Agenda.objects.create(label='Foo Bar', kind='meetings')
|
||||
group1 = Group.objects.create(name=u'gé1')
|
||||
group2 = Group.objects.create(name=u'gé2')
|
||||
meetings_agenda.view_role = group1
|
||||
meetings_agenda.edit_role = group2
|
||||
meetings_agenda.save()
|
||||
output = get_output_of_command('export_site')
|
||||
assert len(json.loads(output)['agendas']) == 3
|
||||
assert len(json.loads(output)['agendas']) == 1
|
||||
import_site(data={}, clean=True)
|
||||
assert Agenda.objects.count() == 0
|
||||
Group.objects.all().delete()
|
||||
|
@ -194,7 +199,8 @@ def test_import_export_permissions(app, some_data, meetings_agenda):
|
|||
assert agenda.edit_role == group2
|
||||
|
||||
|
||||
def test_import_export_resources(app, some_data, meetings_agenda):
|
||||
def test_import_export_resources(app):
|
||||
meetings_agenda = Agenda.objects.create(label='Foo Bar', kind='meetings')
|
||||
resource = Resource.objects.create(label='foo')
|
||||
meetings_agenda.resources.add(resource)
|
||||
output = get_output_of_command('export_site')
|
||||
|
@ -321,7 +327,18 @@ def test_import_export_virtual_agenda_with_missing_agenda(app):
|
|||
assert 'The real agenda "foo" does not exist.' in '%s' % excinfo.value
|
||||
|
||||
|
||||
def test_import_export_desk_missing_fields(app, meetings_agenda):
|
||||
def test_import_export_desk_missing_fields(app):
|
||||
meetings_agenda = Agenda.objects.create(label='Foo Bar', kind='meetings')
|
||||
MeetingType.objects.create(agenda=meetings_agenda, label='Meeting Type', duration=30)
|
||||
desk = Desk.objects.create(agenda=meetings_agenda, label='Desk')
|
||||
TimePeriod.objects.create(
|
||||
desk=desk, weekday=2, start_time=datetime.time(10, 0), end_time=datetime.time(11, 0)
|
||||
)
|
||||
TimePeriodException.objects.create(
|
||||
desk=desk,
|
||||
start_datetime=make_aware(datetime.datetime(2017, 5, 22, 8, 0)),
|
||||
end_datetime=make_aware(datetime.datetime(2017, 5, 22, 12, 30)),
|
||||
)
|
||||
output = get_output_of_command('export_site')
|
||||
payload = json.loads(output)
|
||||
del payload['agendas'][0]['desks'][0]['timeperiods']
|
||||
|
@ -332,21 +349,20 @@ def test_import_export_desk_missing_fields(app, meetings_agenda):
|
|||
assert TimePeriodException.objects.exists() is False
|
||||
|
||||
|
||||
def test_import_export_desk_unknown_fields(app, some_data, meetings_agenda):
|
||||
# add exception to meeting agenda
|
||||
def test_import_export_desk_unknown_fields(app):
|
||||
events_agenda = Agenda.objects.create(label='Events Agenda', kind='events')
|
||||
Event.objects.create(agenda=events_agenda, start_datetime=now(), places=10)
|
||||
meetings_agenda = Agenda.objects.create(label='Meetings Agenda', kind='meetings')
|
||||
MeetingType.objects.create(agenda=meetings_agenda, label='Meeting Type', duration=30)
|
||||
Desk.objects.create(agenda=meetings_agenda, label='Desk')
|
||||
desk = meetings_agenda.desk_set.first()
|
||||
tpx_start = make_aware(datetime.datetime(2017, 5, 22, 8, 0))
|
||||
tpx_end = make_aware(datetime.datetime(2017, 5, 22, 12, 30))
|
||||
TimePeriodException.objects.create(desk=desk, start_datetime=tpx_start, end_datetime=tpx_end)
|
||||
# add permissions
|
||||
group1 = Group.objects.create(name=u'group1')
|
||||
group2 = Group.objects.create(name=u'group2')
|
||||
meetings_agenda.view_role = group1
|
||||
meetings_agenda.edit_role = group2
|
||||
meetings_agenda.save()
|
||||
# add event
|
||||
Event.objects.create(
|
||||
agenda=meetings_agenda, start_datetime=make_aware(datetime.datetime.now()), places=10
|
||||
TimePeriod.objects.create(
|
||||
desk=desk, weekday=2, start_time=datetime.time(10, 0), end_time=datetime.time(11, 0)
|
||||
)
|
||||
TimePeriodException.objects.create(
|
||||
desk=desk,
|
||||
start_datetime=make_aware(datetime.datetime(2017, 5, 22, 8, 0)),
|
||||
end_datetime=make_aware(datetime.datetime(2017, 5, 22, 12, 30)),
|
||||
)
|
||||
|
||||
output = get_output_of_command('export_site')
|
||||
|
@ -360,16 +376,13 @@ def test_import_export_desk_unknown_fields(app, some_data, meetings_agenda):
|
|||
assert TimePeriodException.objects.exists() is False
|
||||
|
||||
# add unknown fields everywhere
|
||||
for agenda in payload['agendas']:
|
||||
agenda['unknown_field'] = 'foobar'
|
||||
if 'meetingtypes' in agenda:
|
||||
agenda['meetingtypes'][0]['unknown_field'] = 'foobar'
|
||||
if 'desks' in agenda:
|
||||
agenda['desks'][0]['unknown_field'] = 'foobar'
|
||||
agenda['desks'][0]['timeperiods'][0]['unknown_field'] = 'foobar'
|
||||
agenda['desks'][0]['exceptions'][0]['unknown_field'] = 'foobar'
|
||||
if 'events' in agenda:
|
||||
agenda['events'][0]['unknown_field'] = 'foobar'
|
||||
payload['agendas'][0]['unknown_field'] = 'foobar'
|
||||
payload['agendas'][0]['events'][0]['unknown_field'] = 'foobar'
|
||||
payload['agendas'][1]['unknown_field'] = 'foobar'
|
||||
payload['agendas'][1]['meetingtypes'][0]['unknown_field'] = 'foobar'
|
||||
payload['agendas'][1]['desks'][0]['unknown_field'] = 'foobar'
|
||||
payload['agendas'][1]['desks'][0]['timeperiods'][0]['unknown_field'] = 'foobar'
|
||||
payload['agendas'][1]['desks'][0]['exceptions'][0]['unknown_field'] = 'foobar'
|
||||
|
||||
import_site(payload)
|
||||
assert Agenda.objects.exists() is True
|
||||
|
@ -381,7 +394,7 @@ def test_import_export_desk_unknown_fields(app, some_data, meetings_agenda):
|
|||
|
||||
def test_import_export_slug_fields(app):
|
||||
agenda_events = Agenda.objects.create(label='Events Agenda', kind='events')
|
||||
Event.objects.create(agenda=agenda_events, start_datetime=make_aware(datetime.datetime.now()), places=10)
|
||||
Event.objects.create(agenda=agenda_events, start_datetime=now(), places=10)
|
||||
agenda_meetings = Agenda.objects.create(label='Meetings Agenda', kind='meetings')
|
||||
MeetingType.objects.create(agenda=agenda_meetings, label='Meeting Type', duration=30)
|
||||
Desk.objects.create(agenda=agenda_meetings, label='Desk')
|
||||
|
|
Loading…
Reference in New Issue