Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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
Exemplo n.º 3
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))
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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))
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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
Exemplo n.º 13
0
    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
Exemplo n.º 14
0
    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)
Exemplo n.º 15
0
    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}
Exemplo n.º 16
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)
Exemplo n.º 17
0
    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)
Exemplo n.º 18
0
    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
Exemplo n.º 19
0
    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))
Exemplo n.º 20
0
    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
Exemplo n.º 21
0
    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)