Projet

Général

Profil

0001-agendas-add-tests-on-queryset-for-agenda-settings-43.patch

Lauréline Guérin, 02 juin 2020 10:08

Télécharger (5,27 ko)

Voir les différences:

Subject: [PATCH 1/2] agendas: add tests on queryset for agenda settings
 (#43516)

 tests/test_agendas.py | 64 +++++++++++++++++++++++++++++++++++++++++++
 tests/test_manager.py | 36 ++++++++++++++++++++++++
 2 files changed, 100 insertions(+)
tests/test_agendas.py
708 708
    assert common_timeperiod.end_time == datetime.time(18, 0)
709 709

  
710 710

  
711
def test_desk_exceptions_within_two_weeks():
712
    agenda = Agenda.objects.create(label='Agenda', kind='meetings')
713
    desk = Desk.objects.create(agenda=agenda, label='Desk')
714

  
715
    # no exception
716
    assert list(desk.get_exceptions_within_two_weeks()) == []
717

  
718
    # exception ends in the past
719
    exception = TimePeriodException.objects.create(
720
        desk=desk,
721
        start_datetime=now() - datetime.timedelta(days=2),
722
        end_datetime=now() - datetime.timedelta(days=1),
723
    )
724
    assert list(desk.get_exceptions_within_two_weeks()) == []
725

  
726
    # exception ends in the future - 14 days
727
    exception.end_datetime = now() + datetime.timedelta(days=10)
728
    # but starts in the past
729
    exception.start_datetime = now() - datetime.timedelta(days=2)
730
    exception.save()
731
    assert list(desk.get_exceptions_within_two_weeks()) == [exception]
732

  
733
    # exception ends in the future - 14 days
734
    exception.end_datetime = now() + datetime.timedelta(days=10)
735
    # but starts in the future
736
    exception.start_datetime = now() + datetime.timedelta(days=2)
737
    exception.save()
738
    assert list(desk.get_exceptions_within_two_weeks()) == [exception]
739

  
740
    # exception ends in the future + 14 days
741
    exception.end_datetime = now() + datetime.timedelta(days=20)
742
    # but starts in the past
743
    exception.start_datetime = now() - datetime.timedelta(days=2)
744
    exception.save()
745
    assert list(desk.get_exceptions_within_two_weeks()) == [exception]
746

  
747
    # create another one, very far way from now
748
    exception2 = TimePeriodException.objects.create(
749
        desk=desk,
750
        start_datetime=now() + datetime.timedelta(days=200),
751
        end_datetime=now() + datetime.timedelta(days=201),
752
    )
753

  
754
    # exception ends in the future + 14 days
755
    exception.end_datetime = now() + datetime.timedelta(days=20)
756
    # but starts in the future - 14 days
757
    exception.start_datetime = now() + datetime.timedelta(days=2)
758
    exception.save()
759
    assert list(desk.get_exceptions_within_two_weeks()) == [exception]
760

  
761
    # exception ends in the future + 14 days
762
    exception.end_datetime = now() + datetime.timedelta(days=20)
763
    # but starts in the future + 14 days
764
    exception.start_datetime = now() + datetime.timedelta(days=21)
765
    exception.save()
766
    assert list(desk.get_exceptions_within_two_weeks()) == [exception]
767

  
768
    # exception in the past
769
    exception.end_datetime = now() - datetime.timedelta(days=20)
770
    exception.start_datetime = now() - datetime.timedelta(days=21)
771
    exception.save()
772
    assert list(desk.get_exceptions_within_two_weeks()) == [exception2]
773

  
774

  
711 775
def test_desk_duplicate():
712 776
    agenda = Agenda.objects.create(label='Agenda')
713 777
    desk = Desk.objects.create(label='Desk', agenda=agenda)
tests/test_manager.py
283 283
    assert '<h2>Settings' in resp.text
284 284

  
285 285

  
286
def test_options_meetings_agenda_num_queries(app, admin_user):
287
    agenda = Agenda.objects.create(label='Agenda', kind='meetings')
288
    for i in range(0, 10):
289
        MeetingType.objects.create(agenda=agenda, label='MT %s' % i)
290
        desk = Desk.objects.create(agenda=agenda, label='Desk %s' % i)
291
        for weekday in (0, 6):
292
            TimePeriod.objects.create(
293
                weekday=weekday, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
294
            )
295
        # exception starts and ends in the past
296
        TimePeriodException.objects.create(
297
            desk=desk,
298
            start_datetime=now() - datetime.timedelta(days=2),
299
            end_datetime=now() - datetime.timedelta(days=1),
300
        )
301
        if i % 2:
302
            # exception starts in the past but ends in the futur
303
            TimePeriodException.objects.create(
304
                desk=desk,
305
                start_datetime=now() - datetime.timedelta(days=1),
306
                end_datetime=now() + datetime.timedelta(days=1),
307
            )
308
        else:
309
            # exception in more than 2 weeks
310
            TimePeriodException.objects.create(
311
                desk=desk,
312
                start_datetime=now() + datetime.timedelta(days=20),
313
                end_datetime=now() + datetime.timedelta(days=21),
314
            )
315

  
316
    app = login(app)
317
    with CaptureQueriesContext(connection) as ctx:
318
        app.get('/manage/agendas/%s/settings' % agenda.pk)
319
        assert len(ctx.captured_queries) == 77
320

  
321

  
286 322
def test_delete_agenda(app, admin_user):
287 323
    agenda = Agenda(label=u'Foo bar')
288 324
    agenda.save()
289
-