passerelle/tests/test_solis_apa.py

148 lines
6.9 KiB
Python

import os
import json
from decimal import Decimal
import mock
import pytest
from django.core.urlresolvers import reverse
from django.contrib.contenttypes.models import ContentType
from passerelle.base.models import ApiUser, AccessRight
from passerelle.contrib.solis_apa.models import SolisAPA
from passerelle.contrib.solis_apa import integration
TEST_BASE_DIR = os.path.join(os.path.dirname(__file__), 'data', 'solis_apa')
def json_get_data(filename):
with open(os.path.join(TEST_BASE_DIR, filename)) as fd:
return json.load(fd)
@pytest.fixture
def setup(db):
api = ApiUser.objects.create(username='all',
keytype='', key='')
solis = SolisAPA.objects.create(base_url='https://whateever.com/rec/',
slug='test')
obj_type = ContentType.objects.get_for_model(solis)
AccessRight.objects.create(codename='can_access', apiuser=api,
resource_type=obj_type, resource_pk=solis.pk)
@pytest.fixture
def url():
def get_url(name):
return reverse('solis-apa-%s' % name, kwargs={'slug': 'test'})
return get_url
@pytest.fixture(params=[
json_get_data('premiere_demande_apa_domicile.json'),
json_get_data('premiere_demande_apa_etablissement.json'),
json_get_data('premiere_demande_apa_etablissement_papier.json')])
def formdata(request):
return request.param
@mock.patch('passerelle.utils.Request.post')
def test_instegration_demande_apa_domicile(mocked_post, setup, app, url):
fake_response = '{"ImportIdResults":{"Items":[{"key":"indexDossier","value":359043},{"key":"indexBeneficiaire","value":458238},{"key":"indexDemande","value":221155}]}}'
mocked_post.return_value = mock.Mock(status_code=200, content=fake_response,
json=lambda: json.loads(fake_response))
resp = app.post_json(url('integration'),
params=json_get_data('premiere_demande_apa_domicile.json'), status=200)
resp.json['data']['indexDossier'] == 359043
resp.json['data']['indexBeneficiaire'] == 458238
resp.json['data']['indexDemande'] == 221155
@mock.patch('passerelle.utils.Request.post')
def test_integration_demande_apa_etablissement(mocked_post, setup, app, url):
fake_response = '{"ImportIdResults":{"Items":[{"key":"indexDossier","value":359043},{"key":"indexBeneficiaire","value":458238},{"key":"indexDemande","value":221155}]}}'
mocked_post.return_value = mock.Mock(status_code=200, content=fake_response,
json=lambda: json.loads(fake_response))
resp = app.post_json(url('integration'),
params=json_get_data('premiere_demande_apa_etablissement.json'), status=200)
resp.json['data']['indexDossier'] == 359043
resp.json['data']['indexBeneficiaire'] == 458238
resp.json['data']['indexDemande'] == 221155
def test_get_conjoint(setup, url, formdata):
data = integration.build_message(formdata)
if formdata['display_id'] == '25-3':
assert data['Conjoint']['indexIndividu'] == '458107'
assert data['Conjoint']['bParticipeRevenus'] is False
assert data['Conjoint']['dateNaissance'] == '1930-06-11'
assert data['Conjoint']['nom'] == 'MCBEAL'
assert data['Conjoint']['prenom'] == 'ALLY'
assert data['Conjoint']['sexe'] == 'F'
assert data['Conjoint']['situationFamiliale'] == 2
assert data['RevenusImposition']['anneeReference'] == 2015
assert Decimal(data['RevenusImposition']['revenuReference']) == Decimal(30000.0)
elif formdata['display_id'] == '32-1':
assert 'Conjoint' not in data
assert data['RevenusImposition']['anneeReference'] == 2015
assert Decimal(data['RevenusImposition']['revenuReference']) == Decimal(32000.0)
else:
assert 'Conjoint' not in data
assert data['RevenusImposition']['anneeReference'] == 2016
assert Decimal(data['RevenusImposition']['revenuReference']) == Decimal(1500)
def test_recipient_address(setup, formdata):
data = integration.build_message(formdata)
if formdata['display_id'] == '25-3':
# received values
assert formdata['workflow']['data']['adresse_var_code_commune'] == '14000 CAEN'
assert formdata['workflow']['data']['adresse_var_code_commune_raw'] == 'commune-14-118'
assert formdata['workflow']['data']['adresse_var_code_lieu'] == 'AVENUE DU PARC BELLEVUE'
assert formdata['workflow']['data']['adresse_var_code_lieu_raw'] == '0867'
assert formdata['workflow']['data']['adresse_var_num_lieu'] == '1'
assert formdata['fields']['code_commune'] == '14000 CAEN'
assert formdata['fields']['code_commune_raw'] == 'commune-14-118'
# built values
assert data['Beneficiaire']['Adresse']['codeCommune'] == 118
assert data['Beneficiaire']['Adresse']['codeDepartement'] == 14
assert data['Beneficiaire']['Adresse']['codeLieu'] == '0867'
assert data['Beneficiaire']['Adresse']['numeroLieu'] == '1'
elif formdata['display_id'] == '32-1':
# received values
assert formdata['workflow']['data']['adresse_var_code_commune'] == '14930 ETERVILLE'
assert formdata['workflow']['data']['adresse_var_code_commune_raw'] == 'commune-14-254'
assert formdata['workflow']['data']['adresse_var_code_lieu'] == 'RUE DU JARDIN DE LA FERME'
assert formdata['workflow']['data']['adresse_var_code_lieu_raw'] == 'Z001'
assert formdata['workflow']['data']['adresse_var_num_lieu'] == '1'
assert formdata['fields']['code_commune'] == '14930 ETERVILLE'
assert formdata['fields']['code_commune_raw'] == 'commune-14-254'
# built values
assert data['Beneficiaire']['Adresse']['codeCommune'] == 254
assert data['Beneficiaire']['Adresse']['codeDepartement'] == 14
assert data['Beneficiaire']['Adresse']['codeLieu'] == 'Z001'
assert data['Beneficiaire']['Adresse']['numeroLieu'] == '1'
else:
# received values
formdata['fields']['papier_code_commune'] == '33370 FARGUES ST HILAIRE'
formdata['fields']['papier_code_commune_raw'] == 'commune-33-165'
formdata['fields']['papier_code_lieu'] == 'ROUTE DE MAISON ROUGE'
formdata['fields']['papier_code_lieu_raw'] == '0001'
formdata['fields']['papier_excode_commune'] == '14150 OUISTREHAM'
formdata['fields']['papier_excode_commune_raw'] == 'commune-14-488'
formdata['fields']['papier_excode_lieu'] == 'RUE DU PETIT BONHEUR'
formdata['fields']['papier_excode_lieu_raw'] == '0730'
formdata['fields']['papier_exnum_lieu'] == '2'
formdata['fields']['papier_num_lieu'] == '20'
# built values
assert data['Beneficiaire']['Adresse']['codeCommune'] == 488
assert data['Beneficiaire']['Adresse']['codeDepartement'] == 14
assert data['Beneficiaire']['Adresse']['codeLieu'] == '0730'
assert data['Beneficiaire']['Adresse']['numeroLieu'] == '2'