def test_filters_data_before_2010(self, mock_orcado, mock_empenhado): mock_orcado.return_value = 'mock_o' mock_empenhado.return_value = 'mock_e' # not expected mommy.make( Execucao, year=date(2009, 1, 1)) exec_2010 = mommy.make( Execucao, year=date(2010, 1, 1)) execucoes = Execucao.objects.all() serializer = GeologiaSerializer(execucoes) ret = serializer.prepare_subgrupo_data() expected = { 'orcado': ['mock_o'], 'empenhado': ['mock_e'], } assert expected == ret assert 1 == mock_orcado.call_count assert [exec_2010] == list(mock_orcado.call_args[0][0]) assert 1 == mock_empenhado.call_count assert [exec_2010] == list(mock_empenhado.call_args[0][0])
def test_get_subgrupo_year_empenhado_data(self, mock_empenhado): mock_empenhado.return_value = 'mock_e' year = date(2018, 1, 1) execs_sub1 = mommy.make( Execucao, year=year, subgrupo__id=1, _quantity=2) execs_sub2 = mommy.make( Execucao, year=year, subgrupo__id=2, _quantity=2) execucoes = Execucao.objects.all() serializer = GeologiaSerializer([]) ret = serializer.get_subgrupo_year_empenhado_data(execucoes) expected = { 'year': year.strftime('%Y'), 'subgrupos': ['mock_e', 'mock_e'], } assert expected == ret execs = [execs_sub1, execs_sub2] for exec_subgrupo, call in zip(execs, mock_empenhado.mock_calls): assert set(exec_subgrupo) == set(call[1][0])
def test_serialize_list_of_subfuncoes(self): subfuncao_1 = mommy.make('Subfuncao', desc='Turismo') subfuncao_2 = mommy.make('Subfuncao', desc='Educação Infantil') subfuncoes = [subfuncao_1, subfuncao_2] expected = [ dict(id=subfuncao.id, desc=subfuncao.desc, selecionado=False) for subfuncao in subfuncoes ] # selected funcao subfuncao_3 = mommy.make('Subfuncao', desc='Selected Function') expected.append( dict(id=subfuncao_3.id, desc=subfuncao_3.desc, selecionado=True)) expected.sort(key=lambda s: s['desc']) mommy.make(Execucao, subfuncao=cycle([subfuncao_1, subfuncao_2, subfuncao_3]), _quantity=3) queryset = Execucao.objects.all() # not expected mommy.make('Subfuncao') serialized = GeologiaSerializer(queryset, subfuncao_id=subfuncao_3.id).data assert expected == serialized.get('subfuncoes')
def test_prepare_subgrupo_data(self, mock_orcado, mock_empenhado): mock_orcado.return_value = 'mock_o' mock_empenhado.return_value = 'mock_e' execs_2017 = mommy.make( Execucao, year=date(2017, 1, 1), _quantity=2) execs_2018 = mommy.make( Execucao, year=date(2018, 1, 1), _quantity=2) execucoes = Execucao.objects.all() serializer = GeologiaSerializer(execucoes) ret = serializer.prepare_subgrupo_data() expected = { 'orcado': ['mock_o', 'mock_o'], 'empenhado': ['mock_e', 'mock_e'], } assert expected == ret execs = [execs_2017, execs_2018] for exec_year, call in zip(execs, mock_orcado.mock_calls): assert set(exec_year) == set(call[1][0]) for exec_year, call in zip(execs, mock_empenhado.mock_calls): assert set(exec_year) == set(call[1][0])
def test_get_subgrupo_empenhado_data(self, empenhado_fixture): gnds, empenhado_total = empenhado_fixture year = date(2017, 1, 1) deflator = Deflator.objects.get(year=year) empenhado_total = empenhado_total / deflator.index_number subgrupo = mommy.make(Subgrupo, id=1) mommy.make(Execucao, year=year, empenhado_liquido=cycle([gnd['empenhado'] for gnd in gnds]), subgrupo=subgrupo, _quantity=3) execucoes = Execucao.objects.all() expected = { 'subgrupo': subgrupo.desc, "total": empenhado_total, "gnds": [], } serializer = GeologiaSerializer([]) ret = serializer.get_subgrupo_empenhado_data(execucoes) assert expected == ret
def test_get_subgrupo_year_empenhado_data(self, mock_empenhado): mock_empenhado.return_value = 'mock_e' subgrupo1 = mommy.make(Subgrupo, desc="Uniceu") subgrupo2 = mommy.make(Subgrupo, desc="Alimentação Escolar") year = date(2018, 1, 1) execs_sub1 = mommy.make(Execucao, year=year, subgrupo=subgrupo1, _quantity=2) execs_sub2 = mommy.make(Execucao, year=year, subgrupo=subgrupo2, _quantity=2) execucoes = Execucao.objects.all() serializer = GeologiaSerializer([]) ret = serializer.get_subgrupo_year_empenhado_data(execucoes) expected = { 'year': year.strftime('%Y'), 'subgrupos': ['mock_e', 'mock_e'], } assert expected == ret execs = [execs_sub2, execs_sub1] # Alphabetical order for exec_subgrupo, call in zip(execs, mock_empenhado.mock_calls): assert set(exec_subgrupo) == set(call[1][0])
def test_get_empenhado_gnd_list_when_total_is_none(self): gnds_dicts = [ {'gnd_geologia__desc': 'gnd1', 'gnd_geologia__slug': 'g1', 'empenhado': None}, {'gnd_geologia__desc': 'gnd2', 'gnd_geologia__slug': 'g2', 'empenhado': None}, ] empenhado_total = None serializer = GeologiaSerializer([]) assert serializer._get_empenhado_gnds_list(gnds_dicts, empenhado_total)
def test_serialize_list_of_gnds(self): gnd_1 = mommy.make('GndGeologia', desc='Consultoria', slug='consulting') gnd_2 = mommy.make('GndGeologia', desc='Custeio operacional', slug='operational') gnds = [gnd_1, gnd_2] expected = [dict(slug=gnd.slug, desc=gnd.desc) for gnd in gnds] queryset = Execucao.objects.all() serialized = GeologiaSerializer(queryset).data assert expected == serialized.get('gnds')
def test_get_orcado_gnds_list(self, orcado_fixture): gnds, orcado_total = orcado_fixture expected = [ { "name": gnd['gnd_geologia__desc'], "slug": gnd['gnd_geologia__slug'], "value": gnd['orcado'], "percent": gnd['orcado'] / orcado_total } for gnd in gnds ] serializer = GeologiaSerializer([]) ret = serializer._get_orcado_gnds_list(gnds, orcado_total) assert expected == ret
def test_serializes_geologia_data(self): mommy.make(Execucao, subgrupo__id=1, orgao__id=SME_ORGAO_ID, _quantity=2) execucoes = Execucao.objects.all() serializer = GeologiaSerializer(execucoes) response = self.get() assert serializer.data == response.data
def test_get_empenhado_gnds_list(self, empenhado_fixture): gnds, empenhado_total = empenhado_fixture expected = [] for gnd in gnds: if gnd['empenhado'] is None: gnd['empenhado'] = 0 expected.append({ "name": gnd['gnd_geologia__desc'], "slug": gnd['gnd_geologia__slug'], "value": gnd['empenhado'], "percent": gnd['empenhado'] / empenhado_total }) serializer = GeologiaSerializer([]) ret = serializer._get_empenhado_gnds_list( gnds, empenhado_total) assert expected == ret
def test_prepare_subfuncao_data(self, mock_orcado, mock_empenhado): mock_orcado.return_value = 'mock_o' mock_empenhado.return_value = 'mock_e' subfuncao_id = 1 execs_2017_p1 = mommy.make(Execucao, year=date(2017, 1, 1), subfuncao__id=subfuncao_id, _quantity=2) mommy.make(Execucao, year=date(2017, 1, 1), subfuncao__id=2, _quantity=2) execs_2018_p1 = mommy.make(Execucao, year=date(2018, 1, 1), subfuncao__id=subfuncao_id, _quantity=2) mommy.make(Execucao, year=date(2018, 1, 1), subfuncao__id=2, _quantity=2) execucoes = Execucao.objects.all() serializer = GeologiaSerializer(execucoes, subfuncao_id=subfuncao_id) ret = serializer.prepare_data(subfuncao_id=subfuncao_id) expected = { 'subfuncao_id': subfuncao_id, 'orcado': ['mock_o', 'mock_o'], 'empenhado': ['mock_e', 'mock_e'], } assert expected == ret execs = [execs_2017_p1, execs_2018_p1] for exec_year, call in zip(execs, mock_orcado.mock_calls): assert set(exec_year) == set(call[1][0]) for exec_year, call in zip(execs, mock_empenhado.mock_calls): assert set(exec_year) == set(call[1][0])
def test_get_empenhado_data_by_year(self, empenhado_fixture): gnds, empenhado_total = empenhado_fixture year = date(2017, 1, 1) mommy.make( Execucao, year=year, empenhado_liquido=cycle([gnd['empenhado'] for gnd in gnds]), _quantity=3) execucoes = Execucao.objects.all() expected = { "year": year.strftime("%Y"), "total": empenhado_total, "gnds": [], } serializer = GeologiaSerializer([]) ret = serializer._get_empenhado_data_by_year(execucoes) assert expected == ret
def test_get_orcado_gnds_list(self, orcado_fixture): gnds, orcado_total = orcado_fixture deflator = Deflator.objects.get(year__year=2017) expected = [] for gnd in gnds: orcado = gnd['orcado'] / deflator.index_number gnd_dict = { "name": gnd['gnd_geologia__desc'], "slug": gnd['gnd_geologia__slug'], "value": orcado, "percent": orcado / orcado_total } expected.append(gnd_dict) serializer = GeologiaSerializer([]) ret = serializer._get_orcado_gnds_list(gnds, orcado_total, deflator.year) assert expected == ret
def test_get_subgrupo_orcado_data(self, orcado_fixture): gnds, orcado_total = orcado_fixture year = date(2017, 1, 1) subgrupo = mommy.make(Subgrupo, id=1) mommy.make( Execucao, year=year, orcado_atualizado=cycle([gnd['orcado'] for gnd in gnds]), subgrupo=subgrupo, _quantity=3) execucoes = Execucao.objects.all() expected = { "subgrupo": subgrupo.desc, "total": orcado_total, "gnds": [], } serializer = GeologiaSerializer([]) ret = serializer.get_subgrupo_orcado_data(execucoes) assert expected == ret
def test_get_orcado_data_by_year(self, orcado_fixture): gnds, orcado_total = orcado_fixture year = date(2017, 1, 1) deflator = Deflator.objects.get(year=year) orcado_total = orcado_total / deflator.index_number mommy.make(Execucao, year=year, orcado_atualizado=cycle([gnd['orcado'] for gnd in gnds]), _quantity=3) execucoes = Execucao.objects.all() expected = { "year": year.strftime("%Y"), "total": orcado_total, "gnds": [], } serializer = GeologiaSerializer([]) ret = serializer._get_orcado_data_by_year(execucoes) assert expected == ret
def test_returns_date_updated(self, mock_orcado, mock_empenhado): mock_orcado.return_value = 'mock_o' mock_empenhado.return_value = 'mock_e' subgrupo = mommy.make(Subgrupo, grupo__id=1) with freeze_time('2019-01-01'): mommy.make('Execucao', subgrupo=subgrupo) # not expected with freeze_time('2000-01-01'): mommy.make('Execucao', subgrupo=subgrupo) serializer = GeologiaSerializer(Execucao.objects.all()) assert '01/01/2019' == serializer.data['dt_updated']
def test_get_empenhado_gnds_list(self, empenhado_fixture): gnds, empenhado_total = empenhado_fixture deflator = Deflator.objects.get(year__year=2018) expected = [] for gnd in gnds: if gnd['empenhado'] is None: gnd['empenhado'] = 0 empenhado = gnd['empenhado'] / deflator.index_number expected.append({ "name": gnd['gnd_geologia__desc'], "slug": gnd['gnd_geologia__slug'], "value": empenhado, "percent": empenhado / empenhado_total }) serializer = GeologiaSerializer([]) ret = serializer._get_empenhado_gnds_list(gnds, empenhado_total, deflator.year) assert expected == ret
def test_filters_execucoes_without_sme_orgao(self): mommy.make(Execucao, subgrupo=None, orgao__id=SME_ORGAO_ID, _quantity=2) mommy.make(Execucao, subgrupo__id=1, orgao__id=SME_ORGAO_ID, _quantity=2) # not expected mommy.make(Execucao, subgrupo__id=1, orgao__id=99, _quantity=2) execucoes = Execucao.objects.filter(orgao__id=SME_ORGAO_ID) serializer = GeologiaSerializer(execucoes) response = self.get() assert serializer.data == response.data
def test_filters_execucoes_from_minimo_legal(self): mommy.make(Execucao, subgrupo__id=1, orgao__id=SME_ORGAO_ID, is_minimo_legal=False, _quantity=2) mommy.make(Execucao, subgrupo__id=1, orgao__id=SME_ORGAO_ID, is_minimo_legal=True, _quantity=2) execucoes = Execucao.objects.filter(subgrupo__isnull=False, is_minimo_legal=False, orgao__id=SME_ORGAO_ID) serializer = GeologiaSerializer(execucoes) response = self.get() assert serializer.data == response.data
def test_calculate_percent(self): serializer = GeologiaSerializer([]) assert 0 == serializer._calculate_percent(None, 100) assert 0 == serializer._calculate_percent(10, None) assert 0.1 == serializer._calculate_percent(10, 100)