From ead353b4d645449442c3fe1e4a797834099582e7 Mon Sep 17 00:00:00 2001 From: Guillaume Gautreau Date: Thu, 2 Jun 2022 16:51:40 +0200 Subject: [PATCH 1/2] chore(firebase): add new empty classes for firebase Linked to CU-2d8jkkx --- .../datasource-firebase/src/collection.ts | 28 ++++++++++ .../datasource-firebase/src/datasource.ts | 8 +++ packages/datasource-firebase/src/index.ts | 10 ++++ .../test/collection.test.ts | 54 +++++++++++++++++++ .../test/datasource.test.ts | 16 ++++++ .../datasource-firebase/test/index.test.ts | 19 +++++-- 6 files changed, 132 insertions(+), 3 deletions(-) create mode 100644 packages/datasource-firebase/src/collection.ts create mode 100644 packages/datasource-firebase/src/datasource.ts create mode 100644 packages/datasource-firebase/test/collection.test.ts create mode 100644 packages/datasource-firebase/test/datasource.test.ts diff --git a/packages/datasource-firebase/src/collection.ts b/packages/datasource-firebase/src/collection.ts new file mode 100644 index 0000000000..e81fffe541 --- /dev/null +++ b/packages/datasource-firebase/src/collection.ts @@ -0,0 +1,28 @@ +import { + AggregateResult, + BaseCollection, + RecordData, + TSchema, +} from '@forestadmin/datasource-toolkit'; + +export default class FirebaseCollection extends BaseCollection { + create(): Promise { + throw new Error('Method not implemented.'); + } + + list(): Promise { + throw new Error('Method not implemented.'); + } + + update(): Promise { + throw new Error('Method not implemented.'); + } + + delete(): Promise { + throw new Error('Method not implemented.'); + } + + aggregate(): Promise[]> { + throw new Error('Method not implemented.'); + } +} diff --git a/packages/datasource-firebase/src/datasource.ts b/packages/datasource-firebase/src/datasource.ts new file mode 100644 index 0000000000..10f6f4e67c --- /dev/null +++ b/packages/datasource-firebase/src/datasource.ts @@ -0,0 +1,8 @@ +import { BaseDataSource, Logger } from '@forestadmin/datasource-toolkit'; +import FirebaseCollection from './collection'; + +export default class FirebaseDatasource extends BaseDataSource { + constructor(private readonly logger?: Logger) { + super(); + } +} diff --git a/packages/datasource-firebase/src/index.ts b/packages/datasource-firebase/src/index.ts index e69de29bb2..ba7a0ed6f6 100644 --- a/packages/datasource-firebase/src/index.ts +++ b/packages/datasource-firebase/src/index.ts @@ -0,0 +1,10 @@ +import { DataSourceFactory, Logger } from '@forestadmin/datasource-toolkit'; + +import FirebaseDataSource from './datasource'; + +export { default as FirebaseCollection } from './collection'; +export { default as FirebaseDataSource } from './datasource'; + +export function createFirebaseDataSource(): DataSourceFactory { + return async (logger: Logger) => new FirebaseDataSource(logger); +} diff --git a/packages/datasource-firebase/test/collection.test.ts b/packages/datasource-firebase/test/collection.test.ts new file mode 100644 index 0000000000..612f553249 --- /dev/null +++ b/packages/datasource-firebase/test/collection.test.ts @@ -0,0 +1,54 @@ +import { FirebaseCollection, FirebaseDataSource } from '../src'; + +describe('FirebaseCollection', () => { + it('should allow to create a collection', () => { + const datasource = {} as unknown as FirebaseDataSource; + const collection = new FirebaseCollection('test', datasource); + expect(collection).toBeInstanceOf(FirebaseCollection); + }); + + describe('create', () => { + it('should throw an error', async () => { + const datasource = {} as unknown as FirebaseDataSource; + const collection = new FirebaseCollection('test', datasource); + + await expect(collection.create()).rejects.toThrow('Method not implemented.'); + }); + }); + + describe('list', () => { + it('should throw an error', async () => { + const datasource = {} as unknown as FirebaseDataSource; + const collection = new FirebaseCollection('test', datasource); + + await expect(collection.list()).rejects.toThrow('Method not implemented.'); + }); + }); + + describe('update', () => { + it('should throw an error', async () => { + const datasource = {} as unknown as FirebaseDataSource; + const collection = new FirebaseCollection('test', datasource); + + await expect(collection.update()).rejects.toThrow('Method not implemented.'); + }); + }); + + describe('delete', () => { + it('should throw an error', async () => { + const datasource = {} as unknown as FirebaseDataSource; + const collection = new FirebaseCollection('test', datasource); + + await expect(collection.delete()).rejects.toThrow('Method not implemented.'); + }); + }); + + describe('aggregate', () => { + it('should throw an error', async () => { + const datasource = {} as unknown as FirebaseDataSource; + const collection = new FirebaseCollection('test', datasource); + + await expect(collection.aggregate()).rejects.toThrow('Method not implemented.'); + }); + }); +}); diff --git a/packages/datasource-firebase/test/datasource.test.ts b/packages/datasource-firebase/test/datasource.test.ts new file mode 100644 index 0000000000..e9093880c5 --- /dev/null +++ b/packages/datasource-firebase/test/datasource.test.ts @@ -0,0 +1,16 @@ +import { Logger } from '@forestadmin/datasource-toolkit'; + +import { FirebaseDataSource } from '../src'; + +describe('FirebaseDataSource', () => { + it('should create a new datasource without a logger', () => { + const datasource = new FirebaseDataSource(); + expect(datasource).toBeInstanceOf(FirebaseDataSource); + }); + + it('should create a new datasource with a logger', () => { + const logger = {}; + const datasource = new FirebaseDataSource(logger as unknown as Logger); + expect(datasource).toBeInstanceOf(FirebaseDataSource); + }); +}); diff --git a/packages/datasource-firebase/test/index.test.ts b/packages/datasource-firebase/test/index.test.ts index 9875f2acbd..ddd8cc5a66 100644 --- a/packages/datasource-firebase/test/index.test.ts +++ b/packages/datasource-firebase/test/index.test.ts @@ -1,5 +1,18 @@ -describe('firebase > index', () => { - it('should build (fake test to be able to create the package)', () => { - expect(true).toBeTruthy(); +import { FirebaseCollection, FirebaseDataSource, createFirebaseDataSource } from '../src/index'; + +describe('exports', () => { + describe('createFirebaseDataSource', () => { + it('should export a factory function', () => { + expect(createFirebaseDataSource).toBeInstanceOf(Function); + }); + }); + + describe.each([ + ['FirebaseCollection', FirebaseCollection], + ['FirebaseDataSource', FirebaseDataSource], + ])('class %s', (message, type) => { + it('should be defined', () => { + expect(type).toBeDefined(); + }); }); }); From f4f5e21e08cc58f1a7c4b2b35656dbbd00d447bb Mon Sep 17 00:00:00 2001 From: Guillaume Gautreau Date: Thu, 2 Jun 2022 16:58:12 +0200 Subject: [PATCH 2/2] chore: use async methods and fix tests --- packages/datasource-firebase/src/collection.ts | 10 +++++----- packages/datasource-firebase/test/collection.test.ts | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/datasource-firebase/src/collection.ts b/packages/datasource-firebase/src/collection.ts index e81fffe541..563190f9f9 100644 --- a/packages/datasource-firebase/src/collection.ts +++ b/packages/datasource-firebase/src/collection.ts @@ -6,23 +6,23 @@ import { } from '@forestadmin/datasource-toolkit'; export default class FirebaseCollection extends BaseCollection { - create(): Promise { + async create(): Promise { throw new Error('Method not implemented.'); } - list(): Promise { + async list(): Promise { throw new Error('Method not implemented.'); } - update(): Promise { + async update(): Promise { throw new Error('Method not implemented.'); } - delete(): Promise { + async delete(): Promise { throw new Error('Method not implemented.'); } - aggregate(): Promise[]> { + async aggregate(): Promise[]> { throw new Error('Method not implemented.'); } } diff --git a/packages/datasource-firebase/test/collection.test.ts b/packages/datasource-firebase/test/collection.test.ts index 612f553249..0a9304d9dc 100644 --- a/packages/datasource-firebase/test/collection.test.ts +++ b/packages/datasource-firebase/test/collection.test.ts @@ -12,7 +12,7 @@ describe('FirebaseCollection', () => { const datasource = {} as unknown as FirebaseDataSource; const collection = new FirebaseCollection('test', datasource); - await expect(collection.create()).rejects.toThrow('Method not implemented.'); + await expect(collection.create()).rejects.toEqual(new Error('Method not implemented.')); }); }); @@ -21,7 +21,7 @@ describe('FirebaseCollection', () => { const datasource = {} as unknown as FirebaseDataSource; const collection = new FirebaseCollection('test', datasource); - await expect(collection.list()).rejects.toThrow('Method not implemented.'); + await expect(collection.list()).rejects.toEqual(new Error('Method not implemented.')); }); }); @@ -30,7 +30,7 @@ describe('FirebaseCollection', () => { const datasource = {} as unknown as FirebaseDataSource; const collection = new FirebaseCollection('test', datasource); - await expect(collection.update()).rejects.toThrow('Method not implemented.'); + await expect(collection.update()).rejects.toEqual(new Error('Method not implemented.')); }); }); @@ -39,7 +39,7 @@ describe('FirebaseCollection', () => { const datasource = {} as unknown as FirebaseDataSource; const collection = new FirebaseCollection('test', datasource); - await expect(collection.delete()).rejects.toThrow('Method not implemented.'); + await expect(collection.delete()).rejects.toEqual(new Error('Method not implemented.')); }); }); @@ -48,7 +48,7 @@ describe('FirebaseCollection', () => { const datasource = {} as unknown as FirebaseDataSource; const collection = new FirebaseCollection('test', datasource); - await expect(collection.aggregate()).rejects.toThrow('Method not implemented.'); + await expect(collection.aggregate()).rejects.toEqual(new Error('Method not implemented.')); }); }); });