import fetch from 'isomorphic-fetch'; import { IAllTestContainers, createAllTestContainers } from './containerSetup'; jest.setTimeout(18000_000); describe('GraphQL Apollo tests', () => { let allContainers: IAllTestContainers; beforeAll(async () => { allContainers = await createAllTestContainers(); }); afterAll(async () => { await allContainers.stopAll(); }); describe('Setup containers', () => { it('should have a trivial test', () => { expect(true).toBe(true); }); it('should have access to containers', () => { expect(allContainers).toBeDefined(); }); it('test date on db testcontainer', async () => { const res = await allContainers.db.raw('select now()'); expect(res.rows[0]['now']).toBeInstanceOf(Date); }); it('healthcheck on api testcontainer', async () => { const port = allContainers.apiContainer.getMappedPort(4000); const response = await fetch( `http://localhost:${port}/.well-known/apollo/server-health`, { method: 'GET', }, ); const resp = await response.json(); expect(resp.status).toBe('pass'); }); it('should have some basedata', async () => { const response = await allContainers.db.raw( `SELECT * FROM locales LIMIT 1;`, ); expect(response.rows[0].value).toBe('sv_SE'); expect(response.rows[0].name).toBe('Swedish (Sweden)'); }); it('should be connected to test db', async () => { const port = allContainers.apiContainer.getMappedPort(4000); const response = await fetch(`http://localhost:${port}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ query: ` { designer(id: 1) { id name path } }`, }), }); const resp = await response.json(); const designer = resp.data.designer; expect(designer.id).toBe('1'); expect(designer.name).toBe('Lorem Ipsumsson'); expect(designer.path).toBe('lorem-ipsumsson'); }); }); });