def test_merge_operacoes_other_df_vazio(self): data = [{ 'ticker': 'gcgs', 'qtd': 100, 'data': datetime.date(2019, 3, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'gcgs', 'qtd': 100, 'data': datetime.date(2019, 4, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'gcgs', 'qtd': -100, 'data': datetime.date(2019, 4, 12), 'preco': 200, 'aquisicao_via': 'HomeBroker' }] df = create_testing_dataframe(data) other_df = create_testing_dataframe([]) result = merge_operacoes(df, other_df) assert len(result) == len(df)
def test_split_operations_com_venda(self): data = [ { 'ticker': 'id2', 'qtd': 3, 'operacao': 'Compra', 'data': datetime.date(2019, 3, 11), 'preco': 50, 'taxas': 0, 'aquisicao_via': 'teste' }, { 'ticker': 'id1', 'qtd': 1, 'operacao': 'Compra', 'data': datetime.date(2019, 4, 11), 'preco': 100, 'taxas': 0, 'aquisicao_via': 'teste' }, { 'ticker': 'id2', 'qtd': -3, 'operacao': 'Venda', 'data': datetime.date(2019, 4, 11), 'preco': 100, 'taxas': 0, 'aquisicao_via': 'teste' }, ] notas = [ { 'ticker': '@SPLIT', 'qtd': 0, 'data': datetime.date(2019, 4, 11), 'preco': 0, 'taxas': 4.00, 'aquisicao_via': 'teste' }, ] df = create_testing_dataframe(data) dfNotas = create_testing_dataframe(notas) split_data = check_split_operations(dfNotas, df) print(split_data) assert len(split_data) == 2 assert split_data['ticker'][0] == 'id1' assert split_data['ticker'][1] == 'id2' assert split_data['taxas'][0] == 1 assert split_data['taxas'][1] == 3 assert split_data['valor'][0] == 0 assert split_data['valor'][1] == 0
def test_merge_operacoes_df_vazio(self): ticker = random_ticker() df = create_testing_dataframe([]) other_data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 10, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker'}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 10, 12), 'preco': 100, 'aquisicao_via': 'HomeBroker'}] other_df = create_testing_dataframe(other_data) result = merge_operacoes(df, other_df) assert len(result) == len(other_df)
def test_envia_relatorio_html_por_email(self): data = [{ 'ticker': 'MAXR11', 'qtd': 100, 'data': datetime.date(2019, 3, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'PETR4', 'qtd': 100, 'data': datetime.date(2019, 4, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'XPLG11', 'qtd': 100, 'data': datetime.date(2019, 4, 12), 'preco': 200, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'XPLG11', 'qtd': -50, 'data': datetime.date(2019, 5, 12), 'preco': 220, 'aquisicao_via': 'HomeBroker' }] df = create_testing_dataframe(data) calcula_custodia(df) calculo_ir = CalculoIr(df=df) calculo_ir.calcula() assert envia_relatorio_html_por_email('assunto - teste unitário', relatorio_html(calculo_ir))
def test_calcula_precos_medios_quando_operacoes_no_mesmo_dia_estao_fora_de_ordem( self): # dentro de um mesmo dia, nao existe a informacao de horas. # logo, nao há garantia de que as operacoes ocorreram na ordem informada (dentro um mesmo dia) data = [{ 'ticker': 'gcgs', 'qtd': 100, 'data': datetime.date(2019, 4, 11), 'preco': 100 }, { 'ticker': 'gcgs', 'qtd': -100, 'data': datetime.date(2019, 4, 12), 'preco': 200 }, { 'ticker': 'gcgs', 'qtd': -200, 'data': datetime.date(2019, 4, 13), 'preco': 500 }, { 'ticker': 'gcgs', 'qtd': 100, 'data': datetime.date(2019, 4, 13), 'preco': 300 }, { 'ticker': 'gcgs', 'qtd': 100, 'data': datetime.date(2019, 4, 13), 'preco': 400 }, { 'ticker': 'gcgs', 'qtd': -1, 'data': datetime.date(2019, 4, 15), 'preco': 1 }, { 'ticker': 'gcgs', 'qtd': 2, 'data': datetime.date(2019, 4, 15), 'preco': 5 }, { 'ticker': 'gcgs', 'qtd': 3, 'data': datetime.date(2019, 4, 15), 'preco': 2 }, { 'ticker': 'gcgs', 'qtd': 1, 'data': datetime.date(2019, 4, 16), 'preco': 2 }] df = create_testing_dataframe(data) precos_medio_de_compra = calcula_precos_medio_de_compra(df) assert precos_medio_de_compra['gcgs']['valor'] == pytest.approx( 2.96, 0.001) assert precos_medio_de_compra['gcgs'][ 'data_primeira_compra'] == datetime.date(2019, 4, 15)
def test_merge_operacoes_com_ipo_em_uma_data_futura(self): ticker = random_ticker() data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 3, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker'}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 4, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker'}] other_data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 10, 13), 'preco': 100, 'aquisicao_via': 'HomeBroker'}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 10, 14), 'preco': 100, 'aquisicao_via': 'HomeBroker'}] other_data.extend(data) other_df = create_testing_dataframe(other_data) data.extend([{'ticker': ticker, 'qtd': -100, 'data': date(2099, 4, 20), 'preco': 200, 'aquisicao_via': 'IPO'}]) df = create_testing_dataframe(data) result = merge_operacoes(df, other_df) assert len(result) == (len(df) + 2)
def test_merge_operacoes_append_puro(self): ticker = random_ticker() data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 3, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker'}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 4, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker'}, {'ticker': ticker, 'qtd': -100, 'data': date(2019, 4, 12), 'preco': 200, 'aquisicao_via': 'HomeBroker'}] df = create_testing_dataframe(data) ticker2 = random_ticker() other_data = [{'ticker': ticker2, 'qtd': 100, 'data': date(2019, 10, 14), 'preco': 100, 'aquisicao_via': 'HomeBroker'}, {'ticker': ticker2, 'qtd': 100, 'data': date(2019, 10, 15), 'preco': 100, 'aquisicao_via': 'HomeBroker'}] other_df = create_testing_dataframe(other_data) result = merge_operacoes(df, other_df) assert len(result) == (len(df) + len(other_df))
def test_merge_operacoes_df_eh_none(self): ticker = random_ticker() other_data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 10, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker'}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 10, 12), 'preco': 100, 'aquisicao_via': 'HomeBroker'}] other_df = create_testing_dataframe(other_data) with pytest.raises(AssertionError): merge_operacoes(None, other_df)
def test_calcula_precos_medios_quando_varios_ciclo_em_varios_meses(self): ticker = random_ticker() data = [{'ticker': ticker, 'qtd': 1, 'data': date(2019, 4, 11), 'preco': 5}, {'ticker': ticker, 'qtd': -1, 'data': date(2019, 4, 12), 'preco': 6}, {'ticker': ticker, 'qtd': 2, 'data': date(2019, 4, 13), 'preco': 3}, {'ticker': ticker, 'qtd': -1, 'data': date(2019, 4, 14), 'preco': 2}, {'ticker': ticker, 'qtd': -1, 'data': date(2019, 4, 15), 'preco': 4}, {'ticker': ticker, 'qtd': 1, 'data': date(2019, 4, 15), 'preco': 2}, {'ticker': ticker, 'qtd': 1, 'data': date(2019, 4, 15), 'preco': 3}, {'ticker': ticker, 'qtd': 1, 'data': date(2019, 4, 15), 'preco': 4}, {'ticker': ticker, 'qtd': -2, 'data': date(2019, 4, 16), 'preco': 5}] df = create_testing_dataframe(data) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 11))['valor'] == pytest.approx(5.0, 0.001) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 13))['valor'] == pytest.approx(3.0, 0.001) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 14))['valor'] == pytest.approx(3.0, 0.001) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 15))['valor'] == pytest.approx(3.0, 0.001) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 20))['valor'] == pytest.approx(3.0, 0.001) ticker = random_ticker() data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 4, 11), 'preco': 200}, {'ticker': ticker, 'qtd': -100, 'data': date(2019, 4, 12), 'preco': 200}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 4, 13), 'preco': 300}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 4, 14), 'preco': 400}, {'ticker': ticker, 'qtd': -200, 'data': date(2019, 4, 15), 'preco': 500}, {'ticker': ticker, 'qtd': 2, 'data': date(2019, 4, 16), 'preco': 5}, {'ticker': ticker, 'qtd': -1, 'data': date(2019, 4, 16), 'preco': 1}, {'ticker': ticker, 'qtd': 3, 'data': date(2019, 4, 17), 'preco': 2}, {'ticker': ticker, 'qtd': 1, 'data': date(2019, 4, 17), 'preco': 20}] df = create_testing_dataframe(data) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 15))['valor'] == pytest.approx(350.0, 0.001) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 16))['valor'] == pytest.approx(5.0, 0.001) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 17))['valor'] == pytest.approx(6.2, 0.001) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 11))['data_primeira_compra'] == date(2019, 4, 11) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 12))['data_primeira_compra'] == date(2019, 4, 11) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 15))['data_primeira_compra'] == date(2019, 4, 13) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 16))['data_primeira_compra'] == date(2019, 4, 16) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 17))['data_primeira_compra'] == date(2019, 4, 16)
def test_descobre_vendas_no_mes_quando_mais_de_um_ciclo_no_mesmo_mes(self): ticker = random_ticker() data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 3, 11), 'preco': 100}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 3, 12), 'preco': 100}, {'ticker': ticker, 'qtd': -200, 'data': date(2019, 3, 13), 'preco': 200}, {'ticker': ticker, 'qtd': 500, 'data': date(2019, 3, 14), 'preco': 300}, {'ticker': ticker, 'qtd': -500, 'data': date(2019, 3, 15), 'preco': 400}] df = create_testing_dataframe(data) vendas_no_mes_abril = vendas_no_mes(df, 2019, 3) assert type(vendas_no_mes_abril) is list assert len(vendas_no_mes_abril) == 2
def test_deve_retornar_precos_de_compra_diferentes_quando_varias_operacoes_de_compra_venda_mesmo_mes(self): ticker = random_ticker() data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 4, 10), 'preco': 100}, {'ticker': ticker, 'qtd': 200, 'data': date(2019, 4, 11), 'preco': 200}, {'ticker': ticker, 'qtd': 200, 'data': date(2019, 4, 12), 'preco': 200}, {'ticker': ticker, 'qtd': -100, 'data': date(2019, 4, 13), 'preco': 250}, {'ticker': ticker, 'qtd': -150, 'data': date(2019, 4, 14), 'preco': 250}, {'ticker': ticker, 'qtd': 400, 'data': date(2019, 4, 15), 'preco': 400}, {'ticker': ticker, 'qtd': -250, 'data': date(2019, 4, 16), 'preco': 250}] df = create_testing_dataframe(data) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 14))['valor'] == pytest.approx(180.00, 0.01) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 16))['valor'] == pytest.approx(315.38, 0.01)
def test_descobre_vendas_no_mes_quando_mais_de_uma_compra_venda_e_dentro_do_mesmo_ciclo_mas_com_mesmo_preco_de_compra(self): ticker = random_ticker() data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 3, 11), 'preco': 100}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 3, 12), 'preco': 100}, {'ticker': ticker, 'qtd': -50, 'data': date(2019, 3, 13), 'preco': 200}, {'ticker': ticker, 'qtd': 500, 'data': date(2019, 3, 14), 'preco': 100}, {'ticker': ticker, 'qtd': -400, 'data': date(2019, 3, 15), 'preco': 400}] df = create_testing_dataframe(data) vendas_no_mes_abril = vendas_no_mes(df, 2019, 3) assert type(vendas_no_mes_abril) is list assert len(vendas_no_mes_abril) == 1 assert vendas_no_mes_abril[0]['preco_medio_compra'] == pytest.approx(100.0, 0.001) assert vendas_no_mes_abril[0]['qtd_vendida'] == 450
def test_split_operations_by_defs(self): data = [{ 'ticker': 'id1:1|id2:3', 'qtd': 0, 'data': datetime.date(2019, 4, 11), 'preco': 0, 'taxas': 4, 'aquisicao_via': 'teste' }] df = create_testing_dataframe(data) split_data = check_split_operations(df) assert len(split_data) == 2 assert split_data['ticker'][0] == 'id1' assert split_data['ticker'][1] == 'id2' assert split_data['taxas'][0] == 1 assert split_data['taxas'][1] == 3
def test_calcula_precos_medios_quando_um_ciclo(self): ticker = random_ticker() data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 4, 20), 'preco': 100}, {'ticker': ticker, 'qtd': 200, 'data': date(2019, 4, 13), 'preco': 200}] df = create_testing_dataframe(data) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 14))['valor'] == pytest.approx(200.00, 0.01) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 16))['valor'] == pytest.approx(200.00, 0.01) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 19))['valor'] == pytest.approx(200.00, 0.01) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 20))['valor'] == pytest.approx(166.66, 0.01) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 21))['valor'] == pytest.approx(166.66, 0.01) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 14))['data_primeira_compra'] == date(2019, 4, 13) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 16))['data_primeira_compra'] == date(2019, 4, 13) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 19))['data_primeira_compra'] == date(2019, 4, 13) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 20))['data_primeira_compra'] == date(2019, 4, 13) assert calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 21))['data_primeira_compra'] == date(2019, 4, 13)
def test_descobre_vendas_no_mes_deve_considerar_varios_ciclos_dentro_de_um_mesmo_mes(self): ticker = random_ticker() data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 3, 11), 'preco': 150}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 4, 11), 'preco': 100}, {'ticker': ticker, 'qtd': -200, 'data': date(2019, 4, 12), 'preco': 200}, {'ticker': ticker, 'qtd': 200, 'data': date(2019, 4, 13), 'preco': 300}, {'ticker': ticker, 'qtd': 200, 'data': date(2019, 4, 14), 'preco': 400}, {'ticker': ticker, 'qtd': -300, 'data': date(2019, 4, 15), 'preco': 500}] df = create_testing_dataframe(data) vendas_no_mes_abril = vendas_no_mes(df, 2019, 4) assert type(vendas_no_mes_abril) is list assert len(vendas_no_mes_abril) == 2 assert vendas_no_mes_abril[0] == {'ticker': ticker, 'qtd_vendida': 200, 'preco_medio_venda': 200.0, 'preco_medio_compra': 125.0, 'resultado_apurado': 15000.0} assert vendas_no_mes_abril[1] == {'ticker': ticker, 'qtd_vendida': 300, 'preco_medio_venda': 500.0, 'preco_medio_compra': 350.0, 'resultado_apurado': 45000.0}
def test_calcula_precos_medios_quando_varios_tickers_juntos(self): ticker = random_ticker() ticker2 = random_ticker() data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 4, 20), 'preco': 100}, {'ticker': ticker2, 'qtd': 100, 'data': date(2019, 4, 20), 'preco': 100}, {'ticker': ticker2, 'qtd': 100, 'data': date(2019, 4, 20), 'preco': 200}, {'ticker': ticker2, 'qtd': 100, 'data': date(2019, 4, 20), 'preco': 300}, {'ticker': ticker, 'qtd': 200, 'data': date(2019, 4, 13), 'preco': 200}] df = create_testing_dataframe(data) preco_medio_de_compra = calcula_preco_medio_de_compra(df, ticker, date(2019, 4, 21)) assert preco_medio_de_compra['valor'] == pytest.approx(166.66, 0.01) assert preco_medio_de_compra['data_primeira_compra'] == date(2019, 4, 13) preco_medio_de_compra = calcula_preco_medio_de_compra(df, ticker2, date(2019, 4, 21)) assert preco_medio_de_compra['valor'] == pytest.approx(200.00, 0.01) assert preco_medio_de_compra['data_primeira_compra'] == date(2019, 4, 20)
def test_calcula_precos_medios_quando_um_ciclo(self): data = [{ 'ticker': 'gcgs', 'qtd': 100, 'data': datetime.date(2019, 4, 20), 'preco': 100 }, { 'ticker': 'gcgs', 'qtd': 200, 'data': datetime.date(2019, 4, 13), 'preco': 200 }] df = create_testing_dataframe(data) precos_medio_de_compra = calcula_precos_medio_de_compra(df) assert precos_medio_de_compra['gcgs']['valor'] == pytest.approx( 166.66, 0.01) assert precos_medio_de_compra['gcgs'][ 'data_primeira_compra'] == datetime.date(2019, 4, 13)
def test_descobre_vendas_no_mes(self): ticker = random_ticker() data = [{'ticker': ticker, 'qtd': 100, 'data': date(2019, 3, 11), 'preco': 100}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 4, 11), 'preco': 100}, {'ticker': ticker, 'qtd': -100, 'data': date(2019, 4, 12), 'preco': 200}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 4, 13), 'preco': 300}, {'ticker': ticker, 'qtd': 100, 'data': date(2019, 4, 14), 'preco': 400}, {'ticker': ticker, 'qtd': -200, 'data': date(2019, 4, 15), 'preco': 500}, {'ticker': random_ticker(), 'qtd': 200, 'data': date(2019, 4, 15), 'preco': 500}, {'ticker': random_ticker(), 'qtd': -200, 'data': date(2019, 4, 15), 'preco': 500}, {'ticker': ticker, 'qtd': -200, 'data': date(2019, 4, 15), 'preco': 500}, {'ticker': ticker, 'qtd': 2, 'data': date(2019, 4, 15), 'preco': 5}, {'ticker': ticker, 'qtd': -1, 'data': date(2019, 4, 15), 'preco': 1}, {'ticker': ticker, 'qtd': 3, 'data': date(2019, 4, 15), 'preco': 2}, {'ticker': ticker, 'qtd': 1, 'data': date(2019, 4, 16), 'preco': 2}] df = create_testing_dataframe(data) vendas_no_mes_abril = vendas_no_mes(df, 2019, 4) assert type(vendas_no_mes_abril) is list assert len(vendas_no_mes_abril) == 2
def test_relatorio_html(self): data = [{ 'ticker': 'MAXR11', 'qtd': 100, 'data': datetime.date(2019, 3, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'PETR4', 'qtd': 100, 'data': datetime.date(2019, 4, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'XPLG11', 'qtd': 100, 'data': datetime.date(2019, 4, 12), 'preco': 200, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'XPLG11', 'qtd': -50, 'data': datetime.date(2019, 5, 12), 'preco': 220, 'aquisicao_via': 'HomeBroker' }] df = create_testing_dataframe(data) custodia = calcula_custodia(df) calculo_ir = CalculoIr(df=df) calculo_ir.calcula() from py_w3c.validators.html.validator import HTMLValidator assert HTMLValidator().validate_fragment( relatorio_html(custodia, calculo_ir, datetime.date.today(), False))
def test_deve_retornar_relatorio_html_com_todos_os_meses(self): data = [{ 'ticker': 'MAXR11', 'qtd': 100, 'data': datetime.date(2019, 3, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'PETR4', 'qtd': 100, 'data': datetime.date(2019, 4, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'XPLG11', 'qtd': 100, 'data': datetime.date(2019, 4, 12), 'preco': 200, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'XPLG11', 'qtd': -50, 'data': datetime.date(2019, 5, 12), 'preco': 220, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'MAXR11', 'qtd': 100, 'data': datetime.date(2019, 6, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'PETR4', 'qtd': 100, 'data': datetime.date(2019, 10, 11), 'preco': 100, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'XPLG11', 'qtd': 100, 'data': datetime.date(2019, 10, 12), 'preco': 200, 'aquisicao_via': 'HomeBroker' }, { 'ticker': 'XPLG11', 'qtd': -50, 'data': datetime.date(2019, 11, 12), 'preco': 220, 'aquisicao_via': 'HomeBroker' }] df = create_testing_dataframe(data) calcula_custodia(df) calculo_ir = CalculoIr(df=df) calculo_ir.calcula() from py_w3c.validators.html.validator import HTMLValidator html = relatorio_html(calculo_ir) assert HTMLValidator().validate_fragment(html) assert 'MES : 05/2019' in html assert 'MES : 11/2019' in html
def test_calcula_precos_medios_quando_varios_ciclo(self): data = [{ 'ticker': 'gcgs', 'qtd': 1, 'data': datetime.date(2019, 4, 11), 'preco': 5 }, { 'ticker': 'gcgs', 'qtd': -1, 'data': datetime.date(2019, 4, 12), 'preco': 6 }, { 'ticker': 'gcgs', 'qtd': 2, 'data': datetime.date(2019, 4, 13), 'preco': 3 }, { 'ticker': 'gcgs', 'qtd': -1, 'data': datetime.date(2019, 4, 14), 'preco': 2 }, { 'ticker': 'gcgs', 'qtd': -1, 'data': datetime.date(2019, 4, 15), 'preco': 4 }, { 'ticker': 'gcgs', 'qtd': 1, 'data': datetime.date(2019, 4, 15), 'preco': 2 }, { 'ticker': 'gcgs', 'qtd': 1, 'data': datetime.date(2019, 4, 15), 'preco': 3 }, { 'ticker': 'gcgs', 'qtd': 1, 'data': datetime.date(2019, 4, 15), 'preco': 4 }, { 'ticker': 'gcgs', 'qtd': -2, 'data': datetime.date(2019, 4, 16), 'preco': 5 }] df = create_testing_dataframe(data) precos_medio_de_compra = calcula_precos_medio_de_compra(df) assert precos_medio_de_compra['gcgs']['valor'] == pytest.approx( 3.0, 0.001) data = [{ 'ticker': 'gcgs', 'qtd': 100, 'data': datetime.date(2019, 4, 11), 'preco': 100 }, { 'ticker': 'gcgs', 'qtd': -100, 'data': datetime.date(2019, 4, 12), 'preco': 200 }, { 'ticker': 'gcgs', 'qtd': 100, 'data': datetime.date(2019, 4, 13), 'preco': 300 }, { 'ticker': 'gcgs', 'qtd': 100, 'data': datetime.date(2019, 4, 14), 'preco': 400 }, { 'ticker': 'gcgs', 'qtd': -200, 'data': datetime.date(2019, 4, 15), 'preco': 500 }, { 'ticker': 'gcgs', 'qtd': 2, 'data': datetime.date(2019, 4, 16), 'preco': 5 }, { 'ticker': 'gcgs', 'qtd': -1, 'data': datetime.date(2019, 4, 16), 'preco': 1 }, { 'ticker': 'gcgs', 'qtd': 3, 'data': datetime.date(2019, 4, 17), 'preco': 2 }, { 'ticker': 'gcgs', 'qtd': 1, 'data': datetime.date(2019, 4, 17), 'preco': 2 }] df = create_testing_dataframe(data) precos_medio_de_compra = calcula_precos_medio_de_compra(df) assert precos_medio_de_compra['gcgs']['valor'] == pytest.approx( 2.6, 0.001) assert precos_medio_de_compra['gcgs'][ 'data_primeira_compra'] == datetime.date(2019, 4, 16)