def test_upload_liasse_with_table( app, lecture_essoc2018_an_nouvelle_lecture_commission_fond, user_david): from zam_repondeur.models import Lecture resp = app.get( "/dossiers/etat-service-societe-confiance/lectures/an.15.806.PO744107/options", user=user_david, ) form = resp.forms["import-liasse-xml"] form["liasse"] = Upload( "liasse.xml", (SAMPLE_DATA / "liasse_with_table.xml").read_bytes()) resp = form.submit() assert resp.status_code == 302 assert resp.location == ("https://zam.test/" "dossiers/etat-service-societe-confiance/" "lectures/an.15.806.PO744107/" "amendements/") resp = resp.follow() assert "3 nouveaux amendements récupérés (import liasse XML)." in resp.text lecture = Lecture.get_by_pk( lecture_essoc2018_an_nouvelle_lecture_commission_fond.pk) assert ("<table>\n<tbody>\n<tr>\n<td>Durée minimale de services" in lecture.amendements[1].corps) assert ("<table>\n<tbody>\n<tr>\n<td>Durée minimale de services" in lecture.amendements[0].expose)
def test_upload_liasse_success( app, lecture_essoc2018_an_nouvelle_lecture_commission_fond, user_david): from zam_repondeur.models import DBSession, Lecture with transaction.manager: DBSession.add(user_david) resp = app.get( "/dossiers/etat-service-societe-confiance/lectures/an.15.806.PO744107/options", user=user_david, ) form = resp.forms["import-liasse-xml"] form["liasse"] = Upload("liasse.xml", (SAMPLE_DATA / "liasse.xml").read_bytes()) resp = form.submit() assert resp.status_code == 302 assert resp.location == ("https://zam.test/" "dossiers/etat-service-societe-confiance/" "lectures/an.15.806.PO744107/" "amendements/") resp = resp.follow() assert "3 nouveaux amendements récupérés (import liasse XML)." in resp.text lecture = Lecture.get_by_pk( lecture_essoc2018_an_nouvelle_lecture_commission_fond.pk) assert lecture.events[0].render_summary() == ( "<abbr title='*****@*****.**'>David</abbr> a importé " "une liasse XML : 3 nouveaux amendements récupérés.")
def test_upload_liasse_missing_file( app, lecture_essoc2018_an_nouvelle_lecture_commission_fond, user_david): from zam_repondeur.models import Lecture resp = app.get( "/dossiers/etat-service-societe-confiance/lectures/an.15.806.PO744107/options", user=user_david, ) form = resp.forms["import-liasse-xml"] resp = form.submit() assert resp.status_code == 302 assert resp.location == ("https://zam.test/" "dossiers/etat-service-societe-confiance/" "lectures/an.15.806.PO744107/" "options") resp = resp.follow() assert "Veuillez d’abord sélectionner un fichier" in resp.text # Check the update timestamp has NOT been updated. lecture = Lecture.get_by_pk( lecture_essoc2018_an_nouvelle_lecture_commission_fond.pk) assert lecture.events == []
def test_post_shared_tables_create_form(app, lecture_an, amendements_an, user_david): from zam_repondeur.models import DBSession, Lecture, SharedTable with transaction.manager: DBSession.add(user_david) resp = app.get( "/dossiers/plfss-2018/lectures/an.15.269.PO717460/boites/add", user=user_david) form = resp.forms["box-upsert"] form["titre"] = "Test table" resp = form.submit() assert resp.status_code == 302 assert resp.location == ("https://zam.test" "/dossiers/plfss-2018" "/lectures/an.15.269.PO717460" "/options#shared-tables") resp = resp.follow() assert resp.status_code == 200 assert "Test table" in resp.text shared_table = (DBSession.query(SharedTable).filter( SharedTable.titre == "Test table").one()) assert shared_table.slug == "test-table" assert shared_table.lecture.pk == lecture_an.pk # A dedicated event should be created. lecture_an = Lecture.get_by_pk(lecture_an.pk) # refresh object assert len(lecture_an.events) == 1 assert lecture_an.events[0].render_summary() == ( "<abbr title='*****@*****.**'>David</abbr> " "a créé la boîte « Test table »")
def test_post_form(app, lecture_an, lecture_an_url, article1_an, user_david): from zam_repondeur.models import Amendement, DBSession, Lecture # Initially, we only have one amendement (#135), with a response with transaction.manager: DBSession.add(lecture_an) lecture_an.texte.date_depot = datetime.utcnow().date() - timedelta( days=5) Amendement.create(lecture=lecture_an, article=article1_an, num=135, position=1) assert lecture_an.events == [] # No progress status by default. assert lecture_an.get_fetch_progress() == {} with setup_mock_responses( lecture=lecture_an, liste=read_sample_data("an/269/liste.xml"), amendements=( ("177", read_sample_data("an/269/177.xml")), ("270", read_sample_data("an/269/270.xml")), ("723", read_sample_data("an/269/723.xml")), ("135", read_sample_data("an/269/135.xml")), ("192", read_sample_data("an/269/192.xml")), ), ): # Then we ask for a refresh form = app.get( "/dossiers/plfss-2018/lectures/an.15.269.PO717460/journal/", user=user_david).forms["manual-refresh"] resp = form.submit() assert resp.status_code == 302 assert resp.location == f"https://zam.test{lecture_an_url}/amendements/" resp = resp.follow() assert resp.status_code == 200 lecture_an = Lecture.get_by_pk(lecture_an.pk) # refresh object events = lecture_an.events assert len(events) == 1 assert events[0].render_summary() == "4 nouveaux amendements récupérés." assert "Rafraîchissement des amendements en cours." in resp.text # Default progress status for dummy progress bar is set. assert lecture_an.get_fetch_progress() == {"current": 1, "total": 10} # If we fetch again the journal, the refresh button is not present anymore. resp = app.get("/dossiers/plfss-2018/lectures/an.15.269.PO717460/journal/", user=user_david) assert resp.status_code == 200 assert "manual-refresh" not in resp.forms
def test_upload_adds_an_event(self, app, lecture_an, filename, user_david): from zam_repondeur.models import Lecture from zam_repondeur.models.events.lecture import ReponsesImportees self._upload_csv(app, filename, user=user_david) lecture = Lecture.get_by_pk(lecture_an.pk) # refresh object events = {type(event): event for event in lecture.events} assert ReponsesImportees in events