Exemple #1
0
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)
Exemple #2
0
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.")
Exemple #3
0
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 == []
Exemple #4
0
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 »")
Exemple #5
0
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
Exemple #6
0
    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