def test_dossier_pacte_ferroviaire(dossier_pacte_ferroviaire, textes):
    from zam_repondeur.fetch.an.dossiers.dossiers_legislatifs import parse_dossier

    dossier = parse_dossier(dossier_pacte_ferroviaire, textes)

    assert dossier.uid == "DLR5L15N36460"
    assert len(dossier.lectures) > 4
def test_parse_dossier_plfss_2018(dossier_plfss_2018, textes):
    from zam_repondeur.fetch.an.dossiers.dossiers_legislatifs import parse_dossier
    from zam_repondeur.fetch.an.dossiers.models import (
        Chambre,
        Lecture,
        Texte,
        TypeTexte,
    )

    dossier = parse_dossier(dossier_plfss_2018, textes)

    assert dossier.uid == "DLR5L15N36030"
    assert dossier.titre == "Sécurité sociale : loi de financement 2018"
    assert dossier.lectures == [
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie au fond",
            texte=Texte(
                uid="PRJLANR5L15B0269",
                type_=TypeTexte.PROJET,
                numero=269,
                titre_long=
                "projet de loi de financement de la sécurité sociale pour 2018",  # noqa
                titre_court="PLFSS pour 2018",
                date_depot=datetime.date(2017, 10, 11),
            ),
            organe="PO420120",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=Texte(
                uid="PRJLANR5L15B0269",
                type_=TypeTexte.PROJET,
                numero=269,
                titre_long=
                "projet de loi de financement de la sécurité sociale pour 2018",  # noqa
                titre_court="PLFSS pour 2018",
                date_depot=datetime.date(2017, 10, 11),
            ),
            organe="PO59048",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Séance publique",
            texte=Texte(
                uid="PRJLANR5L15B0269",
                type_=TypeTexte.PROJET,
                numero=269,
                titre_long=
                "projet de loi de financement de la sécurité sociale pour 2018",  # noqa
                titre_court="PLFSS pour 2018",
                date_depot=datetime.date(2017, 10, 11),
            ),
            organe="PO717460",
        ),
        Lecture(
            chambre=Chambre.SENAT,
            titre="Première lecture – Commission saisie au fond",
            texte=Texte(
                uid="PRJLSNR5S299B0063",
                type_=TypeTexte.PROJET,
                numero=63,
                titre_long=
                "projet de loi de financement de la sécurité sociale pour 2018",  # noqa
                titre_court="PLFSS pour 2018",
                date_depot=datetime.date(2017, 11, 6),
            ),
            organe="PO211493",
        ),
        Lecture(
            chambre=Chambre.SENAT,
            titre="Première lecture – Commission saisie pour avis",
            texte=Texte(
                uid="PRJLSNR5S299B0063",
                type_=TypeTexte.PROJET,
                numero=63,
                titre_long=
                "projet de loi de financement de la sécurité sociale pour 2018",  # noqa
                titre_court="PLFSS pour 2018",
                date_depot=datetime.date(2017, 11, 6),
            ),
            organe="PO211494",
        ),
        Lecture(
            chambre=Chambre.SENAT,
            titre="Première lecture – Séance publique",
            texte=Texte(
                uid="PRJLSNR5S299B0063",
                type_=TypeTexte.PROJET,
                numero=63,
                titre_long=
                "projet de loi de financement de la sécurité sociale pour 2018",  # noqa
                titre_court="PLFSS pour 2018",
                date_depot=datetime.date(2017, 11, 6),
            ),
            organe="PO78718",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Nouvelle lecture – Commission saisie au fond",
            texte=Texte(
                uid="PRJLANR5L15B0387",
                type_=TypeTexte.PROJET,
                numero=387,
                titre_long=
                "projet de loi de financement de la sécurité sociale pour 2018",  # noqa
                titre_court="PLFSS pour 2018",
                date_depot=datetime.date(2017, 11, 21),
            ),
            organe="PO420120",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Nouvelle lecture – Séance publique",
            texte=Texte(
                uid="PRJLANR5L15B0387",
                type_=TypeTexte.PROJET,
                numero=387,
                titre_long=
                "projet de loi de financement de la sécurité sociale pour 2018",  # noqa
                titre_court="PLFSS pour 2018",
                date_depot=datetime.date(2017, 11, 21),
            ),
            organe="PO717460",
        ),
        Lecture(
            chambre=Chambre.SENAT,
            titre="Nouvelle lecture – Commission saisie au fond",
            texte=Texte(
                uid="PRJLSNR5S299B0121",
                type_=TypeTexte.PROJET,
                numero=121,
                titre_long=
                "projet de loi de financement de la sécurité sociale pour 2018",  # noqa
                titre_court="PLFSS pour 2018",
                date_depot=datetime.date(2017, 11, 30),
            ),
            organe="PO211493",
        ),
        Lecture(
            chambre=Chambre.SENAT,
            titre="Nouvelle lecture – Séance publique",
            texte=Texte(
                uid="PRJLSNR5S299B0121",
                type_=TypeTexte.PROJET,
                numero=121,
                titre_long=
                "projet de loi de financement de la sécurité sociale pour 2018",  # noqa
                titre_court="PLFSS pour 2018",
                date_depot=datetime.date(2017, 11, 30),
            ),
            organe="PO78718",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Lecture définitive – Commission saisie au fond",
            texte=Texte(
                uid="PRJLANR5L15B0434",
                type_=TypeTexte.PROJET,
                numero=434,
                titre_long=
                "projet de loi de financement de la sécurité sociale pour 2018",  # noqa
                titre_court="PLFSS pour 2018",
                date_depot=datetime.date(2017, 12, 1),
            ),
            organe="PO420120",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Lecture définitive – Séance publique",
            texte=Texte(
                uid="PRJLANR5L15B0434",
                type_=TypeTexte.PROJET,
                numero=434,
                titre_long=
                "projet de loi de financement de la sécurité sociale pour 2018",  # noqa
                titre_court="PLFSS pour 2018",
                date_depot=datetime.date(2017, 12, 1),
            ),
            organe="PO717460",
        ),
    ]
