def test_dossier_data_extractor():
    pjl_element = BeautifulSoup(
        '<p><a href="/14/projets/pl3318.asp">Projet de loi</a> pour une République numérique, n° 3318, déposé le 9 décembre 2015 (mis en ligne le 9 décembre 2015 à 18 heures 50)</p>',
        'html5lib')
    depot = DepotLoiNode()
    depot.add_element(pjl_element)

    an_first_lecture_element = BeautifulSoup(
        '<p><strong>Assemblée nationale - 1ère lecture</strong></p>',
        'html5lib')
    step = LegislativeStepNode()
    step.add_element(an_first_lecture_element)
    step.add_child(depot)

    dossier = DossierNode()
    title_element = BeautifulSoup(
        '<p><strong>Questions sociales et santé : modernisation de notre système de santé</strong></p>',
        'html5lib')
    dossier.add_element(title_element)

    dossier.add_child(step)

    steps = dossier.extract_data()

    assert steps == [{
        'type':
        LegislativeStepType.AN_PREMIERE_LECTURE,
        'acts': [{
            'type': LegislativeActType.DEPOT_INITIATIVE,
            'url': 'http://www.assemblee-nationale.fr/14/projets/pl3318.asp',
            'date': datetime(2015, 12, 9)
        }]
    }]
def test_relevant_parent():
    root = DossierNode()
    step_node = LegislativeStepNode(parent=root)
    root.add_child(step_node)
    act_node = DepotLoiNode(parent=step_node)
    step_node.add_child(act_node)

    assert root == act_node.get_relevant_parent(LegislativeStepNode)
    assert step_node == act_node.get_relevant_parent(EtudeImpactNode)
    assert step_node == act_node.get_relevant_parent(ProcedureAccelereeNode)
    assert step_node == step_node.get_relevant_parent(ProcedureAccelereeNode)
def test_depot_loi_matching():
    depot_element_1 = BeautifulSoup(
        '<p><a href="/14/projets/pl3318.asp">Projet de loi</a> pour une République numérique, n° 3318, déposé le 9 décembre 2015 (mis en ligne le 9 décembre 2015 à 18 heures 50)</p>',
        'html5lib')

    depot_element_2 = BeautifulSoup(
        '<p><a href="/14/projets/pl3318.asp">Projet de loi</a> , adopté, par l\'Assemblée nationale après engagement de la procédure accélérée, relatif au renseignement, n° 424, déposé le 5 mai 2015.</p>',
        'html5lib')

    assert DepotLoiNode.match(depot_element_1)
    assert DepotLoiNode.match(depot_element_2)
def test_depot_loi_extractor():
    depot_element = BeautifulSoup(
        '<p><a href="/14/projets/pl3318.asp">Projet de loi</a> pour une République numérique, n° 3318, déposé le 9 décembre 2015 (mis en ligne le 9 décembre 2015 à 18 heures 50)</p>',
        'html5lib')
    act = DepotLoiNode()
    act.add_element(depot_element)
    act_data = act.extract_data()[0]

    assert act_data['type'] == LegislativeActType.DEPOT_INITIATIVE
    assert act_data[
        'url'] == 'http://www.assemblee-nationale.fr/14/projets/pl3318.asp'
    assert act_data['date'] == datetime(2015, 12, 9)