From 6c93a6799e1befc7221b54a2dff1a0dc58d6c903 Mon Sep 17 00:00:00 2001 From: Renan Mendes Carvalho Date: Fri, 8 Sep 2023 13:31:12 +0200 Subject: [PATCH] refactor(plugins/home): Simplify VisitsApi method names Signed-off-by: Renan Mendes Carvalho --- plugins/home/api-report.md | 8 +-- .../home/src/api/CoreStorageVisitsApi.test.ts | 6 +-- .../src/api/LocalStorageVisitsApi.test.ts | 6 +-- plugins/home/src/api/VisitsApi.ts | 4 +- plugins/home/src/api/VisitsApiFactory.test.ts | 50 +++++++++---------- plugins/home/src/api/VisitsApiFactory.ts | 13 +++-- .../src/components/VisitListener.test.tsx | 14 +++--- plugins/home/src/components/VisitListener.tsx | 2 +- .../VisitedByType/Content.test.tsx | 4 +- .../VisitedByType/Content.tsx | 4 +- .../HomePageVisitedByType.stories.tsx | 4 +- 11 files changed, 58 insertions(+), 57 deletions(-) diff --git a/plugins/home/api-report.md b/plugins/home/api-report.md index 2dc1aca8e2..a71916d8b3 100644 --- a/plugins/home/api-report.md +++ b/plugins/home/api-report.md @@ -262,8 +262,8 @@ export const VisitListener: ({ // @public export interface VisitsApi { - listVisits(queryParams?: VisitsApiQueryParams): Promise; - saveVisit(saveParams: VisitsApiSaveParams): Promise; + list(queryParams?: VisitsApiQueryParams): Promise; + save(saveParams: VisitsApiSaveParams): Promise; } // @public @@ -277,7 +277,7 @@ export class VisitsApiFactory implements VisitsApi { // (undocumented) protected readonly limit: number; // (undocumented) - listVisits(queryParams?: VisitsApiQueryParams): Promise; + list(queryParams?: VisitsApiQueryParams): Promise; // (undocumented) protected persistAll: (visits: Array) => Promise; // (undocumented) @@ -285,7 +285,7 @@ export class VisitsApiFactory implements VisitsApi { // (undocumented) protected retrieveAll: () => Promise>; // (undocumented) - saveVisit(saveParams: VisitsApiSaveParams): Promise; + save(saveParams: VisitsApiSaveParams): Promise; } // @public (undocumented) diff --git a/plugins/home/src/api/CoreStorageVisitsApi.test.ts b/plugins/home/src/api/CoreStorageVisitsApi.test.ts index ab5d66c495..e1f39d8464 100644 --- a/plugins/home/src/api/CoreStorageVisitsApi.test.ts +++ b/plugins/home/src/api/CoreStorageVisitsApi.test.ts @@ -59,7 +59,7 @@ describe('CoreStorageVisitsApi.create({ storageApi: MockStorageApi.create() })', entityRef: 'component:default/playback-order', name: 'Playback Order', }; - const returnedVisit = await api.saveVisit({ visit }); + const returnedVisit = await api.save({ visit }); expect(returnedVisit).toEqual(expect.objectContaining(visit)); expect(returnedVisit.id).toBeTruthy(); expect(returnedVisit.timestamp).toBeTruthy(); @@ -76,8 +76,8 @@ describe('CoreStorageVisitsApi.create({ storageApi: MockStorageApi.create() })', entityRef: 'component:default/playback-order', name: 'Playback Order', }; - const returnedVisit = await api.saveVisit({ visit }); - const visits = await api.listVisits(); + const returnedVisit = await api.save({ visit }); + const visits = await api.list(); expect(visits).toHaveLength(1); expect(visits).toEqual([expect.objectContaining(visit)]); expect(visits).toEqual([returnedVisit]); diff --git a/plugins/home/src/api/LocalStorageVisitsApi.test.ts b/plugins/home/src/api/LocalStorageVisitsApi.test.ts index c17fa3cfb8..eb19859055 100644 --- a/plugins/home/src/api/LocalStorageVisitsApi.test.ts +++ b/plugins/home/src/api/LocalStorageVisitsApi.test.ts @@ -53,7 +53,7 @@ describe('LocalStorageVisitsApi.create()', () => { entityRef: 'component:default/playback-order', name: 'Playback Order', }; - const returnedVisit = await api.saveVisit({ visit }); + const returnedVisit = await api.save({ visit }); expect(returnedVisit).toEqual(expect.objectContaining(visit)); expect(returnedVisit.id).toBeTruthy(); expect(returnedVisit.timestamp).toBeTruthy(); @@ -67,8 +67,8 @@ describe('LocalStorageVisitsApi.create()', () => { entityRef: 'component:default/playback-order', name: 'Playback Order', }; - const returnedVisit = await api.saveVisit({ visit }); - const visits = await api.listVisits(); + const returnedVisit = await api.save({ visit }); + const visits = await api.list(); expect(visits).toHaveLength(1); expect(visits).toEqual([expect.objectContaining(visit)]); expect(visits).toEqual([returnedVisit]); diff --git a/plugins/home/src/api/VisitsApi.ts b/plugins/home/src/api/VisitsApi.ts index ab53ea7f10..ab43d1c7a7 100644 --- a/plugins/home/src/api/VisitsApi.ts +++ b/plugins/home/src/api/VisitsApi.ts @@ -106,12 +106,12 @@ export interface VisitsApi { * Persist a new visit. * @param pageVisit - a new visit data */ - saveVisit(saveParams: VisitsApiSaveParams): Promise; + save(saveParams: VisitsApiSaveParams): Promise; /** * Get user visits. * @param queryParams - optional search query params. */ - listVisits(queryParams?: VisitsApiQueryParams): Promise; + list(queryParams?: VisitsApiQueryParams): Promise; } /** @public */ diff --git a/plugins/home/src/api/VisitsApiFactory.test.ts b/plugins/home/src/api/VisitsApiFactory.test.ts index 3281c320b7..8c19a8e6a5 100644 --- a/plugins/home/src/api/VisitsApiFactory.test.ts +++ b/plugins/home/src/api/VisitsApiFactory.test.ts @@ -66,7 +66,7 @@ describe('new MemoryVisitsApi()', () => { expect(api).toBeTruthy(); }); - describe('.saveVisit()', () => { + describe('.save()', () => { it('saves a visit', async () => { const api = new MemoryVisitsApi(); const visit = { @@ -74,7 +74,7 @@ describe('new MemoryVisitsApi()', () => { entityRef: 'component:default/playback-order', name: 'Playback Order', }; - const returnedVisit = await api.saveVisit({ visit }); + const returnedVisit = await api.save({ visit }); expect(returnedVisit).toEqual(expect.objectContaining(visit)); expect(returnedVisit.id).toBeTruthy(); expect(returnedVisit.timestamp).toBeTruthy(); @@ -90,22 +90,22 @@ describe('new MemoryVisitsApi()', () => { name: 'Playback Order', }; jest.setSystemTime(baseDate); - await api.saveVisit({ visit: visit1 }); + await api.save({ visit: visit1 }); const visit2 = { pathname: '/catalog/default/component/playback-order-2', entityRef: 'component:default/playback-order', name: 'Playback Order', }; jest.setSystemTime(baseDate + 360_000); - await api.saveVisit({ visit: visit2 }); + await api.save({ visit: visit2 }); const visit3 = { pathname: '/catalog/default/component/playback-order-3', entityRef: 'component:default/playback-order', name: 'Playback Order', }; jest.setSystemTime(baseDate + 360_000 * 2); - await api.saveVisit({ visit: visit3 }); - const visits = await api.listVisits(); + await api.save({ visit: visit3 }); + const visits = await api.list(); expect(visits).toHaveLength(2); expect(visits).toContainEqual(expect.objectContaining(visit2)); expect(visits).toContainEqual(expect.objectContaining(visit3)); @@ -118,9 +118,9 @@ describe('new MemoryVisitsApi()', () => { entityRef: 'component:default/playback-order', name: 'Playback Order', }; - const visit1 = await api.saveVisit({ visit }); - const visit2 = await api.saveVisit({ visit }); - const visits = await api.listVisits(); + const visit1 = await api.save({ visit }); + const visit2 = await api.save({ visit }); + const visits = await api.list(); expect(visits).toHaveLength(1); expect(visits).toContainEqual(expect.objectContaining(visit)); // keeps the original id created on the first visit @@ -132,7 +132,7 @@ describe('new MemoryVisitsApi()', () => { }); }); - describe('.listVisits()', () => { + describe('.list()', () => { let api: MemoryVisitsApi; let visitsToSave: Array>; let baseDate: number; @@ -161,14 +161,14 @@ describe('new MemoryVisitsApi()', () => { (acc, visit, index) => acc.then(() => { jest.setSystemTime(baseDate + 360_000 * index); - return api.saveVisit({ visit }); + return api.save({ visit }); }), Promise.resolve({}), ); }); it('retrieves visits', async () => { - const visits = await api.listVisits(); + const visits = await api.list(); expect(visits).toHaveLength(3); expect(visits).toEqual([ expect.objectContaining(visitsToSave[2]), @@ -178,7 +178,7 @@ describe('new MemoryVisitsApi()', () => { }); it('orders by timestamp asc', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ orderBy: [{ field: 'timestamp', direction: 'asc' }], }); expect(visits).toEqual([ @@ -189,7 +189,7 @@ describe('new MemoryVisitsApi()', () => { }); it('orders by timestamp desc', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ orderBy: [{ field: 'timestamp', direction: 'desc' }], }); expect(visits).toEqual([ @@ -200,7 +200,7 @@ describe('new MemoryVisitsApi()', () => { }); it('orders by entityRef asc', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ orderBy: [{ field: 'entityRef', direction: 'asc' }], }); expect(visits).toEqual([ @@ -211,7 +211,7 @@ describe('new MemoryVisitsApi()', () => { }); it('orders by entityRef desc', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ orderBy: [{ field: 'entityRef', direction: 'desc' }], }); expect(visits).toEqual([ @@ -222,7 +222,7 @@ describe('new MemoryVisitsApi()', () => { }); it('orders by name asc then by entityRef asc', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ orderBy: [ { field: 'name', direction: 'asc' }, { field: 'entityRef', direction: 'asc' }, @@ -236,7 +236,7 @@ describe('new MemoryVisitsApi()', () => { }); it('orders by name desc then by entityRef asc', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ orderBy: [ { field: 'name', direction: 'desc' }, { field: 'entityRef', direction: 'asc' }, @@ -250,7 +250,7 @@ describe('new MemoryVisitsApi()', () => { }); it('filters by timestamp with >', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ filterBy: [{ field: 'timestamp', operator: '>', value: baseDate }], }); expect(visits).toHaveLength(2); @@ -261,7 +261,7 @@ describe('new MemoryVisitsApi()', () => { }); it('filters by timestamp with >=', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ filterBy: [ { field: 'timestamp', operator: '>=', value: baseDate + 360_000 * 2 }, ], @@ -271,7 +271,7 @@ describe('new MemoryVisitsApi()', () => { }); it('filters by timestamp with <', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ filterBy: [{ field: 'timestamp', operator: '<', value: baseDate + 1 }], }); expect(visits).toHaveLength(1); @@ -279,7 +279,7 @@ describe('new MemoryVisitsApi()', () => { }); it('filters by timestamp with <=', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ filterBy: [ { field: 'timestamp', operator: '<=', value: baseDate + 360_000 }, ], @@ -292,7 +292,7 @@ describe('new MemoryVisitsApi()', () => { }); it('filters by timestamp with ==', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ filterBy: [ { field: 'timestamp', operator: '==', value: baseDate + 360_000 }, ], @@ -302,7 +302,7 @@ describe('new MemoryVisitsApi()', () => { }); it('filters by entityRef with contains', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ filterBy: [ { field: 'entityRef', operator: 'contains', value: 'order-2' }, ], @@ -312,7 +312,7 @@ describe('new MemoryVisitsApi()', () => { }); it('filters by timestamp with <= then by name with contains', async () => { - const visits = await api.listVisits({ + const visits = await api.list({ filterBy: [ { field: 'timestamp', operator: '<=', value: baseDate + 360_000 }, { field: 'name', operator: 'contains', value: 'Odd' }, diff --git a/plugins/home/src/api/VisitsApiFactory.ts b/plugins/home/src/api/VisitsApiFactory.ts index 1b04c775a0..d54ed0c984 100644 --- a/plugins/home/src/api/VisitsApiFactory.ts +++ b/plugins/home/src/api/VisitsApiFactory.ts @@ -13,7 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Visit, VisitsApi, VisitsApiQueryParams, VisitsApiSaveParams } from './VisitsApi'; +import { + Visit, + VisitsApi, + VisitsApiQueryParams, + VisitsApiSaveParams, +} from './VisitsApi'; type ArrayElement = A extends readonly (infer T)[] ? T : never; @@ -50,7 +55,7 @@ export class VisitsApiFactory implements VisitsApi { this.persistAll = persistAll ?? (async () => {}); } - async listVisits(queryParams?: VisitsApiQueryParams): Promise { + async list(queryParams?: VisitsApiQueryParams): Promise { let visits = await this.retrieveAll(); // reversing order to guarantee orderBy priority @@ -80,9 +85,7 @@ export class VisitsApiFactory implements VisitsApi { return visits; } - async saveVisit( - saveParams: VisitsApiSaveParams, - ): Promise { + async save(saveParams: VisitsApiSaveParams): Promise { const visits = await this.retrieveAll(); const visit: Visit = { diff --git a/plugins/home/src/components/VisitListener.test.tsx b/plugins/home/src/components/VisitListener.test.tsx index 81587b4067..7a0ce57de5 100644 --- a/plugins/home/src/components/VisitListener.test.tsx +++ b/plugins/home/src/components/VisitListener.test.tsx @@ -45,8 +45,8 @@ const visits: Array = [ ]; const mockVisitsApi = { - saveVisit: jest.fn(async () => visits[0]), - listVisits: jest.fn(async () => visits), + save: jest.fn(async () => visits[0]), + list: jest.fn(async () => visits), }; describe('', () => { @@ -63,10 +63,8 @@ describe('', () => { { routeEntries: [pathname] }, ); - await waitFor(() => - expect(mockVisitsApi.saveVisit).toHaveBeenCalledTimes(1), - ); - expect(mockVisitsApi.saveVisit).toHaveBeenCalledWith({ + await waitFor(() => expect(mockVisitsApi.save).toHaveBeenCalledTimes(1)); + expect(mockVisitsApi.save).toHaveBeenCalledWith({ visit: { pathname, entityRef: 'component:default/playback-order', @@ -102,7 +100,7 @@ describe('', () => { ); await waitFor(() => - expect(mockVisitsApi.saveVisit).toHaveBeenCalledWith({ + expect(mockVisitsApi.save).toHaveBeenCalledWith({ visit: { pathname, entityRef: 'component:default/playback-order', @@ -127,7 +125,7 @@ describe('', () => { ); await waitFor(() => - expect(mockVisitsApi.saveVisit).toHaveBeenCalledWith({ + expect(mockVisitsApi.save).toHaveBeenCalledWith({ visit: { pathname, entityRef: pathname, diff --git a/plugins/home/src/components/VisitListener.tsx b/plugins/home/src/components/VisitListener.tsx index c0cf34bdc9..4a7900a63a 100644 --- a/plugins/home/src/components/VisitListener.tsx +++ b/plugins/home/src/components/VisitListener.tsx @@ -81,7 +81,7 @@ export const VisitListener = ({ // Wait for the browser to finish with paint with the assumption react // has finished with dom reconciliation. const requestId = requestAnimationFrame(() => { - visitsApi.saveVisit({ + visitsApi.save({ visit: { name: visitNameImpl({ pathname }), pathname, diff --git a/plugins/home/src/homePageComponents/VisitedByType/Content.test.tsx b/plugins/home/src/homePageComponents/VisitedByType/Content.test.tsx index a9ff2cdd7c..4442c319e6 100644 --- a/plugins/home/src/homePageComponents/VisitedByType/Content.test.tsx +++ b/plugins/home/src/homePageComponents/VisitedByType/Content.test.tsx @@ -32,8 +32,8 @@ const visits = [ ]; const mockVisitsApi = { - saveVisit: async () => visits[0], - listVisits: async () => visits, + save: async () => visits[0], + list: async () => visits, }; describe('', () => { diff --git a/plugins/home/src/homePageComponents/VisitedByType/Content.tsx b/plugins/home/src/homePageComponents/VisitedByType/Content.tsx index 8f492a2099..4e847b717f 100644 --- a/plugins/home/src/homePageComponents/VisitedByType/Content.tsx +++ b/plugins/home/src/homePageComponents/VisitedByType/Content.tsx @@ -65,7 +65,7 @@ export const Content = ({ const { loading: reqLoading } = useAsync(async () => { if (!visits && !loading && kind === 'recent') { return await visitsApi - .listVisits({ + .list({ limit: numVisitsTotal ?? 8, orderBy: [{ field: 'timestamp', direction: 'desc' }], }) @@ -73,7 +73,7 @@ export const Content = ({ } if (!visits && !loading && kind === 'top') { return await visitsApi - .listVisits({ + .list({ limit: numVisitsTotal ?? 8, orderBy: [{ field: 'hits', direction: 'desc' }], }) diff --git a/plugins/home/src/homePageComponents/VisitedByType/HomePageVisitedByType.stories.tsx b/plugins/home/src/homePageComponents/VisitedByType/HomePageVisitedByType.stories.tsx index 0dd9c9e873..19861bf58e 100644 --- a/plugins/home/src/homePageComponents/VisitedByType/HomePageVisitedByType.stories.tsx +++ b/plugins/home/src/homePageComponents/VisitedByType/HomePageVisitedByType.stories.tsx @@ -87,8 +87,8 @@ const visits: Array = [ ]; const mockVisitsApi = { - saveVisit: async () => visits[0], - listUserVisits: async () => visits, + save: async () => visits[0], + list: async () => visits, }; export default {