def test_parse_dossier_essoc(dossier_essoc, textes):
    from zam_repondeur.fetch.an.dossiers.dossiers_legislatifs import parse_dossier
    from zam_repondeur.fetch.an.dossiers.models import (
        Chambre,
        Lecture,
        Dossier,
        Texte,
        TypeTexte,
    )

    dossier = parse_dossier(dossier_essoc, textes)

    assert dossier == Dossier(
        uid="DLR5L15N36159",
        titre=
        "Fonction publique : un Etat au service d'une société de confiance",
        lectures=[
            Lecture(
                chambre=Chambre.AN,
                titre="Première lecture – Commission saisie au fond",
                texte=Texte(
                    uid="PRJLANR5L15B0424",
                    type_=TypeTexte.PROJET,
                    numero=424,
                    titre_long=
                    "projet de loi pour un Etat au service d’une société de confiance",  # noqa
                    titre_court="Etat service société de confiance",
                    date_depot=datetime.date(2017, 11, 27),
                ),
                organe="PO744107",
            ),
            Lecture(
                chambre=Chambre.AN,
                titre="Première lecture – Séance publique",
                texte=Texte(
                    uid="PRJLANR5L15BTC0575",
                    type_=TypeTexte.PROJET,
                    numero=575,
                    titre_long=
                    "projet de loi sur le projet de loi, après engagement de la procédure accélérée, pour un Etat au service d’une société de confiance (n°424).",  # noqa
                    titre_court="Etat service société de confiance",
                    date_depot=datetime.date(2018, 1, 18),
                ),
                organe="PO717460",
            ),
            Lecture(
                chambre=Chambre.SENAT,
                titre="Première lecture – Commission saisie au fond",
                texte=Texte(
                    uid="PRJLSNR5S299B0259",
                    type_=TypeTexte.PROJET,
                    numero=259,
                    titre_long=
                    "projet de loi pour un Etat au service d'une société de confiance",  # noqa
                    titre_court="État au service d'une société de confiance",
                    date_depot=datetime.date(2018, 1, 31),
                ),
                organe="PO748821",
            ),
            Lecture(
                chambre=Chambre.SENAT,
                titre="Première lecture – Séance publique",
                texte=Texte(
                    uid="PRJLSNR5S299BTC0330",
                    type_=TypeTexte.PROJET,
                    numero=330,
                    titre_long=
                    "projet de loi  sur le projet de loi, adopté, par l'Assemblée nationale après engagement de la procédure accélérée, pour un Etat au service d'une société de confiance (n°259).",  # noqa
                    titre_court="État au service d'une société de confiance",
                    date_depot=datetime.date(2018, 2, 22),
                ),
                organe="PO78718",
            ),
            Lecture(
                chambre=Chambre.AN,
                titre="Nouvelle lecture – Commission saisie au fond",
                texte=Texte(
                    uid="PRJLANR5L15B0806",
                    type_=TypeTexte.PROJET,
                    numero=806,
                    titre_long=
                    "projet de loi renforçant l'efficacité de l'administration pour une relation de confiance avec le public",  # noqa
                    titre_court=
                    "Renforcement de l'efficacité de l'administration pour une relation de confiance avec le public",  # noqa
                    date_depot=datetime.date(2018, 3, 21),
                ),
                organe="PO744107",
            ),
            Lecture(
                chambre=Chambre.AN,
                titre="Nouvelle lecture – Séance publique",
                texte=Texte(
                    uid="PRJLANR5L15BTC1056",
                    type_=TypeTexte.PROJET,
                    numero=1056,
                    titre_long=
                    "projet de loi , en nouvelle lecture, sur le projet de loi, modifié par le Sénat, renforçant l'efficacité de l'administration pour une relation de confiance avec le public (n°806).",  # noqa
                    titre_court=
                    "Renforcement de l'efficacité de l'administration pour une relation de confiance avec le public",  # noqa
                    date_depot=datetime.date(2018, 6, 13),
                ),
                organe="PO717460",
            ),
        ],
    )
