Skip to content

feat(accounts): implementa módulo de contas financeiras com isolamento multi-tenant e testes - #5

Merged
davidmartins-dev merged 1 commit into
mainfrom
feature/accounts
Oct 16, 2026
Merged

davidmartins-dev merged 1 commit into
mainfrom
feature/accounts

Conversation

@davidmartins-dev

Copy link
Copy Markdown
Owner

Contexto

Implementação do módulo de gerenciamento de Contas Financeiras (Accounts) na API, permitindo que usuários autenticados criem, consultem, atualizem e excluam suas contas (carteiras, contas correntes, investimentos, etc.), garantindo isolamento total de dados entre tenants.


O que foi feito

  • Modelagem & Banco de Dados:
    • Adicionado enum AccountType (CHECKING, SAVINGS, INVESTMENT, CASH, OTHER).
    • Adicionada tabela Account com chave estrangeira para User e índices de performance (userId, userId + name).
    • Gerada migração SQL via Prisma (20261016203813_add_accounts).
  • Camada de Aplicação (NestJS):
    • DTOs CreateAccountDto e UpdateAccountDto com validações via class-validator (tipagem, limites de caracteres e regex hexadecimal para cores).
    • AccountsService e AccountsController protegidos por autenticação JWT (JwtAuthGuard), vinculando operações exclusivamente ao userId autenticado.
    • Implementação de regras de negócio: validação de duplicação de nome por usuário, sanitização de campos e soft/hard delete condicional.
  • Testes & Qualidade:
    • Testes unitários para AccountsService e AccountsController.
    • Testes E2E cobrindo CRUD completo, bloqueio de acesso sem autenticação (401) e validação de isolamento entre múltiplos usuários (404/Forbidden ao tentar acessar conta de outro usuário).
    • Validação estrita de tipos com TypeScript (npx tsc --noEmit).

Como testar

  1. Executar migrações do banco:
    npm run prisma:migrate:dev --workspace=apps/api

@davidmartins-dev
davidmartins-dev merged commit 3b435ef into main Oct 16, 2026
1 check passed
@davidmartins-dev
davidmartins-dev deleted the feature/accounts branch October 16, 2026 21:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant