The old style of merging all of a function's variable declarations into a single statement made some sense back in the days of var, but there's no reason to keep doing it now that we use const and let.
180 lines
5.1 KiB
JavaScript
180 lines
5.1 KiB
JavaScript
describe('JsApiReporter', function() {
|
|
it('knows when a full environment is started', function() {
|
|
const reporter = new privateUnderTest.JsApiReporter({});
|
|
|
|
expect(reporter.started).toBe(false);
|
|
expect(reporter.finished).toBe(false);
|
|
|
|
reporter.jasmineStarted();
|
|
|
|
expect(reporter.started).toBe(true);
|
|
expect(reporter.finished).toBe(false);
|
|
});
|
|
|
|
it('knows when a full environment is done', function() {
|
|
const reporter = new privateUnderTest.JsApiReporter({});
|
|
|
|
expect(reporter.started).toBe(false);
|
|
expect(reporter.finished).toBe(false);
|
|
|
|
reporter.jasmineStarted();
|
|
reporter.jasmineDone({});
|
|
|
|
expect(reporter.finished).toBe(true);
|
|
});
|
|
|
|
it("defaults to 'loaded' status", function() {
|
|
const reporter = new privateUnderTest.JsApiReporter({});
|
|
|
|
expect(reporter.status()).toEqual('loaded');
|
|
});
|
|
|
|
it("reports 'started' when Jasmine has started", function() {
|
|
const reporter = new privateUnderTest.JsApiReporter({});
|
|
|
|
reporter.jasmineStarted();
|
|
|
|
expect(reporter.status()).toEqual('started');
|
|
});
|
|
|
|
it("reports 'done' when Jasmine is done", function() {
|
|
const reporter = new privateUnderTest.JsApiReporter({});
|
|
|
|
reporter.jasmineDone({});
|
|
|
|
expect(reporter.status()).toEqual('done');
|
|
});
|
|
|
|
it('tracks a suite', function() {
|
|
const reporter = new privateUnderTest.JsApiReporter({});
|
|
|
|
reporter.suiteStarted({
|
|
id: 123,
|
|
description: 'A suite'
|
|
});
|
|
|
|
const suites = reporter.suites();
|
|
|
|
expect(suites).toEqual({ 123: { id: 123, description: 'A suite' } });
|
|
|
|
reporter.suiteDone({
|
|
id: 123,
|
|
description: 'A suite',
|
|
status: 'passed'
|
|
});
|
|
|
|
expect(suites).toEqual({
|
|
123: { id: 123, description: 'A suite', status: 'passed' }
|
|
});
|
|
});
|
|
|
|
describe('#specResults', function() {
|
|
let reporter, specResult1, specResult2;
|
|
beforeEach(function() {
|
|
reporter = new privateUnderTest.JsApiReporter({});
|
|
specResult1 = {
|
|
id: 1,
|
|
description: 'A spec'
|
|
};
|
|
specResult2 = {
|
|
id: 2,
|
|
description: 'Another spec'
|
|
};
|
|
|
|
reporter.specDone(specResult1);
|
|
reporter.specDone(specResult2);
|
|
});
|
|
|
|
it('should return a slice of results', function() {
|
|
expect(reporter.specResults(0, 1)).toEqual([specResult1]);
|
|
expect(reporter.specResults(1, 1)).toEqual([specResult2]);
|
|
});
|
|
|
|
describe('when the results do not exist', function() {
|
|
it('should return a slice of shorter length', function() {
|
|
expect(reporter.specResults(0, 3)).toEqual([specResult1, specResult2]);
|
|
expect(reporter.specResults(2, 3)).toEqual([]);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('#suiteResults', function() {
|
|
let reporter, suiteStarted1, suiteResult1, suiteResult2;
|
|
beforeEach(function() {
|
|
reporter = new privateUnderTest.JsApiReporter({});
|
|
suiteStarted1 = {
|
|
id: 1
|
|
};
|
|
suiteResult1 = {
|
|
id: 1,
|
|
status: 'failed',
|
|
failedExpectations: [{ message: 'My After All Exception' }]
|
|
};
|
|
suiteResult2 = {
|
|
id: 2,
|
|
status: 'passed'
|
|
};
|
|
|
|
reporter.suiteStarted(suiteStarted1);
|
|
reporter.suiteDone(suiteResult1);
|
|
reporter.suiteDone(suiteResult2);
|
|
});
|
|
|
|
it('should not include suite starts', function() {
|
|
expect(reporter.suiteResults(0, 3).length).toEqual(2);
|
|
});
|
|
|
|
it('should return a slice of results', function() {
|
|
expect(reporter.suiteResults(0, 1)).toEqual([suiteResult1]);
|
|
expect(reporter.suiteResults(1, 1)).toEqual([suiteResult2]);
|
|
});
|
|
|
|
it('returns nothing for out of bounds indices', function() {
|
|
expect(reporter.suiteResults(0, 3)).toEqual([suiteResult1, suiteResult2]);
|
|
expect(reporter.suiteResults(2, 3)).toEqual([]);
|
|
});
|
|
});
|
|
|
|
describe('#executionTime', function() {
|
|
it('should start the timer when jasmine starts', function() {
|
|
const timerSpy = jasmine.createSpyObj('timer', ['start', 'elapsed']);
|
|
const reporter = new privateUnderTest.JsApiReporter({
|
|
timer: timerSpy
|
|
});
|
|
|
|
reporter.jasmineStarted();
|
|
expect(timerSpy.start).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should return the time it took the specs to run, in ms', function() {
|
|
const timerSpy = jasmine.createSpyObj('timer', ['start', 'elapsed']);
|
|
const reporter = new privateUnderTest.JsApiReporter({
|
|
timer: timerSpy
|
|
});
|
|
|
|
timerSpy.elapsed.and.returnValue(1000);
|
|
reporter.jasmineDone();
|
|
expect(reporter.executionTime()).toEqual(1000);
|
|
});
|
|
|
|
describe("when the specs haven't finished being run", function() {
|
|
it('should return undefined', function() {
|
|
const timerSpy = jasmine.createSpyObj('timer', ['start', 'elapsed']);
|
|
const reporter = new privateUnderTest.JsApiReporter({
|
|
timer: timerSpy
|
|
});
|
|
|
|
expect(reporter.executionTime()).toBeUndefined();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('#runDetails', function() {
|
|
it('should have details about the run', function() {
|
|
const reporter = new privateUnderTest.JsApiReporter({});
|
|
reporter.jasmineDone({ some: { run: 'details' } });
|
|
expect(reporter.runDetails).toEqual({ some: { run: 'details' } });
|
|
});
|
|
});
|
|
});
|