Skip to content

Commit dc23631

Browse files
committed
updated isRequiredApiAvailable tests, updated logTrace function to reflect changes of isRequiredApiAvailable
1 parent 65d7b6d commit dc23631

File tree

2 files changed

+44
-10
lines changed

2 files changed

+44
-10
lines changed

packages/performance/src/services/api_service.test.ts

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,37 +54,63 @@ describe('Firebase Performance > api_service', () => {
5454
api = Api.getInstance();
5555
});
5656
describe('requiredApisAvailable', () => {
57+
it('call logger when fetch is not available', () => {
58+
stub(consoleLogger, 'info');
59+
stub(window, 'fetch').value(null);
60+
return api.requiredApisAvailable().then(isAvailable => {
61+
expect(consoleLogger.info).to.be.called;
62+
expect(isAvailable).to.be.false;
63+
});
64+
});
5765
it('call logger when navigator is not available', () => {
5866
stub(consoleLogger, 'info');
67+
stub(window, 'fetch').returns(Promise.resolve(new Response('{}')));
5968
stub(api, 'navigator').value(null);
60-
return api.requiredApisAvailable().then(() => {
69+
return api.requiredApisAvailable().then(isAvailable => {
6170
expect(consoleLogger.info).to.be.called;
71+
expect(isAvailable).to.be.false;
6272
});
6373
});
6474
it('call logger when cookie is not enabled', () => {
6575
stub(consoleLogger, 'info');
76+
stub(window, 'fetch').returns(Promise.resolve(new Response('{}')));
6677
stub(api.navigator, 'cookieEnabled').value(false);
67-
return api.requiredApisAvailable().then(() => {
78+
return api.requiredApisAvailable().then(isAvailable => {
6879
expect(consoleLogger.info).to.be.called;
80+
expect(isAvailable).to.be.false;
6981
});
7082
});
7183

7284
it('call logger when isIndexedDBAvailable returns false', () => {
7385
stub(consoleLogger, 'info');
86+
stub(window, 'fetch').returns(Promise.resolve(new Response('{}')));
7487
stub(FirebaseUtil, 'isIndexedDBAvailable').returns(false);
75-
stub(api.navigator, 'cookieEnabled').value(true);
76-
return api.requiredApisAvailable().then(() => {
88+
return api.requiredApisAvailable().then(isAvailable => {
7789
expect(consoleLogger.info).to.be.called;
90+
expect(isAvailable).to.be.false;
7891
});
7992
});
8093

8194
it('call logger when validateIndexedDBOpenable throws an exception', () => {
8295
stub(consoleLogger, 'info');
96+
stub(window, 'fetch').returns(Promise.resolve(new Response('{}')));
8397
stub(FirebaseUtil, 'isIndexedDBAvailable').returns(true);
8498
stub(FirebaseUtil, 'validateIndexedDBOpenable').throws();
85-
stub(api.navigator, 'cookieEnabled').value(true);
86-
return api.requiredApisAvailable().then(() => {
87-
expect(consoleLogger.info).to.to.be.called;
99+
return api.requiredApisAvailable().then(isAvailable => {
100+
expect(consoleLogger.info).to.be.called;
101+
expect(isAvailable).to.be.false;
102+
});
103+
});
104+
it('logger not called when function returns true', () => {
105+
stub(consoleLogger, 'info');
106+
stub(window, 'fetch').returns(Promise.resolve(new Response('{}')));
107+
stub(FirebaseUtil, 'isIndexedDBAvailable').returns(true);
108+
stub(FirebaseUtil, 'validateIndexedDBOpenable').returns(
109+
Promise.resolve(true)
110+
);
111+
return api.requiredApisAvailable().then(isAvailable => {
112+
expect(consoleLogger.info).to.not.be.called;
113+
expect(isAvailable).to.be.true;
88114
});
89115
});
90116
});

packages/performance/src/services/perf_logger.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,17 @@ export function logTrace(trace: Trace): void {
111111
return;
112112
}
113113
// Do not log if required apis are not available.
114-
if (!Api.getInstance().requiredApisAvailable()) {
115-
return;
116-
}
114+
Api.getInstance()
115+
.requiredApisAvailable()
116+
.then(isAvailable => {
117+
if (!isAvailable) {
118+
return;
119+
}
120+
})
121+
.catch(() => {
122+
return;
123+
});
124+
117125
// Only log the page load auto traces if page is visible.
118126
if (trace.isAuto && getVisibilityState() !== VisibilityState.VISIBLE) {
119127
return;

0 commit comments

Comments
 (0)