---
# System prepended metadata

title: Testes de CRUD

---

# Testes de CRUD

* getbyID
    * se existe e encontra
    * se não eciste e emite erro
* get All
    * se existe retorna lista com mesmo numero de itens
    * se não existe retorna lista vazia
* delete
    * se existe, encontra e deleta
    * se não existe retorna OK
* update
    * se existe, encontra, altera os dados, e chama o salvar
    * se não existe retornar OK

---

* Máximo de 100 namespaces
* Máximo de 10 eventhubs por namescpace
* Namespace não pode ter mais que 10 event hubs
    * Procurar novo namespace com menos de 10 eventhubs 
    * E caso não tenha criar novo namespace caso já tenha 10
*

# Testes já implementados para API Admin(Azure Adapter)
* Inclusão de eventhub num namespace não vazio e não cheio.
    * Testa se chamou o metodo de criacao de eventhub só uma vez
    * E não criou nenhum namespace
* Retry da criação do eventhub caso falhe
    * 3 vezes
* Criacao de eventhub com um namespace cheio
    * Testa se chamou o metodo de criacao de eventhub
    * E se chamou a criacao de um namescapce
* Criacao de um namespace já contendo o máximo de namespaces permitidos
    * teste se um erro é emitido

# Testes pendentes para API Admin
## Services
### Data channel
* Criação
    * [x] Falha na conecção com o Redis
    * [x] Testa se encontrar duplicidade de tópico
            * Existe tópico e emite erro
    * [x] Happy Path: Não existe tópico e cria novo
* Change status
    * [x] Se não encontrar dar error
    * [x] se o status foi alterado e chama o salvar
* CRUD: 
    * [x] get by id, 
    * [x] get all,
    * [x] delete, 
    * [x] update

### Create Data Flow 
* CRUD: 
    * [x] get by id, 
    * [x] get all,
    * [x] delete, 
    * [x] update
* Event CRUD: 
    * [x] Create event
    * [x] get events
    * [x] get flows
### Create Data Producer
* CRUD: 
    * [ ] get by id, 
    * [ ] get all,
    * [x] delete, 
    * [ ] update
### Get Message By Id e All
* CRUD: 
    * [ ] get by id, 
    * [ ] get all,
## Adapters
### Elastic Search
Não faz sentido testes unitários para o ElasticSearch, pois os métodos são só contrutores de query do próprio Elastic. 
Aqui é melhor testes de integração, povoando o *banco* e fazendo a consulta.
**Preciso de orientação sobre como usar o Elastic**


* get topic between data range
    * data são consistentes, se não forem tem que dar erro
    * se não encontrar nada: retorna vazia
    * se as datas limites também dão match
* get message de um topic by id
* CRUD
    * [ ] get mensagem de um topic by id. Se não encontrar, deve retornar um erro

### Redis

Temos um job recorrente para pegar entidades do banco (uma lista/batch delas) e persistir em cache. DataChannels, DataProducers e DataFlows.

* Testar se os DataChannels, DataFlows e DataProducers que estou pegando do banco, de fato, estão sendo salvos no Redis.
* O formato da hash do redis é importante. Então, seria legal fazer um assert do resultado de uma query no redis para verificar se o formato do corpo da persistência é o esperado.

