Exemplo n.º 1
0
def test_personform_get_or_create(d):
    form = PersonForm(d)
    form.full_clean()
    result0 = form.get_or_create()

    Fixture('./src/person/tests/test_personform.json',
            models=[Person]).assertNoDiff()

    # Second call should not create a new instance
    result1 = form.get_or_create()
    assert result0 == result1
    Fixture('person/tests/test_personform.json',
            models=[Person]).assertNoDiff()
Exemplo n.º 2
0
def test_mrsrequestcreateview_post_save_integration(p, caisse):
    data = dict(mrsrequest_uuid=p.mrsrequest.id)
    data['caisse'] = caisse.pk
    data['date_depart'] = '2017-02-02'
    data['date_return'] = '2017-02-02'
    data['1-date_depart'] = '2017-01-02'
    data['1-date_return'] = '2017-01-02'
    data['distance'] = '100'
    data['expense'] = '10'
    data['first_name'] = 'jamesy'
    data['last_name'] = 'wuzere'
    data['birth_date'] = '2007-02-07'
    data['email'] = '*****@*****.**'
    data['nir'] = '1234567890123'

    # da key
    data['certify'] = True

    PMT.objects.create(
        mrsrequest_uuid=p.mrsrequest.id,
        filename='test_mrsrequestcreateview_story.jpg',
        binary=b'test_mrsrequestcreateview_story',
    )
    Bill.objects.create(
        mrsrequest_uuid=p.mrsrequest.id,
        filename='test_mrsrequestcreateview_story.jpg',
        binary=b'test_mrsrequestcreateview_story',
    )

    p.post(**data)

    Fixture(
        './src/mrsrequest/tests/test_mrsrequestcreateview.json',  # noqa
        models=[MRSAttachment, MRSRequest, PMT, Person, Bill, Transport]
    ).assertNoDiff()
Exemplo n.º 3
0
def test_stat_update():
    Fixture('mrs/tests/data.json').load()
    req = MRSRequest.objects.get(display_id=201805020002)
    assert req, 'MRSRequest with saving required for this test !'
    MRSRequest.objects.filter(pk=req.pk).update(saving=None)
    req.refresh_from_db()
    assert req.saving is None

    stat_update_person(Person, instance=req.insured)
    req.refresh_from_db()
    assert f'{req.saving}' == '8.83'

    stats = Stat.objects.filter(
        date=req.status_datetime.date(),
        caisse__in=(req.caisse, None),
    )
    for stat in stats:
        assert str(stat.savings) == '8.83'

    req.distancevp *= 2
    req.save()
    req.refresh_from_db()
    assert f'{req.saving}' == '16.20'

    # test that it refreshed stats !
    update_stat_for_mrsrequest(pk=req.pk)

    stats = Stat.objects.filter(
        date=req.status_datetime.date(),
        caisse__in=(req.caisse, None),
    )
    for stat in stats:
        assert str(stat.savings) == '16.20'
 def test_single_city(self):
     """Load single city."""
     fixture_dir = FixtureDir('import')
     self.import_data(fixture_dir, 'angouleme_country', 'angouleme_region',
                      'angouleme_subregion', 'angouleme_city',
                      'angouleme_translations')
     Fixture(fixture_dir.get_file_path('angouleme.json')).assertNoDiff()
Exemplo n.º 5
0
def person_transport_formset():
    Fixture('./src/mrs/tests/data.json').load()
    person = Person.objects.get(pk=4)
    formset = TransportFormSet({
        # base new one, should not have duplicate errors
        'transport-0-date_depart': '2018-05-01',
        'transport-0-date_return': '2018-05-02',
        # this one should not raise any error
        'transport-1-date_depart': '2018-06-01',
        'transport-1-date_return': '2018-06-02',
        # this should be detected as duplicate of transport-0
        'transport-2-date_depart': '2018-05-01',
        'transport-2-date_return': '2018-05-02',
        # this depart should be detected as dupe of return-0
        'transport-3-date_depart': '2018-05-02',
        'transport-3-date_return': '2018-05-07',
        # this return should be detected as dupe of depart-0
        'transport-4-date_depart': '2018-04-02',
        'transport-4-date_return': '2018-05-01',
        'iterative_number': '5',
    })

    formset.full_clean()  # make cleaned_data

    for form in formset.forms:
        # let's keep a copy of those for assertions
        form.cleaned_data_copy = copy.copy(form.cleaned_data)

    return person, formset
def test_mrsfiledownloadview_admins(groups, request_factory, caisse, upload):
    Fixture('./src/mrs/tests/data.json').load()

    mrsrequest = MRSRequest(caisse=caisse)
    mrsrequest.pmt = PMT.objects.create(
        mrsrequest_uuid=mrsrequest.id,
        filename='test_mrsrequestcreateview_story.jpg',
        attachment_file=upload)
    mrsrequest.save()
    mrsrequest.save_pmt()

    user = User(username='******')
    user.set_password('secret')
    user.save()
    user.add_groups(groups)
    user.caisses.add(caisse)

    client = Client(user=user)
    client.login(username='******', password='******')
    response = client.get(mrsrequest.pmt.get_download_url())
    assert response.status_code == 200

    user.caisses.remove(caisse)
    response = client.get(mrsrequest.pmt.get_download_url())
    assert response.status_code == 404
Exemplo n.º 7
0
def test_progress_validate_success(mailoutbox, ur, mrsrequest):
    request = ur('post', caisse=mrsrequest.caisse)
    view('progress')(request, pk=mrsrequest.pk)
    with pytest.raises(http.Http404):
        view('progress')(request, pk=mrsrequest.pk)

    # test in_status_by
    result = list(MRSRequest.objects.all().in_status_by(
        'inprogress', request.user))
    assert len(result) == 1
    assert str(result[0].pk) == str(mrsrequest.pk)

    response = view('validate')(request, pk=mrsrequest.pk)
    assert response['Location'] == mrsrequest.get_absolute_url()

    assert mrsrequest.caisse.liquidation_email in mailoutbox[0].reply_to
    assert len(mailoutbox[0].reply_to) == 1

    Fixture(
        './src/mrsrequest/tests/test_mrsrequest_admin_progress_validate.json',  # noqa
        models=[MRSRequest, MRSRequestLogEntry]).assertNoDiff()

    for v in ('progress', 'reject', 'validate'):
        with pytest.raises(http.Http404):
            view(v)(request, pk=mrsrequest.pk)
Exemplo n.º 8
0
def test_mrsrequestcreateview_modevp_post_save_integration(p, caisse):
    data = form_data(mrsrequest_uuid=p.mrsrequest.id, caisse=caisse.pk)

    p.post(**data)

    Fixture('./src/mrsrequest/tests/test_mrsrequestcreateview_modevp.json',
            models=[MRSAttachment, MRSRequest, PMT, Person, Bill,
                    Transport]).assertNoDiff()
Exemplo n.º 9
0
def test_mrsrequestcreateview_vote(p, caisse, other_caisse):
    data = dict(mrsrequest_uuid=p.mrsrequest.id)
    data['caisse'] = 'other'
    data['other-caisse'] = other_caisse.pk
    p.post(**data)
    Fixture(
        './src/mrsrequest/tests/test_mrsrequestcreateview_caisse.json',  # noqa
        models=[Caisse, MRSRequest, Email]).assertNoDiff()
Exemplo n.º 10
0
def test_mrsrequest_duplicates_transport():
    Fixture('./src/mrs/tests/data.json').load()
    req = MRSRequest.objects.get(display_id=201805030001)
    assert req.duplicates_by_transport == {
        MRSRequest.objects.get(display_id=201805020001):
        [datetime.date(2018, 5, 1)],
        MRSRequest.objects.get(display_id=201805030000):
        [datetime.date(2018, 5, 1)]
    }
Exemplo n.º 11
0
    def test_mrsstat(self):
        Stat.objects.create_missing()

        for m in MRSRequest.objects.all():
            update_stat_for_mrsrequest(pk=m.pk)
            m.save()

        Fixture('mrsstat/tests/test_mrsstat.json',
                models=[Stat]).assertNoDiff()
Exemplo n.º 12
0
    def test_add_records(self):
        """Test that new records are added."""
        fixture_dir = FixtureDir('update')

        self.import_data(fixture_dir, 'initial_country', 'initial_region',
                         'initial_city', 'initial_translations')

        self.import_data(fixture_dir, 'add_country', 'add_region', 'add_city',
                         'add_translations')

        Fixture(fixture_dir.get_file_path('add_records.json')).assertNoDiff()
 def test_load_fixture(self):
     """Test loaded fixture matches database content."""
     destination = 'cities_light/tests/fixtures/angouleme.json'
     with mock.patch.object(Downloader, 'download') as mock_func:
         cmd = Command()
         cmd.load_fixture(source='/abcdefg.json',
                          destination=destination,
                          force=True)
         Fixture(destination).assertNoDiff()
         mock_func.assert_called_with(source='/abcdefg.json',
                                      destination=destination,
                                      force=True)
