/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/unbound-method */ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import { Connection } from '@dbTools/typeorm' import { FederatedCommunity as DbFederatedCommunity } from '@entity/FederatedCommunity' import { ApolloServerTestClient } from 'apollo-server-testing' import { testEnvironment } from '@test/helpers' import { getCommunities } from '@/seeds/graphql/queries' // to do: We need a setup for the tests that closes the connection let query: ApolloServerTestClient['query'], con: Connection let testEnv: { mutate: ApolloServerTestClient['mutate'] query: ApolloServerTestClient['query'] con: Connection } beforeAll(async () => { testEnv = await testEnvironment() query = testEnv.query con = testEnv.con await DbFederatedCommunity.clear() }) afterAll(async () => { await con.close() }) describe('CommunityResolver', () => { describe('getCommunities', () => { let homeCom1: DbFederatedCommunity let homeCom2: DbFederatedCommunity let homeCom3: DbFederatedCommunity let foreignCom1: DbFederatedCommunity let foreignCom2: DbFederatedCommunity let foreignCom3: DbFederatedCommunity describe('with empty list', () => { it('returns no community entry', async () => { // const result: Community[] = await query({ query: getCommunities }) // expect(result.length).toEqual(0) await expect(query({ query: getCommunities })).resolves.toMatchObject({ data: { getCommunities: [], }, }) }) }) describe('only home-communities entries', () => { beforeEach(async () => { jest.clearAllMocks() homeCom1 = DbFederatedCommunity.create() homeCom1.foreign = false homeCom1.publicKey = Buffer.from('publicKey-HomeCommunity') homeCom1.apiVersion = '1_0' homeCom1.endPoint = 'http://localhost/api' homeCom1.createdAt = new Date() await DbFederatedCommunity.insert(homeCom1) homeCom2 = DbFederatedCommunity.create() homeCom2.foreign = false homeCom2.publicKey = Buffer.from('publicKey-HomeCommunity') homeCom2.apiVersion = '1_1' homeCom2.endPoint = 'http://localhost/api' homeCom2.createdAt = new Date() await DbFederatedCommunity.insert(homeCom2) homeCom3 = DbFederatedCommunity.create() homeCom3.foreign = false homeCom3.publicKey = Buffer.from('publicKey-HomeCommunity') homeCom3.apiVersion = '2_0' homeCom3.endPoint = 'http://localhost/api' homeCom3.createdAt = new Date() await DbFederatedCommunity.insert(homeCom3) }) it('returns 3 home-community entries', async () => { await expect(query({ query: getCommunities })).resolves.toMatchObject({ data: { getCommunities: [ { id: 3, foreign: homeCom3.foreign, publicKey: expect.stringMatching('publicKey-HomeCommunity'), url: expect.stringMatching('http://localhost/api/2_0'), lastAnnouncedAt: null, verifiedAt: null, lastErrorAt: null, createdAt: homeCom3.createdAt.toISOString(), updatedAt: null, }, { id: 2, foreign: homeCom2.foreign, publicKey: expect.stringMatching('publicKey-HomeCommunity'), url: expect.stringMatching('http://localhost/api/1_1'), lastAnnouncedAt: null, verifiedAt: null, lastErrorAt: null, createdAt: homeCom2.createdAt.toISOString(), updatedAt: null, }, { id: 1, foreign: homeCom1.foreign, publicKey: expect.stringMatching('publicKey-HomeCommunity'), url: expect.stringMatching('http://localhost/api/1_0'), lastAnnouncedAt: null, verifiedAt: null, lastErrorAt: null, createdAt: homeCom1.createdAt.toISOString(), updatedAt: null, }, ], }, }) }) }) describe('plus foreign-communities entries', () => { beforeEach(async () => { jest.clearAllMocks() foreignCom1 = DbFederatedCommunity.create() foreignCom1.foreign = true foreignCom1.publicKey = Buffer.from('publicKey-ForeignCommunity') foreignCom1.apiVersion = '1_0' foreignCom1.endPoint = 'http://remotehost/api' foreignCom1.createdAt = new Date() await DbFederatedCommunity.insert(foreignCom1) foreignCom2 = DbFederatedCommunity.create() foreignCom2.foreign = true foreignCom2.publicKey = Buffer.from('publicKey-ForeignCommunity') foreignCom2.apiVersion = '1_1' foreignCom2.endPoint = 'http://remotehost/api' foreignCom2.createdAt = new Date() await DbFederatedCommunity.insert(foreignCom2) foreignCom3 = DbFederatedCommunity.create() foreignCom3.foreign = true foreignCom3.publicKey = Buffer.from('publicKey-ForeignCommunity') foreignCom3.apiVersion = '1_2' foreignCom3.endPoint = 'http://remotehost/api' foreignCom3.createdAt = new Date() await DbFederatedCommunity.insert(foreignCom3) }) it('returns 3 home community and 3 foreign community entries', async () => { await expect(query({ query: getCommunities })).resolves.toMatchObject({ data: { getCommunities: [ { id: 3, foreign: homeCom3.foreign, publicKey: expect.stringMatching('publicKey-HomeCommunity'), url: expect.stringMatching('http://localhost/api/2_0'), lastAnnouncedAt: null, verifiedAt: null, lastErrorAt: null, createdAt: homeCom3.createdAt.toISOString(), updatedAt: null, }, { id: 2, foreign: homeCom2.foreign, publicKey: expect.stringMatching('publicKey-HomeCommunity'), url: expect.stringMatching('http://localhost/api/1_1'), lastAnnouncedAt: null, verifiedAt: null, lastErrorAt: null, createdAt: homeCom2.createdAt.toISOString(), updatedAt: null, }, { id: 1, foreign: homeCom1.foreign, publicKey: expect.stringMatching('publicKey-HomeCommunity'), url: expect.stringMatching('http://localhost/api/1_0'), lastAnnouncedAt: null, verifiedAt: null, lastErrorAt: null, createdAt: homeCom1.createdAt.toISOString(), updatedAt: null, }, { id: 6, foreign: foreignCom3.foreign, publicKey: expect.stringMatching('publicKey-ForeignCommunity'), url: expect.stringMatching('http://remotehost/api/1_2'), lastAnnouncedAt: null, verifiedAt: null, lastErrorAt: null, createdAt: foreignCom3.createdAt.toISOString(), updatedAt: null, }, { id: 5, foreign: foreignCom2.foreign, publicKey: expect.stringMatching('publicKey-ForeignCommunity'), url: expect.stringMatching('http://remotehost/api/1_1'), lastAnnouncedAt: null, verifiedAt: null, lastErrorAt: null, createdAt: foreignCom2.createdAt.toISOString(), updatedAt: null, }, { id: 4, foreign: foreignCom1.foreign, publicKey: expect.stringMatching('publicKey-ForeignCommunity'), url: expect.stringMatching('http://remotehost/api/1_0'), lastAnnouncedAt: null, verifiedAt: null, lastErrorAt: null, createdAt: foreignCom1.createdAt.toISOString(), updatedAt: null, }, ], }, }) }) }) }) })