# Passos para teste de novas versões do data-catalog
## Acesso ao tenant ambiente DEV Data Discovery
- url: http://dev.bdd.wssim.com.br:84
- userName: admin@totvscrm.com.br
- pass: totvscrm2k20
- company: datacatalog
## Passo 1 - Atualização do ambiente
### 1.1 - Executar o migration do serviço de negócio
- Executar a migration do serviço de negócio no tenant do datacatalog para atualizar o serviço de negócio
### 1.2 - Atualizar o serviço de negócio no rancher do ambiente
- Entrar em contato com as pessoas abaixo para solicitar a atualização da nova versão do serviço no rancher:
- Everton Pedrolo
- André Gros
- Eduardo Squisatti
- Hendric Cechinato
- Exemplo de serviços que podem ser necessários atualizar: midgard, heimdall, sales
### 1.2 - Inserir dados na tabela/atributo que foi liberado pelo serviço de negócio
- Para testar as modificações feitas pelo serviço, é necessário que tenha dados no atributo ou tabela.
- O BDD tem acesso apenas a registros que possuam o atributo external_id com valores.
- Registros com external_id nulos não são lidos
### 1.3 - Passos para executar o migration no banco do datacatalog
- **Atenção:** O banco de DEV tem nomenclatura no padrão abaixo:
- customer
- product
- Em produção, os bancos tem nomenclatura no padrão:
- db_customer
- Para o teste do script no ambiente DEV, substitua db_ por vazio;
- Executar o script de migrations pelo flyway:
Tenant: 14
> ./gradlew flywayMigrate -Pflyway.url=jdbc:postgresql://dev.bdd.wssim.com.br:5432/sales -Pflyway.user=wealthsystems -Pflyway.password=ws18012001 -Pflyway.table=schema_version -Pflyway.schemas=tenant_number --no-daemon
- Validar se não houve algum conflito de IDs na execução ou algum erro de constraint;
----
## Passo 2 - Validação visual
### 2.1 - Acessar o Data Discovery e criar um novo job de integração

*Data Discovery > Data integration > Jobs*
### 2.2 - Dê um título para o Job de integração
Para facilitar futuramente o teste de integração, dê um nome ao job de teste. Exemplo:

### 2.3 - Selecionar a tabela modificada pelo migration na origem MasterCRM
Exemplo: *Opportunity - Opportunity*
### 2.4 - Selecionar "Analytics" como destino e criar um novo dataset
### 2.5 - Avançar para a tela de mapeamento
Nesta tela é possível validar visualmente se o campo/tabela nova ou alterada modificado pelo script da versão nova está presente no catálogo
### 2.6 - Validar os itens abaixo quanto a consistência
#### 2.6.1 - Se o tipo do campo está correto:
- Correspondente ao campo **field.data_type** no banco de datacatalog. Alguns tipos:
- number: 
- timestamp: 
- date: 
- text: 
- boolean: 
#### 2.6.2 - Se a restrição de not null do campo está de acordo com as necessidade da API de negócio:
- Este controle é feito através do campo **is_nullable**:
- **true** permite valores null;
- **false** não permite null;
- Campos do tipo not null aparecem com um símbolo * antes do nome do campo. Exemplo:
- 
#### 2.6.3 - Se o atributo for depreciado:
- Existe uma flag de controle na tabela field **is_deprecated**. Registros depreciados aparecem em cinza e tachado:
- **true** para atributos depreciados;
- **false** para atributos válidos;
- Exemplo: 
#### 2.6.4 - Se o atributo teve uma breve explicação da sua função:
- Existe um atributo na tabela field chamado de **description** para que seja registrado brevemente sua função.
- Em tela, quando é passado o mouse em cima do atributo, a descrição aparece da seguinte forma:

#### 2.6.5 - Se o atributo for do tipo array
- Se o atributo for do tipo lista, o tratamento também deve ser explicitado no script;
- O controle é feito no campo field.is_array:
- **true** para atributos de lista;
- **false** para outros tipos;
- Em tela o campo do tipo lista é mostrado com os caracteres [] no nome do campo;
-------
## Passo 3 - Integração de teste da entidade alterada
Se todos os passos anteriores estão corretos, por último fazemos uma integração de teste para o analytics com a entidade afetada pela nova versão do migration do catalogo para validar se todos os atributos estão presentes no banco de dados;
#### 3.1 - Avance ao último passo do Job de integração e finalize
No canto direito da tela, finalize o job:

#### 3.2 - Execute o job de integração
Após finalizado, pressione Run para executar o job:

#### 3.3 - Valide os resultados
- Acesse a tela de logs de execução:

- Veja os detalhes da integração:

Se a execução aconteceu com sucesso, significa dizer que todos os atributos foram lidos da maneira esperada ;)