refactor(plugins/home): Simplify VisitsApi method names

Signed-off-by: Renan Mendes Carvalho <aitherios@gmail.com>
This commit is contained in:
Renan Mendes Carvalho
2023-09-08 13:31:12 +02:00
committed by Camila Belo
parent c30e715a2b
commit 6c93a6799e
11 changed files with 58 additions and 57 deletions
+4 -4
View File
@@ -262,8 +262,8 @@ export const VisitListener: ({
// @public
export interface VisitsApi {
listVisits(queryParams?: VisitsApiQueryParams): Promise<Visit[]>;
saveVisit(saveParams: VisitsApiSaveParams): Promise<Visit>;
list(queryParams?: VisitsApiQueryParams): Promise<Visit[]>;
save(saveParams: VisitsApiSaveParams): Promise<Visit>;
}
// @public
@@ -277,7 +277,7 @@ export class VisitsApiFactory implements VisitsApi {
// (undocumented)
protected readonly limit: number;
// (undocumented)
listVisits(queryParams?: VisitsApiQueryParams): Promise<Visit[]>;
list(queryParams?: VisitsApiQueryParams): Promise<Visit[]>;
// (undocumented)
protected persistAll: (visits: Array<Visit>) => Promise<void>;
// (undocumented)
@@ -285,7 +285,7 @@ export class VisitsApiFactory implements VisitsApi {
// (undocumented)
protected retrieveAll: () => Promise<Array<Visit>>;
// (undocumented)
saveVisit(saveParams: VisitsApiSaveParams): Promise<Visit>;
save(saveParams: VisitsApiSaveParams): Promise<Visit>;
}
// @public (undocumented)
@@ -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]);
@@ -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]);
+2 -2
View File
@@ -106,12 +106,12 @@ export interface VisitsApi {
* Persist a new visit.
* @param pageVisit - a new visit data
*/
saveVisit(saveParams: VisitsApiSaveParams): Promise<Visit>;
save(saveParams: VisitsApiSaveParams): Promise<Visit>;
/**
* Get user visits.
* @param queryParams - optional search query params.
*/
listVisits(queryParams?: VisitsApiQueryParams): Promise<Visit[]>;
list(queryParams?: VisitsApiQueryParams): Promise<Visit[]>;
}
/** @public */
+25 -25
View File
@@ -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<Omit<Visit, 'id' | 'hits' | 'timestamp'>>;
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' },
+8 -5
View File
@@ -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> = 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<Visit[]> {
async list(queryParams?: VisitsApiQueryParams): Promise<Visit[]> {
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<Visit> {
async save(saveParams: VisitsApiSaveParams): Promise<Visit> {
const visits = await this.retrieveAll();
const visit: Visit = {
@@ -45,8 +45,8 @@ const visits: Array<Visit> = [
];
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('<VisitListener/>', () => {
@@ -63,10 +63,8 @@ describe('<VisitListener/>', () => {
{ 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('<VisitListener/>', () => {
);
await waitFor(() =>
expect(mockVisitsApi.saveVisit).toHaveBeenCalledWith({
expect(mockVisitsApi.save).toHaveBeenCalledWith({
visit: {
pathname,
entityRef: 'component:default/playback-order',
@@ -127,7 +125,7 @@ describe('<VisitListener/>', () => {
);
await waitFor(() =>
expect(mockVisitsApi.saveVisit).toHaveBeenCalledWith({
expect(mockVisitsApi.save).toHaveBeenCalledWith({
visit: {
pathname,
entityRef: pathname,
@@ -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,
@@ -32,8 +32,8 @@ const visits = [
];
const mockVisitsApi = {
saveVisit: async () => visits[0],
listVisits: async () => visits,
save: async () => visits[0],
list: async () => visits,
};
describe('<Content kind="recent"/>', () => {
@@ -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' }],
})
@@ -87,8 +87,8 @@ const visits: Array<Visit> = [
];
const mockVisitsApi = {
saveVisit: async () => visits[0],
listUserVisits: async () => visits,
save: async () => visits[0],
list: async () => visits,
};
export default {