def test_export_csv_columns(lecture_an, amendements_an, tmpdir): from zam_repondeur.services.import_export.csv import export_csv filename = str(tmpdir.join("test.csv")) counter = export_csv(lecture_an, filename, request={}) assert counter["amendements"] == 2 with Path(filename).open(encoding="utf-8-sig") as csv_file: reader = csv.reader(csv_file, delimiter=";") headers = next(reader) assert headers == [ "Num article", "Titre article", "Num amdt", "Rectif", "Parent (sous-amdt)", "Auteur", "Groupe", "Gouvernemental", "Corps amdt", "Exposé amdt", "Identique", "Avis du Gouvernement", "Objet amdt", "Réponse", "Commentaires", "Affectation (email)", "Affectation (nom)", "Affectation (boite)", "Sort", ]
def test_export_csv_with_parent(lecture_an, article1_an, tmpdir): from zam_repondeur.models import Amendement, DBSession from zam_repondeur.services.import_export.csv import export_csv filename = str(tmpdir.join("test.csv")) amendements = [ Amendement.create( lecture=lecture_an, article=article1_an, num=num, position=position, avis="Favorable", objet="Un objet très pertinent", reponse="Une réponse très appropriée", comments="Avec des commentaires", ) for position, num in enumerate((333, 777), 1) ] amendements[1].parent = amendements[0] DBSession.add_all(amendements) DBSession.add(lecture_an) counter = export_csv(lecture_an, filename, request={}) assert counter["amendements"] == 2 with Path(filename).open(encoding="utf-8-sig") as csv_file: reader = csv.DictReader(csv_file, delimiter=";") amendement1 = next(reader) assert amendement1["Parent (sous-amdt)"] == "" amendement2 = next(reader) assert amendement2["Parent (sous-amdt)"] == "333"
def test_post_form_from_export(app, lecture_an, lecture_an_url, article1_an, tmpdir, user_david): from zam_repondeur.models import Amendement, DBSession from zam_repondeur.services.import_export.csv import export_csv filename = str(tmpdir.join("test.csv")) with transaction.manager: amendements = [ Amendement.create( lecture=lecture_an, article=article1_an, num=num, position=position, avis="Favorable", objet="Un objet très pertinent", reponse="Une réponse très appropriée", comments="Avec des commentaires", ) for position, num in enumerate((333, 777), 1) ] counter = export_csv(lecture_an, filename, request={}) assert counter["amendements"] == 2 with transaction.manager: amendements[0].user_content.avis = None amendements[1].user_content.avis = None form = app.get("/dossiers/plfss-2018/lectures/an.15.269.PO717460/options/", user=user_david).forms["import-form"] form["reponses"] = Upload("file.csv", Path(filename).read_bytes()) 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 assert "2 réponse(s) chargée(s) avec succès" in resp.text amendement = DBSession.query(Amendement).filter( Amendement.num == 333).first() assert amendement.user_content.avis == "Favorable" amendement = DBSession.query(Amendement).filter( Amendement.num == 777).first() assert amendement.user_content.avis == "Favorable"