ReasonsNotSellingService
Visão Geral
O ReasonsNotSellingService fornece acesso aos motivos de não-venda cadastrados na API (ex: preço, prazo, falta de orçamento). É usado para obter a lista de motivos com suporte a paginação e sincronização incremental.
Localização: services/reasons-not-selling/reasons-not-selling.service.ts
Endpoints
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /motivosNaoVenda | Busca lista paginada de motivos |
Métodos
fetchRemote(params)
Busca motivos de não-venda na API remota com paginação e filtro por data.
Parâmetros
| Nome | Tipo | Obrigatório |
|---|---|---|
page | number | Não |
size | number | Não |
dataHora | string | Não |
Retorno: Promise<ReasonsNotSelling[]>
Exemplo
const reasons = await reasonsNotSellingService.fetchRemote({ page: 0, size: 50 });
Erros
| Status | Descrição |
|---|---|
| 5xx | Lança Error: ReasonsNotSellingService.fetchRemote failed: {status} |
Estruturas de Dados
ReasonsNotSelling
interface ReasonsNotSelling {
id: string;
idOrganization: string;
nome: string;
ativo: string;
dhCriacao: string;
dhAlteracao: string;
}
Componentes Relacionados
| Componente | Descrição |
|---|---|
buildQueryParams | Serializa os parâmetros de query para a requisição |
apiWithoutAccessToken | Instância Axios sem token de acesso utilizada nas chamadas |
PageResponse<T> | Tipo genérico de resposta paginada da API |
reasons-not-selling.service.instance.ts | Instância: reasonsNotSellingService |
Casos de Uso
Buscar motivos ativos:
const reasons = await reasonsNotSellingService.fetchRemote();
const active = reasons.filter(r => r.ativo === "S");
Buscar motivos atualizados após uma data:
const recent = await reasonsNotSellingService.fetchRemote({ dataHora: "2026-03-01T00:00:00" });
Testes
Localização: services/reasons-not-selling/reasons-not-selling.service.test.ts
| Cenário | Resultado esperado |
|---|---|
fetchRemote com status 200 | Retorna reasonsNotSellingResponseMock.content |
fetchRemote com status 500 | Lança Error: ReasonsNotSellingService.fetchRemote failed |
Mocks
Localização: __mocks__/reasons-not-selling.mock.ts
reasonsNotSellingResponseMock— objeto paginado comcontent(lista deReasonsNotSelling) e metadados.
Exemplo de uso em testes:
import { reasonsNotSellingResponseMock } from "@/__mocks__/reasons-not-selling.mock";
const api: any = { get: jest.fn(async () => ({ status: 200, data: reasonsNotSellingResponseMock })) };
const service = new ReasonsNotSellingService({ apiWithoutAccessToken: api });
const result = await service.fetchRemote();
expect(result).toStrictEqual(reasonsNotSellingResponseMock.content);