Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao popular banco de dados

Ao executar o comando sudo docker-compose up test é apresentado o seguinte erro:

[+] Building 0.0s (0/0)                                                                                                                                                             docker:default
[+] Running 1/0
 ✔ Container livraria_api_test  Created                                                                                                                                                       0.0s 
Attaching to livraria_api_test
livraria_api_test  | 
livraria_api_test  | > api-js-local@1.0.0 test
livraria_api_test  | > npm rebuild && npm run drop-test-db && export NODE_ENV=test && npm run prepare-test-db && npm run test:mocha && npm run test:jest
livraria_api_test  | 
livraria_api_test  | rebuilt dependencies successfully
livraria_api_test  | 
livraria_api_test  | > api-js-local@1.0.0 drop-test-db
livraria_api_test  | > rm -f ./src/test/livraria.sqlite
livraria_api_test  | 
livraria_api_test  | 
livraria_api_test  | > api-js-local@1.0.0 prepare-test-db
livraria_api_test  | > sqlite3 ./src/test/livraria.sqlite < populate.sql
livraria_api_test  | 
livraria_api_test  | Parse error near line 9: no such column: Júlio Cortázar
livraria_api_test  |        ("Machado de Assis", "brasileira"),         ("Júlio Cortázar", "argenti
livraria_api_test  |                                       error here ---^
livraria_api_test  | Parse error near line 24: no such column: Ateliê
livraria_api_test  |      ("Aleph", "São Paulo", "al@al.com"),         ("Ateliê", "São Paulo", "a@
livraria_api_test  |                                       error here ---^
livraria_api_test  | Parse error near line 42: no such column: Memórias Póstumas de Brás Cubas
livraria_api_test  |   0, 2, 2),    ("Os Despossuídos", 300, 2, 3),    ("Memórias Póstumas de Brá
livraria_api_test  |                                       error here ---^
livraria_api_test exited with code 1

Ao executar o comando comando npm run test diretamente os testes são chamados e passam integralmente, porém usando o docker compose não, como apresentado acima.

1 resposta
solução!

Olá, Ricardo.

Tudo bem?

O erro Parse error near line 9: no such column: Júlio Cortázar sugere que o SQLite está interpretando "Júlio Cortázar" como uma coluna, e não como um valor a ser inserido no banco de dados. Isso geralmente acontece quando os valores não estão corretamente delimitados.

No SQLite, os valores do tipo string devem ser delimitados por aspas simples (''). Portanto, em vez de ter algo como ("Júlio Cortázar", "argentina"), você pode tentar ('Júlio Cortázar', 'argentina') em seu arquivo populate.sql.

O mesmo vale para os outros erros que você mencionou. Todos eles parecem ser causados por strings não delimitadas corretamente.

Portanto, a solução seria revisar seu arquivo populate.sql e garantir que todas as strings estejam corretamente delimitadas por aspas simples. Aqui está um exemplo de como seu arquivo populate.sql deve se parecer:

INSERT INTO Autores (nome, nacionalidade) VALUES
('Machado de Assis', 'brasileira'),
('Júlio Cortázar', 'argentina'),
...

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.