diff --git a/docs/docs.go b/docs/docs.go index 9ed57fe..5e383c9 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1185,6 +1185,9 @@ const docTemplate = `{ "id_orgao": { "type": "string" }, + "inconsistente": { + "type": "boolean" + }, "indice_transparencia": { "$ref": "#/definitions/papi.score" }, @@ -1309,6 +1312,9 @@ const docTemplate = `{ "descontos_por_mes": { "type": "number" }, + "inconsistente": { + "type": "boolean" + }, "meses_com_dados": { "type": "integer" }, @@ -1686,6 +1692,9 @@ const docTemplate = `{ "error": { "$ref": "#/definitions/uiapi.procError" }, + "inconsistente": { + "type": "boolean" + }, "mes": { "type": "integer" }, diff --git a/docs/swagger.json b/docs/swagger.json index 14867df..cf333cf 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -1176,6 +1176,9 @@ "id_orgao": { "type": "string" }, + "inconsistente": { + "type": "boolean" + }, "indice_transparencia": { "$ref": "#/definitions/papi.score" }, @@ -1300,6 +1303,9 @@ "descontos_por_mes": { "type": "number" }, + "inconsistente": { + "type": "boolean" + }, "meses_com_dados": { "type": "integer" }, @@ -1677,6 +1683,9 @@ "error": { "$ref": "#/definitions/uiapi.procError" }, + "inconsistente": { + "type": "boolean" + }, "mes": { "type": "integer" }, diff --git a/docs/swagger.yaml b/docs/swagger.yaml index c807c37..46c8f53 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -278,6 +278,8 @@ definitions: $ref: '#/definitions/papi.miError' id_orgao: type: string + inconsistente: + type: boolean indice_transparencia: $ref: '#/definitions/papi.score' mes: @@ -364,6 +366,8 @@ definitions: type: number descontos_por_mes: type: number + inconsistente: + type: boolean meses_com_dados: type: integer num_membros: @@ -612,6 +616,8 @@ definitions: type: number error: $ref: '#/definitions/uiapi.procError' + inconsistente: + type: boolean mes: type: integer outras_remuneracoes: diff --git a/go.mod b/go.mod index acbbd17..8d97d21 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.18 require ( github.com/dadosjusbr/proto v0.0.0-20221212025627-91c60aa3cd12 - github.com/dadosjusbr/storage v0.0.0-20240923172949-d3b675a3e292 + github.com/dadosjusbr/storage v0.0.0-20241220002941-04adcca6c05e github.com/gocarina/gocsv v0.0.0-20220712153207-8b2118da4570 github.com/golang/mock v1.6.0 github.com/joho/godotenv v1.4.0 diff --git a/go.sum b/go.sum index 54dd294..0b47fc9 100644 --- a/go.sum +++ b/go.sum @@ -31,18 +31,11 @@ github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7 github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/dadosjusbr/datapackage v0.0.0-20230904162108-6e2264aafb68/go.mod h1:o1FghJC46mR+lgHcQWVve/q84/SAd0WVdYMcgq88BBU= github.com/dadosjusbr/datapackage v0.0.0-20240320203926-5f369dadd3a5/go.mod h1:xDZc4jX8VDOP7SFo793x0Q8gjUjuMSOmNEUG/wqLKAw= github.com/dadosjusbr/proto v0.0.0-20221212025627-91c60aa3cd12 h1:ufl8nbCEo6g2VHUbedGy0gYk9Sgrynf9rcnzuSw4TEg= github.com/dadosjusbr/proto v0.0.0-20221212025627-91c60aa3cd12/go.mod h1:gPA7VxjEmyez/xtln4qBj+tM1NO0/zcw3ryjxTRNSco= -github.com/dadosjusbr/storage v0.0.0-20240315221019-5da10c81ab80 h1:mo6k/MAl6aF662JFUYHxqCNvRkX8OXZN0DmQKJe55D4= -github.com/dadosjusbr/storage v0.0.0-20240315221019-5da10c81ab80/go.mod h1:PszGy6CDoG3kNLjIsCmwD3MAWED7xL7U/OWj7ajsiHc= -github.com/dadosjusbr/storage v0.0.0-20240514131514-43ac5da3ae8a h1:1LyzfsNzKgLjC4/cyQr+N724a4dcRCHB5yIauAnhhcI= -github.com/dadosjusbr/storage v0.0.0-20240514131514-43ac5da3ae8a/go.mod h1:rIM/dbZMdrMfVnZgNgRNRRtsxfhSMH8S8X7MZEeKkrQ= -github.com/dadosjusbr/storage v0.0.0-20240913213102-72765cc03b4e h1:RNcbmof3iPyJQNWbEPkNyKKffmQ8jkZa8QH/vZ5eJP0= -github.com/dadosjusbr/storage v0.0.0-20240913213102-72765cc03b4e/go.mod h1:rIM/dbZMdrMfVnZgNgRNRRtsxfhSMH8S8X7MZEeKkrQ= -github.com/dadosjusbr/storage v0.0.0-20240923172949-d3b675a3e292 h1:cgrdaqWjNN9enNcWPaPtqWFbxo1bLWz9C/Lxhke4WM4= -github.com/dadosjusbr/storage v0.0.0-20240923172949-d3b675a3e292/go.mod h1:rIM/dbZMdrMfVnZgNgRNRRtsxfhSMH8S8X7MZEeKkrQ= +github.com/dadosjusbr/storage v0.0.0-20241220002941-04adcca6c05e h1:1tg4+bUdok+k92a8ucui4PCe1J6ST19d88PuYR8pfQg= +github.com/dadosjusbr/storage v0.0.0-20241220002941-04adcca6c05e/go.mod h1:rIM/dbZMdrMfVnZgNgRNRRtsxfhSMH8S8X7MZEeKkrQ= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/papi/handlers.go b/papi/handlers.go index f3b566e..9ec0c1f 100644 --- a/papi/handlers.go +++ b/papi/handlers.go @@ -374,6 +374,7 @@ func (h handler) V2GetMonthlyInfo(c echo.Context) error { ParserVersion: monthlyInfo.ParserVersion, }, ManualCollection: monthlyInfo.ManualCollection, + Inconsistent: monthlyInfo.Inconsistent, } //O status 4 informa que os dados estão indisponíveis. Ao removê-los dos resultados da API, garantimos que eles sejam exibidos como se não houvesse dados. } else if monthlyInfo.ProcInfo.Status != 4 { @@ -694,7 +695,7 @@ func (h handler) V2GetAggregateIndexesWithParams(c echo.Context) error { // @Produce json // @Success 200 {object} []aggregateIndexesByGroup "Requisição bem sucedida." // @Failure 500 {string} string "Erro interno do servidor." -// @Router /v2/indice [get] +// @Router /v2/indice [get] func (h handler) V2GetAggregateIndexes(c echo.Context) error { agregado := c.QueryParam("agregado") detalhe := c.QueryParam("detalhe") diff --git a/papi/models.go b/papi/models.go index a286b0a..1268512 100644 --- a/papi/models.go +++ b/papi/models.go @@ -82,6 +82,7 @@ type summaryzedMI struct { Collect *collect `json:"dados_coleta,omitempty"` ManualCollection bool `json:"coleta_manual"` Error *miError `json:"error,omitempty"` + Inconsistent bool `json:"inconsistente"` } type agency struct { diff --git a/uiapi/handlers.go b/uiapi/handlers.go index 3f2376a..6a1fcf0 100644 --- a/uiapi/handlers.go +++ b/uiapi/handlers.go @@ -80,17 +80,17 @@ func (h handler) GetSummaryOfAgency(c echo.Context) error { return c.JSON(http.StatusOK, agencySummary) } -// @ID GetSummaryOfAgency -// @Tags ui_api -// @Description Resume os dados de remuneração mensal de um órgão. -// @Produce json -// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." -// @Param ano path int true "Ano da remuneração. Exemplo: 2018." -// @Param mes path int true "Mês da remuneração. Exemplo: 1." -// @Success 200 {object} v2AgencySummary "Requisição bem sucedida." -// @Failure 404 {string} string "Órgão não encontrado." -// @Failure 400 {string} string "Parâmetro ano, mês ou nome do órgão são inválidos." -// @Router /uiapi/v2/orgao/resumo/{orgao}/{ano}/{mes} [get] +// @ID GetSummaryOfAgency +// @Tags ui_api +// @Description Resume os dados de remuneração mensal de um órgão. +// @Produce json +// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." +// @Param ano path int true "Ano da remuneração. Exemplo: 2018." +// @Param mes path int true "Mês da remuneração. Exemplo: 1." +// @Success 200 {object} v2AgencySummary "Requisição bem sucedida." +// @Failure 404 {string} string "Órgão não encontrado." +// @Failure 400 {string} string "Parâmetro ano, mês ou nome do órgão são inválidos." +// @Router /uiapi/v2/orgao/resumo/{orgao}/{ano}/{mes} [get] func (h handler) V2GetSummaryOfAgency(c echo.Context) error { year, err := strconv.Atoi(c.Param("ano")) if err != nil { @@ -177,17 +177,17 @@ func (h handler) GetSalaryOfAgencyMonthYear(c echo.Context) error { }) } -// @ID GetSalaryOfAgencyMonthYear -// @Tags ui_api -// @Description Busca dados das remunerações mensais de um órgão. -// @Produce json -// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." -// @Param mes path string true "Mês da remuneração. Exemplos: 01, 02, 03..." -// @Param ano path string true "Ano da remuneração. Exemplos: 2018, 2019, 2020..." -// @Success 200 {object} agencyRemuneration "Requisição bem sucedida." -// @Success 206 {object} v2ProcInfoResult "Requisição bem sucedida, mas os dados do órgão não foram bem processados" -// @Failure 400 {string} string "Parâmetros inválidos." -// @Router /uiapi/v2/orgao/salario/{orgao}/{ano}/{mes} [get] +// @ID GetSalaryOfAgencyMonthYear +// @Tags ui_api +// @Description Busca dados das remunerações mensais de um órgão. +// @Produce json +// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." +// @Param mes path string true "Mês da remuneração. Exemplos: 01, 02, 03..." +// @Param ano path string true "Ano da remuneração. Exemplos: 2018, 2019, 2020..." +// @Success 200 {object} agencyRemuneration "Requisição bem sucedida." +// @Success 206 {object} v2ProcInfoResult "Requisição bem sucedida, mas os dados do órgão não foram bem processados" +// @Failure 400 {string} string "Parâmetros inválidos." +// @Router /uiapi/v2/orgao/salario/{orgao}/{ano}/{mes} [get] func (h handler) V2GetSalaryOfAgencyMonthYear(c echo.Context) error { month, err := strconv.Atoi(c.Param("mes")) if err != nil { @@ -300,15 +300,15 @@ func (h handler) GetTotalsOfAgencyYear(c echo.Context) error { return c.JSON(http.StatusOK, agencyTotalsYear) } -// @ID GetTotalsOfAgencyYear -// @Tags ui_api -// @Description Busca os dados de remuneração de um órgão em um ano específico. -// @Produce json -// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." -// @Param ano path int true "Ano. Exemplo: 2018." -// @Success 200 {object} v2AgencyTotalsYear "Requisição bem sucedida." -// @Failure 400 {string} string "Parâmetro ano ou orgao inválido." -// @Router /uiapi/v2/orgao/totais/{orgao}/{ano} [get] +// @ID GetTotalsOfAgencyYear +// @Tags ui_api +// @Description Busca os dados de remuneração de um órgão em um ano específico. +// @Produce json +// @Param orgao path string true "ID do órgão. Exemplos: tjal, tjba, mppb." +// @Param ano path int true "Ano. Exemplo: 2018." +// @Success 200 {object} v2AgencyTotalsYear "Requisição bem sucedida." +// @Failure 400 {string} string "Parâmetro ano ou orgao inválido." +// @Router /uiapi/v2/orgao/totais/{orgao}/{ano} [get] func (h handler) V2GetTotalsOfAgencyYear(c echo.Context) error { year, err := strconv.Atoi(c.Param("ano")) if err != nil { @@ -359,6 +359,7 @@ func (h handler) V2GetTotalsOfAgencyYear(c echo.Context) error { HealthAllowance: agencyMonthlyInfo.Summary.ItemSummary.HealthAllowance, Others: agencyMonthlyInfo.Summary.ItemSummary.Others, }, + Inconsistent: agencyMonthlyInfo.Inconsistent, } monthTotalsOfYear = append(monthTotalsOfYear, monthTotals) @@ -496,15 +497,15 @@ func (h handler) GetBasicInfoOfType(c echo.Context) error { return c.JSON(http.StatusOK, state) } -// @ID GetBasicInfoOfType -// @Tags ui_api -// @Description Busca os órgãos de um determinado grupo. -// @Produce json -// @Param grupo path string false "Grupo de órgãos" Enums(justica-eleitoral, ministerios-publicos, justica-estadual, justica-do-trabalho, justica-federal, justica-militar, justica-superior, conselhos-de-justica, AC, AL, AP, AM, BA, CE, DF, ES, GO, MA, MT, MS, MG, PA, PB, PR, PE, PI, RJ, RN, RS, RO, RR, SC, SP, SE, TO) -// @Success 200 {object} state "Órgãos do grupo" -// @Failure 400 {object} string "Parâmetro inválido" -// @Failure 404 {object} string "Grupo não encontrado" -// @Router /uiapi/v2/orgao/{grupo} [get] +// @ID GetBasicInfoOfType +// @Tags ui_api +// @Description Busca os órgãos de um determinado grupo. +// @Produce json +// @Param grupo path string false "Grupo de órgãos" Enums(justica-eleitoral, ministerios-publicos, justica-estadual, justica-do-trabalho, justica-federal, justica-militar, justica-superior, conselhos-de-justica, AC, AL, AP, AM, BA, CE, DF, ES, GO, MA, MT, MS, MG, PA, PB, PR, PE, PI, RJ, RN, RS, RO, RR, SC, SP, SE, TO) +// @Success 200 {object} state "Órgãos do grupo" +// @Failure 400 {object} string "Parâmetro inválido" +// @Failure 404 {object} string "Grupo não encontrado" +// @Router /uiapi/v2/orgao/{grupo} [get] func (h handler) V2GetBasicInfoOfType(c echo.Context) error { groupName := strings.ToLower(c.Param("grupo")) var strAgencies []strModels.Agency @@ -589,15 +590,15 @@ func (h handler) GetGeneralRemunerationFromYear(c echo.Context) error { return c.JSON(http.StatusOK, data) } -// @ID GetGeneralRemunerationFromYear -// @Tags ui_api -// @Description Busca os dados, das remunerações de um ano inteiro, agrupados por mês. -// @Produce json -// @Param ano path string true "Ano da remuneração. Exemplos: 2018, 2019, 2020..." -// @Success 200 {object} []mensalRemuneration "Requisição bem sucedida." -// @Failure 400 {string} string "Parâmetro ano inválido." -// @Failure 500 {string} string "Erro interno." -// @Router /uiapi/v2/geral/remuneracao/{ano} [get] +// @ID GetGeneralRemunerationFromYear +// @Tags ui_api +// @Description Busca os dados, das remunerações de um ano inteiro, agrupados por mês. +// @Produce json +// @Param ano path string true "Ano da remuneração. Exemplos: 2018, 2019, 2020..." +// @Success 200 {object} []mensalRemuneration "Requisição bem sucedida." +// @Failure 400 {string} string "Parâmetro ano inválido." +// @Failure 500 {string} string "Erro interno." +// @Router /uiapi/v2/geral/remuneracao/{ano} [get] func (h handler) V2GetGeneralRemunerationFromYear(c echo.Context) error { year, err := strconv.Atoi(c.Param("ano")) if err != nil { @@ -669,13 +670,13 @@ func (h handler) GeneralSummaryHandler(c echo.Context) error { }) } -// @ID GetGeneralSummary -// @Tags ui_api -// @Description Busca e resume os dados das remunerações de todos os anos -// @Produce json -// @Success 200 {object} generalSummary "Requisição bem sucedida." -// @Failure 500 {string} string "Erro interno do servidor." -// @Router /uiapi/v2/geral/resumo [get] +// @ID GetGeneralSummary +// @Tags ui_api +// @Description Busca e resume os dados das remunerações de todos os anos +// @Produce json +// @Success 200 {object} generalSummary "Requisição bem sucedida." +// @Failure 500 {string} string "Erro interno do servidor." +// @Router /uiapi/v2/geral/resumo [get] func (h handler) GetGeneralSummary(c echo.Context) error { agencies, err := h.client.Db.GetAgenciesCount() if err != nil { @@ -711,18 +712,18 @@ func (h handler) GetGeneralSummary(c echo.Context) error { }) } -// @ID SearchByUrl -// @Tags ui_api -// @Description Faz uma busca por remunerações a partir de filtros -// @Produce json -// @Param anos query string false "Anos a serem pesquisados, separados por virgula. Exemplo: 2018,2019,2020" -// @Param meses query string false "Meses a serem pesquisados, separados por virgula. Exemplo: 1,2,3" -// @Param orgaos query string false "Orgãos a serem pesquisados, separados por virgula. Exemplo: tjal,mpal,mppb" -// @Param categorias query string false "Categorias a serem pesquisadas" Enums(base,outras,descontos) -// @Success 200 {object} searchResponse "Requisição bem sucedida." -// @Failure 400 {string} string "Erro de validação dos parâmetros." -// @Failure 500 {string} string "Erro interno do servidor." -// @Router /uiapi/v2/pesquisar [get] +// @ID SearchByUrl +// @Tags ui_api +// @Description Faz uma busca por remunerações a partir de filtros +// @Produce json +// @Param anos query string false "Anos a serem pesquisados, separados por virgula. Exemplo: 2018,2019,2020" +// @Param meses query string false "Meses a serem pesquisados, separados por virgula. Exemplo: 1,2,3" +// @Param orgaos query string false "Orgãos a serem pesquisados, separados por virgula. Exemplo: tjal,mpal,mppb" +// @Param categorias query string false "Categorias a serem pesquisadas" Enums(base,outras,descontos) +// @Success 200 {object} searchResponse "Requisição bem sucedida." +// @Failure 400 {string} string "Erro de validação dos parâmetros." +// @Failure 500 {string} string "Erro interno do servidor." +// @Router /uiapi/v2/pesquisar [get] func (h handler) SearchByUrl(c echo.Context) error { //Pegando os query params years := c.QueryParam("anos") @@ -761,18 +762,18 @@ func (h handler) SearchByUrl(c echo.Context) error { return c.JSON(http.StatusOK, response) } -// @ID DownloadByUrl -// @Tags ui_api -// @Description Baixa dados referentes a remunerações a partir de filtros -// @Produce json -// @Param anos query string false "Anos a serem pesquisados, separados por virgula. Exemplo: 2018,2019,2020" -// @Param meses query string false "Meses a serem pesquisados, separados por virgula. Exemplo: 1,2,3" -// @Param orgaos query string false "Orgãos a serem pesquisados, separados por virgula. Exemplo: tjal,mpal,mppb" -// @Param categorias query string false "Categorias a serem pesquisadas" Enums(base,outras,descontos) -// @Success 200 {file} file "Arquivo CSV com os dados." -// @Failure 400 {string} string "Erro de validação dos parâmetros." -// @Failure 500 {string} string "Erro interno do servidor." -// @Router /uiapi/v2/download [get] +// @ID DownloadByUrl +// @Tags ui_api +// @Description Baixa dados referentes a remunerações a partir de filtros +// @Produce json +// @Param anos query string false "Anos a serem pesquisados, separados por virgula. Exemplo: 2018,2019,2020" +// @Param meses query string false "Meses a serem pesquisados, separados por virgula. Exemplo: 1,2,3" +// @Param orgaos query string false "Orgãos a serem pesquisados, separados por virgula. Exemplo: tjal,mpal,mppb" +// @Param categorias query string false "Categorias a serem pesquisadas" Enums(base,outras,descontos) +// @Success 200 {file} file "Arquivo CSV com os dados." +// @Failure 400 {string} string "Erro de validação dos parâmetros." +// @Failure 500 {string} string "Erro interno do servidor." +// @Router /uiapi/v2/download [get] func (h handler) DownloadByUrl(c echo.Context) error { //Pegando os query params years := c.QueryParam("anos") @@ -805,15 +806,15 @@ func (h handler) DownloadByUrl(c echo.Context) error { return nil } -// @ID GetAnnualSummary -// @Tags ui_api -// @Description Retorna os dados anuais de um orgão -// @Produce json -// @Param orgao path string true "Nome do orgão" -// @Success 200 {object} []annualSummary "Requisição bem sucedida." -// @Failure 400 {string} string "Parâmetro orgao inválido" -// @Failure 500 {string} string "Algo deu errado ao tentar coletar os dados anuais do orgao" -// @Router /uiapi/v1/orgao/resumo/{orgao} [get] +// @ID GetAnnualSummary +// @Tags ui_api +// @Description Retorna os dados anuais de um orgão +// @Produce json +// @Param orgao path string true "Nome do orgão" +// @Success 200 {object} []annualSummary "Requisição bem sucedida." +// @Failure 400 {string} string "Parâmetro orgao inválido" +// @Failure 500 {string} string "Algo deu errado ao tentar coletar os dados anuais do orgao" +// @Router /uiapi/v1/orgao/resumo/{orgao} [get] func (h handler) GetAnnualSummary(c echo.Context) error { agencyName := c.Param("orgao") strAgency, err := h.client.Db.GetAgency(agencyName) @@ -869,7 +870,8 @@ func (h handler) GetAnnualSummary(c echo.Context) error { Hash: s.Package.Hash, Size: s.Package.Size, }, - ItemSummary: itemSummary, + ItemSummary: itemSummary, + Inconsistent: s.Inconsistent, }) } var collect []collecting diff --git a/uiapi/models.go b/uiapi/models.go index 8ef4a2f..7d98a72 100644 --- a/uiapi/models.go +++ b/uiapi/models.go @@ -168,6 +168,7 @@ type v2MonthTotals struct { RemunerationsPerCapita float64 `json:"remuneracoes_por_membro"` CrawlingTimestamp timestamp `json:"timestamp"` ItemSummary itemSummary `json:"resumo_rubricas"` + Inconsistent bool `json:"inconsistente"` } type timestamp struct { @@ -271,6 +272,7 @@ type annualSummaryData struct { NumMonthsWithData int `json:"meses_com_dados"` Package *backup `json:"package,omitempty"` ItemSummary itemSummary `json:"resumo_rubricas"` + Inconsistent bool `json:"inconsistente"` } type itemSummary struct { diff --git a/uiapi/uiapi_test.go b/uiapi/uiapi_test.go index ec747a3..662c08d 100644 --- a/uiapi/uiapi_test.go +++ b/uiapi/uiapi_test.go @@ -1219,7 +1219,8 @@ func (g getTotalsOfAgencyYear) testWhenDataExists(t *testing.T) { "licenca_compensatoria": 120, "auxilio_saude": 300, "outras": 200 - } + }, + "inconsistente": false } ], "package": { @@ -1393,6 +1394,7 @@ func (g getAnnualSummary) testWhenDataExists(t *testing.T) { HealthAllowance: 300, Others: 200, }, + Inconsistent: true, }, } dbMock.EXPECT().Connect().Return(nil).Times(1) @@ -1462,8 +1464,9 @@ func (g getAnnualSummary) testWhenDataExists(t *testing.T) { "licenca_compensatoria": 120, "auxilio_saude": 300, "outras": 200 - } - } + }, + "inconsistente": true + } ] } `