Exemplo n.º 14
0
 def test_load_fixture(self):
     """Test loaded fixture matches database content."""
     destination = FixtureDir('import').get_file_path('angouleme.json')
     with mock.patch.object(Downloader, 'download') as mock_func:
         cmd = Command()
         cmd.load_fixture(source='/abcdefg.json',
                          destination=destination,
                          force=True)
         Fixture(destination).assertNoDiff()
         mock_func.assert_called_with(source='/abcdefg.json',
                                      destination=destination,
                                      force=True)
Exemplo n.º 15
0
    def test_city_wrong_timezone(self):
        """Load single city with wrong timezone."""
        fixture_dir = FixtureDir('import')
        self.import_data(fixture_dir, 'angouleme_country', 'angouleme_region',
                         'angouleme_subregion', 'angouleme_city_wtz',
                         'angouleme_translations')
        Fixture(fixture_dir.get_file_path('angouleme_wtz.json')).assertNoDiff()

        from ..loading import get_cities_model
        city_model = get_cities_model('City')
        cities = city_model.objects.all()
        for city in cities:
            print(city.get_timezone_info().zone)
Exemplo n.º 16
0
    def test_remove_records(self):
        """Test that obsolete records are removed."""
        fixture_dir = FixtureDir('update')

        self.import_data(fixture_dir, 'remove_initial_country',
                         'remove_initial_region', 'remove_initial_city',
                         'remove_initial_translations')

        self.import_data(fixture_dir, 'remove_country', 'remove_region',
                         'remove_city', 'remove_translations')

        Fixture(
            fixture_dir.get_file_path('remove_records.json')).assertNoDiff()
Exemplo n.º 17
0
def test_personform_twins_get_or_create(d, s):
    # We first make a call for jamesy
    form = PersonForm(d)
    form.full_clean()
    result0 = form.get_or_create()

    # Second call should create a new instance,
    # since seb is another person
    form = PersonForm(s)
    form.full_clean()
    result1 = form.get_or_create()
    assert result0 != result1
    Fixture('person/tests/test_personform_twins.json',
            models=[Person]).assertNoDiff()
Exemplo n.º 18
0
    def test_keep_slugs(self):
        """Test --keep-slugs option."""
        fixture_dir = FixtureDir('update')

        self.import_data(fixture_dir, 'initial_country', 'initial_region',
                         'initial_city', 'initial_translations')

        self.import_data(fixture_dir,
                         'update_country',
                         'update_region',
                         'update_city',
                         'update_translations',
                         keep_slugs=True)

        Fixture(fixture_dir.get_file_path('keep_slugs.json'), ).assertNoDiff()
Exemplo n.º 19
0
    def test_noinsert(self):
        """Test --noinsert option."""
        fixture_dir = FixtureDir('update')

        self.import_data(fixture_dir, 'initial_country', 'initial_region',
                         'initial_city', 'initial_translations')

        self.import_data(fixture_dir,
                         'add_country',
                         'add_region',
                         'add_city',
                         'add_translations',
                         noinsert=True)

        Fixture(fixture_dir.get_file_path('noinsert.json'), ).assertNoDiff()
Exemplo n.º 20
0
def test_monthly_mail(mailoutbox, django_assert_num_queries):
    Fixture('./src/mrs/tests/data.json').load()
    with django_assert_num_queries(5):
        monthly_mail()

    assert mailoutbox[0].attachments[0][0] == '2018-7-stats.csv'
    assert mailoutbox[0].attachments[0][
        1] == 'caisse;id;nir;naissance;transport;mandatement;base;montant;bascule;finess;adeli\n111;201805020000;3212312312312;06/05/2000;26/03/2018;;;;;;'  # noqa
    assert mailoutbox[0].attachments[0][2] == 'text/csv'

    assert mailoutbox[1].attachments[0][0] == '2018-7-stats.csv'
    assert mailoutbox[1].attachments[0][
        1] == 'caisse;id;nir;naissance;transport;mandatement;base;montant;bascule;finess;adeli\n222;201805010001;2333333333333;30/04/2000;29/04/2018;;;;;;\n222;201805030000;1223123123123;29/05/2000;01/05/2018;;;;;;\n222;201805030001;1223123123123;29/05/2000;01/04/2018;;;;;;'  # noqa
    assert mailoutbox[1].attachments[0][2] == 'text/csv'

    assert len(mailoutbox) == 2
Exemplo n.º 21
0
    def test_update_fields(self):
        """Test all fields are updated."""
        fixture_dir = FixtureDir('update')

        self.import_data(fixture_dir, 'initial_country', 'initial_region',
                         'initial_city', 'initial_translations')

        self.import_data(
            fixture_dir,
            'update_country',
            'update_region',
            'update_city',
            'update_translations',
        )

        Fixture(fixture_dir.get_file_path('update_fields.json')).assertNoDiff()
Exemplo n.º 22
0
    def test_single_city_zip(self):
        """Load single city."""
        filelist = glob.glob(os.path.join(DATA_DIR, "angouleme_*.txt"))
        for f in filelist:
            os.remove(f)

        fixture_dir = FixtureDir('import_zip')
        self.import_data(fixture_dir,
                         'angouleme_country',
                         'angouleme_region',
                         'angouleme_subregion',
                         'angouleme_city',
                         'angouleme_translations',
                         file_type="zip")
        Fixture(FixtureDir('import').get_file_path(
            'angouleme.json')).assertNoDiff()
Exemplo n.º 23
0
def test_mrsrequestcreateview_post_save_integration(p, finess,
                                                    institution_uuid, caisse):

    data = dict(mrsrequest_uuid=p.mrsrequest.id)
    data['caisse'] = caisse.pk
    data['trip_kind'] = 'return'
    data['iterative_number'] = 2
    data['transport-0-date_depart'] = '2017-02-02'
    data['transport-0-date_return'] = '2017-02-02'
    data['transport-1-date_depart'] = '2017-01-02'
    data['transport-1-date_return'] = '2017-01-02'
    data['distancevp'] = '100'
    data['expensevp_toll'] = '10'
    data['modevp'] = 'modevp'
    data['first_name'] = 'jamesy'
    data['last_name'] = 'wuzere'
    data['birth_date'] = '2007-02-07'
    data['email'] = '*****@*****.**'
    data['use_email'] = False
    data['nir'] = '1234567890123'
    data['pmt_pel'] = 'pmt'

    # da key
    data['certify'] = True

    PMT.objects.create(
        mrsrequest_uuid=p.mrsrequest.id,
        filename='test_institutionmrsrequestcreateview_story.jpg',
        binary=b'test_institutionmrsrequestcreateview_story',
    )
    Bill.objects.create(
        mrsrequest_uuid=p.mrsrequest.id,
        filename='test_institutionmrsrequestcreateview_story.jpg',
        binary=b'test_institutionmrsrequestcreateview_story',
    )

    Institution.objects.create(finess=finess, id=institution_uuid, origin='o')
    p.view_class = InstitutionMRSRequestCreateView
    p.view_kwargs = {'finess': finess}
    p.url = reverse('institution:mrsrequest_iframe', args=[finess])
    p.post(**data)
    assert not p.view.form_errors()

    Fixture(
        './src/institution/tests/test_mrsrequest_iframe.json',  # noqa
        models=[MRSAttachment, MRSRequest, PMT, Person, Bill,
                Transport]).assertNoDiff()
Exemplo n.º 24
0
    def test_update_fields_wrong_timezone(self):
        """Test all fields are updated, but timezone field is wrong."""
        fixture_dir = FixtureDir('update')

        self.import_data(fixture_dir, 'initial_country', 'initial_region',
                         'initial_city', 'initial_translations')

        self.import_data(
            fixture_dir,
            'update_country',
            'update_region',
            'update_city_wtz',
            'update_translations',
        )

        Fixture(fixture_dir.get_file_path(
            'update_fields_wtz.json')).assertNoDiff()
Exemplo n.º 25
0
    def test_change_region_and_country(self):
        """Test change region and country."""
        fixture_dir = FixtureDir('update')

        self.import_data(fixture_dir, 'initial_country', 'initial_region',
                         'initial_city', 'initial_translations')

        self.import_data(
            fixture_dir,
            'change_country',
            'change_region',
            'update_city',
            'update_translations',
        )

        Fixture(fixture_dir.get_file_path(
            'change_region_and_country.json')).assertNoDiff()
Exemplo n.º 26
0
def test_mrsrequestcreateview_modeatp_post_save_integration(p, caisse):
    data = form_data(mrsrequest_uuid=p.mrsrequest.id, caisse=caisse.pk)
    data['expensevp_toll'] = ''
    data['expenseatp'] = '10'
    data['modevp'] = ''
    data['modeatp'] = 'modeatp'
    BillATP.objects.create(
        mrsrequest_uuid=data['mrsrequest_uuid'],
        filename='test_mrsrequestcreateview_story.jpg',
        binary=b'test_mrsrequestcreateview_story',
    )

    p.post(**data)

    Fixture('./src/mrsrequest/tests/test_mrsrequestcreateview_modeatp.json',
            models=[MRSAttachment, MRSRequest, PMT, Person, Bill,
                    Transport]).assertNoDiff()
Exemplo n.º 27
0
def test_form_save_m2m(monkeypatch, person, caisse):
    mrsrequest_uuid = '6bf490e6-4521-458a-adfe-8d4ef5a64687'

    monkeypatch.setattr(
        'mrsattachment.models.MRSAttachment.get_upload_body',
        lambda upload: upload.read()
    )

    with io.BytesIO(b'test_mrsattachmentform0') as f:
        f.name = 'test_mrsattachmentform0.jpg'
        f.content_type = 'image/jpg'
        PMT.objects.record_upload(mrsrequest_uuid, f)

    with io.BytesIO(b'test_mrsattachmentform1') as f:
        f.name = 'test_mrsattachmentform1.jpg'
        f.content_type = 'image/jpg'
        Bill.objects.record_upload(mrsrequest_uuid, f)

    data = dict(mrsrequest_uuid=[mrsrequest_uuid])
    data['caisse'] = [caisse.pk]
    data['date_depart'] = ['2017-02-02']
    data['date_return'] = ['2017-02-02']
    data['distance'] = ['100']
    data['expense'] = ['10']
    data['insured'] = [str(person.pk)]

    # If this test method goes wrong about the uuid, make sure its not
    # lost during ctor
    form = MRSRequestAdminForm(data)

    # Emulate what djang admin loves to do
    form.full_clean()
    assert not form.non_field_errors()
    assert not form.errors
    assert form.is_valid()

    obj = form.save(commit=False)
    obj.save()
    form.save_m2m()

    Fixture(
        './src/mrsrequest/tests/test_mrsrequest_form.json',  # noqa
        models=[MRSAttachment, MRSRequest, PMT, Person, Bill, Transport]
    ).assertNoDiff()
 def test_dump_fixture(self):
     """
     Test dump_fixture calls dumpdata management command
     and tries to save it to file."""
     # Load test data
     call_command('loaddata', 'cities_light/tests/fixtures/angouleme.json')
     # Dump
     try:
         fixture_path = 'cities_light/tests/fixtures/test_dump_fixture.json'
         cmd = Command()
         cmd.dump_fixture('cities_light.City', fixture_path)
         with bz2.BZ2File(fixture_path, mode='r') as bzfile:
             data = bzfile.read()
         with open(fixture_path, mode='wb') as file:
             file.write(data)
         Fixture(fixture_path, models=[City]).assertNoDiff()
     finally:
         if os.path.exists(fixture_path):
             os.remove(fixture_path)
Exemplo n.º 29
0
def test_progress_reject_success(ur, mrsrequest, emailtemplate):
    request = ur('post', caisse=mrsrequest.caisse)
    view('progress')(request, pk=mrsrequest.pk)
    with pytest.raises(http.Http404):
        view('progress')(request, pk=mrsrequest.pk)

    request.POST = dict(
        template=emailtemplate.pk,
        subject='reject {}'.format(mrsrequest.pk),
        body='reject body {}'.format(mrsrequest.pk),
    )
    response = view('reject')(request, pk=mrsrequest.pk)
    assert response['Location'] == mrsrequest.get_absolute_url()

    Fixture(
        './src/mrsrequest/tests/test_mrsrequest_admin_progress_reject.json',  # noqa
        models=[MRSRequest, MRSRequestLogEntry]).assertNoDiff()

    for v in ('progress', 'reject', 'validate'):
        with pytest.raises(http.Http404):
            view(v)(request, pk=mrsrequest.pk)
Exemplo n.º 30
0
 def test_dump_fixture(self):
     """
     Test dump_fixture calls dumpdata management command
     and tries to save it to file."""
     # Load test data
     destination = FixtureDir('import').get_file_path('angouleme.json')
     call_command('loaddata', destination)
     # Dump
     try:
         fixture_path = os.path.join(os.path.dirname(__file__), "fixtures",
                                     "test_dump_fixture.json")
         cmd = Command()
         cmd.dump_fixture('cities_light.City', fixture_path)
         with bz2.BZ2File(fixture_path, mode='r') as bzfile:
             data = bzfile.read()
         with open(fixture_path, mode='wb') as file:
             file.write(data)
         Fixture(fixture_path, models=[City]).assertNoDiff()
     finally:
         if os.path.exists(fixture_path):
             os.remove(fixture_path)