Pular para o conteúdo principal

PricingTableService

Visão Geral

O PricingTableService é responsável por buscar tabelas de preço a partir da API remota. Suporta busca paginada com filtro por data e busca direta por IDs.

Endpoints

MétodoEndpointDescrição
GET/tabelaPrecoBusca lista paginada de tabelas
GET/tabelaPreco/{ids}Busca tabelas de preço por IDs

Métodos

fetchRemote

Busca tabelas de preço da API remota com suporte a paginação e filtro por data.

Parâmetros

NomeTipoObrigatório
pagenumberNão
sizenumberNão
dataHorastringNão

Retorno: Promise<PricingTable[]>

Exemplo

const tables = await pricingTableService.fetchRemote({ page: 0, size: 50 });

Erros

StatusDescrição
5xxLança Error: PricingTableService.fetchRemote failed: ...

fetchRemoteByIds

Busca tabelas de preço específicas por uma string de IDs separados por vírgula.

Parâmetros

NomeTipoObrigatório
idsstringSim

Retorno: Promise<PricingTable[]>

Exemplo

const tables = await pricingTableService.fetchRemoteByIds("tab1,tab2,tab3");

Erros

StatusDescrição
5xxLança Error: PricingTableService.fetchRemoteByIds failed: ...

Estruturas de Dados

PricingTable

type PricingTable = {
id: string;
organizationId: string;
idExterno: string | null;
organizacao: string;
nomeTab: string;
};

FetchPricingTablesParams

type FetchPricingTablesParams = {
page?: number;
size?: number;
dataHora?: string;
};

Componentes Relacionados

ComponenteDescrição
buildQueryParamsSerializa os parâmetros de query para a requisição
apiWithoutAccessTokenInstância Axios sem token de acesso utilizada nas chamadas
PageResponse<T>Tipo genérico de resposta paginada da API

Casos de Uso

Buscar todas as tabelas de preço:

const tables = await pricingTableService.fetchRemote();

Buscar tabelas atualizadas a partir de uma data:

const tables = await pricingTableService.fetchRemote({
page: 0,
size: 100,
dataHora: "2026-03-01T00:00:00",
});

Buscar tabelas específicas por IDs:

const tables = await pricingTableService.fetchRemoteByIds("tab1,tab2");

Testes

Localização: services/pricing-table/pricing-table.service.test.ts

CenárioResultado esperado
fetchRemote com status 200Retorna pricingTablePageResponseMock.content
fetchRemote com status 500Lança Error: PricingTableService.fetchRemote failed
fetchRemoteByIds com status 200Retorna pricingTablePageResponseMock.content
fetchRemoteByIds com status 500Lança Error: PricingTableService.fetchRemoteByIds failed

Mocks

Localização: __mocks__/pricing-table.mock.ts

const pricingTableResponseMock: PricingTable[] = [
{
id: "tab1",
organizationId: "org1",
idExterno: "ext1",
organizacao: "Distribuidora Alfa",
nomeTab: "Tabela Varejo 2026",
},
{
id: "tab2",
organizationId: "org2",
idExterno: null,
organizacao: "Supermercado Beta",
nomeTab: "Tabela Atacado Abril",
},
];