# 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.