diff --git a/passerelle/contrib/rsa13/models.py b/passerelle/contrib/rsa13/models.py index 08489f8c..b296a990 100644 --- a/passerelle/contrib/rsa13/models.py +++ b/passerelle/contrib/rsa13/models.py @@ -65,10 +65,17 @@ def dump_csv_columns(columns): class RSA13Form(GenericConnectorForm): def __init__(self, *args, **kwargs): - kwargs['initial'] = {} - for name in RSA13Resource.CSV_EXPORTS: - field = f'{name}_csv_columns' - kwargs['initial'][field] = dump_csv_columns(DEFAULTS[field]) + instance = kwargs.get('instance') + if instance is None: + kwargs['initial'] = {} + for name in RSA13Resource.CSV_EXPORTS: + field = f'{name}_csv_columns' + kwargs['initial'][field] = dump_csv_columns(DEFAULTS[field]) + else: + for name in RSA13Resource.CSV_EXPORTS: + field = f'{name}_csv_columns' + if not getattr(instance, field): + setattr(instance, field, dump_csv_columns(DEFAULTS[field])) super().__init__(*args, **kwargs) diff --git a/tests/conftest.py b/tests/conftest.py index e18c58f8..7a9291ee 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -200,12 +200,12 @@ def clear_cache(): @pytest.fixture -def simple_user(): +def simple_user(db): return User.objects.create_user('user', password='user') @pytest.fixture -def admin_user(): +def admin_user(db): return User.objects.create_superuser('admin', email=None, password='admin') diff --git a/tests/test_rsa13.py b/tests/test_rsa13.py index 583be95c..f9bcf684 100644 --- a/tests/test_rsa13.py +++ b/tests/test_rsa13.py @@ -26,7 +26,9 @@ from django.db import connection from django.db.migrations.executor import MigrationExecutor import tests.utils -from passerelle.contrib.rsa13.models import RSA13Resource +from passerelle.contrib.rsa13.models import DEFAULTS, RSA13Resource, dump_csv_columns + +from .test_manager import login @pytest.fixture @@ -1405,3 +1407,33 @@ def test_csv_columns_migration(transactional_db, settings): assert resource.beneficiaire_csv_columns == 'A 2\nB' assert resource.facturation_csv_columns == 'C\nD' assert resource.sorti_csv_columns == 'E\nF' + + +def test_manager(app, admin_user): + app = login(app) + resp = app.get('/manage/') + resp = resp.click('Add Connector') + resp = resp.click('RSA CD13') + resp.forms[0]['title'] = 'Test Connector' + resp.forms[0]['slug'] = 'test-connector' + resp.forms[0]['description'] = 'Connector for a simple test' + resp.forms[0]['webservice_base_url'] = 'https://example.com/' + resp = resp.forms[0].submit().follow() + assert 'Test Connector' in resp.text + + instance = RSA13Resource.objects.get() + for key, value in DEFAULTS.items(): + assert getattr(instance, key) == dump_csv_columns(value) + + resp = resp.click('Edit') + resp.form.set('beneficiaire_csv_columns', 'NUM_CAF') + resp.form.set('facturation_csv_columns', 'MATRICULE') + resp.form.set('sorti_csv_columns', 'NUM_CAF') + resp = resp.form.submit().follow() + instance = RSA13Resource.objects.get() + for key in DEFAULTS: + assert getattr(instance, key) in ['NUM_CAF', 'MATRICULE'] + + resp = resp.click('Edit') + for key in DEFAULTS: + assert resp.form[key].value in ['NUM_CAF', 'MATRICULE']