Source code
Revision control
Copy as Markdown
Other Tools
/* globals assert, beforeEach, describe, it */
import { _PerfService } from "content-src/lib/perf-service";
import { FakePerformance } from "test/unit/utils.js";
let perfService;
describe("_PerfService", () => {
let sandbox;
let fakePerfObj;
beforeEach(() => {
sandbox = sinon.createSandbox();
fakePerfObj = new FakePerformance();
perfService = new _PerfService({ performanceObj: fakePerfObj });
});
afterEach(() => {
sandbox.restore();
});
describe("#absNow", () => {
it("should return a number > the time origin", () => {
const absNow = perfService.absNow();
assert.isAbove(absNow, perfService.timeOrigin);
});
});
describe("#getEntriesByName", () => {
it("should call getEntriesByName on the appropriate Window.performance", () => {
sandbox.spy(fakePerfObj, "getEntriesByName");
perfService.getEntriesByName("monkey", "mark");
assert.calledOnce(fakePerfObj.getEntriesByName);
assert.calledWithExactly(fakePerfObj.getEntriesByName, "monkey", "mark");
});
it("should return entries with the given name", () => {
sandbox.spy(fakePerfObj, "getEntriesByName");
perfService.mark("monkey");
perfService.mark("dog");
let marks = perfService.getEntriesByName("monkey", "mark");
assert.isArray(marks);
assert.lengthOf(marks, 1);
assert.propertyVal(marks[0], "name", "monkey");
});
});
describe("#getMostRecentAbsMarkStartByName", () => {
it("should throw an error if there is no mark with the given name", () => {
function bogusGet() {
perfService.getMostRecentAbsMarkStartByName("rheeeet");
}
assert.throws(bogusGet, Error, /No marks with the name/);
});
it("should return the Number from the most recent mark with the given name + the time origin", () => {
perfService.mark("dog");
perfService.mark("dog");
let absMarkStart = perfService.getMostRecentAbsMarkStartByName("dog");
// 2 because we want the result of the 2nd call to mark, and an instance
// of FakePerformance just returns the number of time mark has been
// called.
assert.equal(absMarkStart - perfService.timeOrigin, 2);
});
});
describe("#mark", () => {
it("should call the wrapped version of mark", () => {
sandbox.spy(fakePerfObj, "mark");
perfService.mark("monkey");
assert.calledOnce(fakePerfObj.mark);
assert.calledWithExactly(fakePerfObj.mark, "monkey");
});
});
describe("#timeOrigin", () => {
it("should get the origin of the wrapped performance object", () => {
assert.equal(perfService.timeOrigin, fakePerfObj.timeOrigin);
});
});
});