Skip to content

Commit

Permalink
pr feedback cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelolo24 committed Aug 27, 2020
1 parent 62aead1 commit f75a0f9
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export function emptifyMock<T>(
dataAccessLayer: DataAccessLayer;
metadata: Metadata<T>;
},
dataShouldBeEmpty?: EmptiableRequests | EmptiableRequests[]
dataShouldBeEmpty?: EmptiableRequests[]
): {
dataAccessLayer: DataAccessLayer;
metadata: Metadata<T>;
Expand All @@ -47,41 +47,42 @@ export function emptifyMock<T>(
/**
* Fetch related events for an entity ID
*/
async relatedEvents(entityID: string): Promise<ResolverRelatedEvents> {
async relatedEvents(...args): Promise<ResolverRelatedEvents> {
return dataShouldBeEmpty?.includes('relatedEvents')
? Promise.resolve({
entityID,
entityID: args[0],
events: [],
nextEvent: null,
})
: dataAccessLayer.relatedEvents(entityID);
: dataAccessLayer.relatedEvents(...args);
},

/**
* Fetch a ResolverTree for a entityID
*/
async resolverTree(): Promise<ResolverTree> {
async resolverTree(...args): Promise<ResolverTree> {
return dataShouldBeEmpty?.includes('resolverTree')
? Promise.resolve(mockTreeWithNoProcessEvents())
: // @ts-ignore - ignore the argument requirement for dataAccessLayer
Promise.resolve(dataAccessLayer.resolverTree());
: dataAccessLayer.resolverTree(...args);
},

/**
* Get an array of index patterns that contain events.
*/
indexPatterns(): string[] {
return dataShouldBeEmpty?.includes('indexPatterns') ? [] : dataAccessLayer.indexPatterns();
indexPatterns(...args): string[] {
return dataShouldBeEmpty?.includes('indexPatterns')
? []
: dataAccessLayer.indexPatterns(...args);
},

/**
* Get entities matching a document.
*/
async entities(): Promise<ResolverEntityIndex> {
async entities(...args): Promise<ResolverEntityIndex> {
return dataShouldBeEmpty?.includes('entities')
? Promise.resolve([])
: // @ts-ignore - ignore the argument requirement for dataAccessLayer
dataAccessLayer.entities();
dataAccessLayer.entities(...args);
},
},
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,81 +36,88 @@ export function pausifyMock<T>({
}): {
dataAccessLayer: DataAccessLayer;
metadata: Metadata<T>;
pause: (pausableRequests: PausableRequests) => void;
resume: (pausableRequests: PausableRequests) => void;
pause: (pausableRequests: PausableRequests[]) => void;
resume: (pausableRequests: PausableRequests[]) => void;
} {
let relatedEventsPromise = Promise.resolve();
let resolverTreePromise = Promise.resolve();
let entitiesPromise = Promise.resolve();

let relatedEventsResolver: () => void;
let resolverTreeResolver: () => void;
let entitiesResolver: () => void;
let relatedEventsResolver: (() => void) | null;
let resolverTreeResolver: (() => void) | null;
let entitiesResolver: (() => void) | null;

return {
metadata,
pause: (pausableRequests: PausableRequests | PausableRequests[]) => {
pause: (pausableRequests: PausableRequests[]) => {
const pauseRelatedEventsRequest = pausableRequests.includes('relatedEvents');
const pauseResolverTreeRequest = pausableRequests.includes('resolverTree');
const pauseEntitiesRequest = pausableRequests.includes('entities');

if (pauseRelatedEventsRequest) {
if (pauseRelatedEventsRequest && !relatedEventsResolver) {
relatedEventsPromise = new Promise((resolve) => {
relatedEventsResolver = resolve;
});
}
if (pauseResolverTreeRequest) {
if (pauseResolverTreeRequest && !resolverTreeResolver) {
resolverTreePromise = new Promise((resolve) => {
resolverTreeResolver = resolve;
});
}
if (pauseEntitiesRequest) {
if (pauseEntitiesRequest && !entitiesResolver) {
entitiesPromise = new Promise((resolve) => {
entitiesResolver = resolve;
});
}
},
resume: (pausableRequests: PausableRequests | PausableRequests[]) => {
resume: (pausableRequests: PausableRequests[]) => {
const resumeEntitiesRequest = pausableRequests.includes('entities');
const resumeResolverTreeRequest = pausableRequests.includes('resolverTree');
const resumeRelatedEventsRequest = pausableRequests.includes('relatedEvents');

if (resumeEntitiesRequest && entitiesResolver) entitiesResolver();
if (resumeResolverTreeRequest && resolverTreeResolver) resolverTreeResolver();
if (resumeRelatedEventsRequest && relatedEventsResolver) relatedEventsResolver();
if (resumeEntitiesRequest && entitiesResolver) {
entitiesResolver();
entitiesResolver = null;
}
if (resumeResolverTreeRequest && resolverTreeResolver) {
resolverTreeResolver();
resolverTreeResolver = null;
}
if (resumeRelatedEventsRequest && relatedEventsResolver) {
relatedEventsResolver();
relatedEventsResolver = null;
}
},
dataAccessLayer: {
/**
* Fetch related events for an entity ID
*/
async relatedEvents(entityID: string): Promise<ResolverRelatedEvents> {
async relatedEvents(...args): Promise<ResolverRelatedEvents> {
await relatedEventsPromise;
return dataAccessLayer.relatedEvents(entityID);
return dataAccessLayer.relatedEvents(...args);
},

/**
* Fetch a ResolverTree for a entityID
*/
async resolverTree(): Promise<ResolverTree> {
async resolverTree(...args): Promise<ResolverTree> {
await resolverTreePromise;
// @ts-ignore - ignore the argument requirement for dataAccessLayer
return dataAccessLayer.resolverTree();
return dataAccessLayer.resolverTree(...args);
},

/**
* Get an array of index patterns that contain events.
*/
indexPatterns(): string[] {
return dataAccessLayer.indexPatterns();
indexPatterns(...args): string[] {
return dataAccessLayer.indexPatterns(...args);
},

/**
* Get entities matching a document.
*/
async entities(): Promise<ResolverEntityIndex> {
async entities(...args): Promise<ResolverEntityIndex> {
await entitiesPromise;
// @ts-ignore - ignore the argument requirement for dataAccessLayer
return dataAccessLayer.entities();
return dataAccessLayer.entities(...args);
},
},
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ describe('Resolver: data loading and resolution states', () => {
dataAccessLayer,
pause,
} = pausifyMock(noAncestorsTwoChildren());
pause('entities');
pause(['entities']);
simulator = new Simulator({
dataAccessLayer,
databaseDocumentID,
Expand Down Expand Up @@ -51,7 +51,7 @@ describe('Resolver: data loading and resolution states', () => {
dataAccessLayer,
pause,
} = pausifyMock(noAncestorsTwoChildren());
pause('resolverTree');
pause(['resolverTree']);
simulator = new Simulator({
dataAccessLayer,
databaseDocumentID,
Expand All @@ -60,8 +60,6 @@ describe('Resolver: data loading and resolution states', () => {
});

it('should display a loading state', async () => {
// Trigger a loading state by requesting data based on a new DocumentID.
// There really is no way to do this in the view besides changing the url, so triggering the action instead
await expect(
simulator.map(() => ({
resolverGraphLoading: simulator.testSubject('resolver:graph:loading').length,
Expand All @@ -81,7 +79,7 @@ describe('Resolver: data loading and resolution states', () => {
const {
metadata: { databaseDocumentID },
dataAccessLayer,
} = emptifyMock(noAncestorsTwoChildren(), 'entities');
} = emptifyMock(noAncestorsTwoChildren(), ['entities']);

simulator = new Simulator({
dataAccessLayer,
Expand Down Expand Up @@ -110,7 +108,7 @@ describe('Resolver: data loading and resolution states', () => {
const {
metadata: { databaseDocumentID },
dataAccessLayer,
} = emptifyMock(noAncestorsTwoChildren(), 'resolverTree');
} = emptifyMock(noAncestorsTwoChildren(), ['resolverTree']);

simulator = new Simulator({
dataAccessLayer,
Expand Down

0 comments on commit f75a0f9

Please sign in to comment.