# NANDO Tests ## Setup * git checkout feature/nando_testing (toconline) * ```bundle update pg``` * Aqui deve ser preciso usar o install_name_tool * ```gem install nando``` * ```nando -h``` ## criar db de testes * ```createdb test_nando -U toconline``` * se tudo estiver ok => ```nando up``` --- ## Teste #1 - Criar uma migração com 1 função (up & down) Vais criar 1 migração que atualize 1 função. É preciso escrever tanto o up como o down. Os passos com cada ferramenta vão estar descritos ### Nando * ```nando new NandoTest1``` * ```nando update <path to migration file> -f db/functions/billing/reports/get_customer_balance.sql``` * (indo ao ficheiro, o up deve estar preenchido com a função atualizada, com o raise notice, e o down deve ter as definições anteriores) ### ActiveRecord * ```rails g migration ARTest1``` * se falhar => copiar uma migração anterior "à mão" e apagar o conteúdo antes de começar * copiar o conteúdo da função em "db/functions/billing/reports/get_customer_balance.sql" para o up (dentro de um execute) * ```git checkout master``` * copiar o conteúdo da função em "db/functions/billing/reports/get_customer_balance.sql" para o down (dentro de um execute) * ```git checkout feature/nando_testing``` --- ## Teste #2 - Criar uma migração com 3 funções (up & down) Vais criar 1 migração que atualize 3 funções. É preciso escrever tanto o up como o down. Os passos com cada ferramenta vão estar descritos ### Funções a atualizar: db/functions/billing/reports/get_customer_balance.sql db/functions/billing/reports/get_map_receipts.sql db/functions/billing/reports/get_pending_quotes.sql ### Nando * ```nando new NandoTest2``` * ```nando update <path to migration file> -f ``` * dar paste da lista de funções acima * (indo ao ficheiro, o up deve estar preenchido com as funções atualizadas, com o raise notice, e o down deve ter as definições anteriores) ### ActiveRecord * ```rails g migration ARTest2``` * se falhar => copiar uma migração anterior "à mão" e apagar o conteúdo antes de começar * copiar o conteúdo das 3 funções para o up (dentro de executes separado) * ```git checkout master``` * copiar o conteúdo das 3 funções para o down (dentro de executes separado) * ```git checkout feature/nando_testing``` --- ## Teste #3 - Criar uma migração com 1 alteração de esquema a todas as ### Nando * ```nando new NandoTest3 -t MigrationWithoutTransaction``` * criar 1 ciclo migrate_companies no up (podes copiar de uma migração anterior) * criar 1 ciclo rollback_companies no down (podes copiar de uma migração anterior) * inserir o output do comando diff nos ciclos * ```nando diff schema_1 schema_2``` (dizer 'y' no input) ### ActiveRecord * ```rails g ARTest3``` * se falhar => copiar uma migração anterior "à mão" e apagar o conteúdo antes de começar * criar 1 ciclo migrate_companies no up (podes copiar de uma migração anterior) * criar 1 ciclo rollback_companies no down (podes copiar de uma migração anterior) * inserir no ciclo do up um ```ALTER TABLE``` que adicione uma coluna chamada "name", do tipo "text", que seja NOT NULL * inserir no ciclo do down um ```ALTER TABLE``` que dê drop à coluna chamada "name" --- ## limpar db de testes * ```dropdb test_nando``` * ```gem uninstall nando```