def test_stat_narrative_appears_in_french(
    stat_a_i, zambia, summary_url, rf
):
    G(StatValue, description=stat_a_i, country=zambia)

    # Add a translated narrative
    stat_a_i.translate('fr')
    stat_a_i.narrative = "Mais oui!"
    stat_a_i.save()

    # Get the French Zambia Page
    translation.activate('fr')
    request = rf.get(summary_url)
    request.user = G(User)
    request.LANGUAGE_CODE = 'en'
    view = CountrySummary.as_view()
    response = view(request, country=zambia)
    response.render()
    assert response.status_code == 200

    soup = BeautifulSoup(response.content.decode('utf-8'))

    # Expect two rows of stats in NEW order stat_a_ii, stat_a_i
    narratives = soup.find_all(class_="narrative")
    assert len(narratives) == 1
    assert "Mais oui!" in narratives[0].text
def test_data_needed_for_d3_is_not_using_localized_decimals(
    stat_a_i, zambia, summary_url, rf
):
    # The template localization will turn a value of 1.23 to 1,23.
    # This is awesome, except JSON can't parse it.
    G(StatValue, description=stat_a_i, country=zambia, value=1.23, year=2010)

    # Get the French Zambia Page
    translation.activate('fr')
    request = rf.get(summary_url)
    request.user = G(User)
    request.LANGUAGE_CODE = 'en'
    view = CountrySummary.as_view()
    response = view(request, country=zambia)
    response.render()
    assert response.status_code == 200
    soup = BeautifulSoup(response.content.decode('utf-8'))

    # Find the data div for our stat value
    data_div = soup.find_all(class_="data")
    assert len(data_div) == 1

    # Expect data in data_div can be loaded by json.loads
    data = data_div[0].get("data")
    try:
        json.loads(data)
    except ValueError:
        pytest.fail("JSON in data_div in French page is not valid")

    # Expect minY and maxY to also be in decimal format
    print data_div[0]
    miny = data_div[0].get("data-miny")
    maxy = data_div[0].get("data-maxy")
    assert "1.23" in miny
    assert "1.23" in maxy

    translation.deactivate()
def test_data_needed_for_d3_is_not_using_localized_decimals(
        stat_a_i, zambia, summary_url, rf):
    # The template localization will turn a value of 1.23 to 1,23.
    # This is awesome, except JSON can't parse it.
    G(StatValue, description=stat_a_i, country=zambia, value=1.23, year=2010)

    # Get the French Zambia Page
    translation.activate('fr')
    request = rf.get(summary_url)
    request.user = G(User)
    request.LANGUAGE_CODE = 'en'
    view = CountrySummary.as_view()
    response = view(request, country=zambia)
    response.render()
    assert response.status_code == 200
    soup = BeautifulSoup(response.content.decode('utf-8'))

    # Find the data div for our stat value
    data_div = soup.find_all(class_="data")
    assert len(data_div) == 1

    # Expect data in data_div can be loaded by json.loads
    data = data_div[0].get("data")
    try:
        json.loads(data)
    except ValueError:
        pytest.fail("JSON in data_div in French page is not valid")

    # Expect minY and maxY to also be in decimal format
    print data_div[0]
    miny = data_div[0].get("data-miny")
    maxy = data_div[0].get("data-maxy")
    assert "1.23" in miny
    assert "1.23" in maxy

    translation.deactivate()
def test_stat_narrative_appears_in_french(stat_a_i, zambia, summary_url, rf):
    G(StatValue, description=stat_a_i, country=zambia)

    # Add a translated narrative
    stat_a_i.translate('fr')
    stat_a_i.narrative = "Mais oui!"
    stat_a_i.save()

    # Get the French Zambia Page
    translation.activate('fr')
    request = rf.get(summary_url)
    request.user = G(User)
    request.LANGUAGE_CODE = 'en'
    view = CountrySummary.as_view()
    response = view(request, country=zambia)
    response.render()
    assert response.status_code == 200

    soup = BeautifulSoup(response.content.decode('utf-8'))

    # Expect two rows of stats in NEW order stat_a_ii, stat_a_i
    narratives = soup.find_all(class_="narrative")
    assert len(narratives) == 1
    assert "Mais oui!" in narratives[0].text