def test_parse_dossier_plf_2018(dossier_plf_2018, textes):
    from zam_repondeur.fetch.an.dossiers.dossiers_legislatifs import parse_dossier
    from zam_repondeur.fetch.an.dossiers.models import (
        Chambre,
        Lecture,
        Texte,
        TypeTexte,
    )

    dossier = parse_dossier(dossier_plf_2018, textes)

    assert dossier.uid == "DLR5L15N35854"
    assert dossier.titre == "Budget : loi de finances 2018"
    texte_235 = Texte(
        uid="PRJLANR5L15B0235",
        type_=TypeTexte.PROJET,
        chambre=Chambre.AN,
        legislature=15,
        numero=235,
        titre_long="projet de loi de finances pour 2018",
        titre_court="PLF pour 2018",
        date_depot=datetime.date(2017, 9, 27),
    )
    texte_107 = Texte(
        uid="PRJLSNR5S299B0107",
        type_=TypeTexte.PROJET,
        chambre=Chambre.SENAT,
        legislature=None,
        numero=107,
        titre_long="projet de loi de finances pour 2018",
        titre_court="PLF pour 2018",
        date_depot=datetime.date(2017, 11, 23),
    )
    texte_485 = Texte(
        uid="PRJLANR5L15B0485",
        type_=TypeTexte.PROJET,
        chambre=Chambre.AN,
        legislature=15,
        numero=485,
        titre_long="projet de loi de finances pour 2018",
        titre_court="PLF pour 2018",
        date_depot=datetime.date(2017, 12, 12),
    )
    texte_172 = Texte(
        uid="PRJLSNR5S299B0172",
        type_=TypeTexte.PROJET,
        chambre=Chambre.SENAT,
        legislature=None,
        numero=172,
        titre_long="projet de loi de finances pour 2018",
        titre_court="PLF pour 2018",
        date_depot=datetime.date(2017, 12, 18),
    )
    texte_506 = Texte(
        uid="PRJLANR5L15B0506",
        type_=TypeTexte.PROJET,
        chambre=Chambre.AN,
        legislature=15,
        numero=506,
        titre_long="projet de loi de finances pour 2018",
        titre_court="PLF pour 2018",
        date_depot=datetime.date(2017, 12, 19),
    )
    assert dossier.lectures == [
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie au fond",
            texte=texte_235,
            partie=1,
            organe="PO59048",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie au fond",
            texte=texte_235,
            partie=2,
            organe="PO59048",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=1,
            organe="PO420120",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=2,
            organe="PO420120",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=1,
            organe="PO419604",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=2,
            organe="PO419604",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=1,
            organe="PO419610",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=2,
            organe="PO419610",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=1,
            organe="PO59047",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=2,
            organe="PO59047",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=1,
            organe="PO59046",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=2,
            organe="PO59046",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=1,
            organe="PO59051",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=2,
            organe="PO59051",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=1,
            organe="PO419865",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Commission saisie pour avis",
            texte=texte_235,
            partie=2,
            organe="PO419865",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Séance publique",
            texte=texte_235,
            partie=1,
            organe="PO717460",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Première lecture – Séance publique",
            texte=texte_235,
            partie=2,
            organe="PO717460",
        ),
        Lecture(
            chambre=Chambre.SENAT,
            titre="Première lecture – Commission saisie au fond",
            texte=texte_107,
            partie=1,
            organe="PO211494",
        ),
        Lecture(
            chambre=Chambre.SENAT,
            titre="Première lecture – Commission saisie au fond",
            texte=texte_107,
            partie=2,
            organe="PO211494",
        ),
        Lecture(
            chambre=Chambre.SENAT,
            titre="Première lecture – Séance publique",
            texte=texte_107,
            partie=1,
            organe="PO78718",
        ),
        Lecture(
            chambre=Chambre.SENAT,
            titre="Première lecture – Séance publique",
            texte=texte_107,
            partie=2,
            organe="PO78718",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Nouvelle lecture – Commission saisie au fond",
            texte=texte_485,
            organe="PO59048",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Nouvelle lecture – Séance publique",
            texte=texte_485,
            organe="PO717460",
        ),
        Lecture(
            chambre=Chambre.SENAT,
            titre="Nouvelle lecture – Commission saisie au fond",
            texte=texte_172,
            organe="PO211494",
        ),
        Lecture(
            chambre=Chambre.SENAT,
            titre="Nouvelle lecture – Séance publique",
            texte=texte_172,
            organe="PO78718",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Lecture définitive – Commission saisie au fond",
            texte=texte_506,
            organe="PO59048",
        ),
        Lecture(
            chambre=Chambre.AN,
            titre="Lecture définitive – Séance publique",
            texte=texte_506,
            organe="PO717460",
        ),
    ]