OperationsGroupService
Visão Geral
O OperationsGroupService fornece acesso aos grupos de operações configurados na API (por exemplo: grupos de entrada, saída, transferência, ajuste). É usado para listar grupos e seus tipos de operação associados, com suporte a paginação.
Localização: services/operations-group/operations-group.service.ts
Endpoints
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /gruposOperacao | Busca lista paginada de grupos |
Métodos
fetchRemote(params)
Busca grupos de operação na API remota com paginação.
Parâmetros
| Nome | Tipo | Obrigatório |
|---|---|---|
page | number | Não |
size | number | Não |
Retorno: Promise<OperationsGroup[]>
Exemplo
const groups = await operationsGroupService.fetchRemote({ page: 0, size: 50 });
Erros
| Status | Descrição |
|---|---|
| 5xx | Lança Error: OperationsGroupService.fetchRemote failed: {status} |
Estruturas de Dados
OperationsGroup
interface OperationsGroup {
id: string;
nome: string;
idOrganization: string;
typeOperations: Array<{ id: string; idExterno?: string; nome: string }>;
dhCriacao: string;
dhAlteracao: string;
}
typeOperationscontém uma lista dos tipos de operação pertencentes ao grupo (apenasid,idExternoenomesão utilizados na resposta mock).
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 |
Casos de Uso
Listar todos os grupos de operações:
const groups = await operationsGroupService.fetchRemote();
console.log(groups.length);
Popular select de grupos e tipos de operação:
const groups = await operationsGroupService.fetchRemote();
const options = groups.map((g) => ({
label: g.nome,
value: g.id,
children: g.typeOperations.map((t) => ({ label: t.nome, value: t.id })),
}));
Testes
Localização: services/operations-group/operations-group.service.test.ts
| Cenário | Resultado esperado |
|---|---|
fetchRemote com status 200 | Retorna operationsGroupResponseMock.content |
fetchRemote com status 500 | Lança Error: OperationsGroupService.fetchRemote failed |
Mocks
Localização: __mocks__/operations-group.mock.ts
operationsGroupResponseMock— objeto paginado comcontent(lista deOperationsGroup) e metadados de paginação.
Exemplo de uso em testes:
import { operationsGroupResponseMock } from "@/__mocks__/operations-group.mock";
const api: any = {
get: jest.fn(async () => ({
status: 200,
data: operationsGroupResponseMock,
})),
};
const service = new OperationsGroupService({ apiWithoutAccessToken: api });
const result = await service.fetchRemote();
expect(result).toStrictEqual(operationsGroupResponseMock.content);
Instância
Localização: services/operations-group/operations-group.service.instance.ts
import { operationsGroupService } from "@/services/operations-group/operations-group.service.instance";