grunt-contrib-jasmine/test/fixtures/pivotal/spec/PlayerSpec.js

95 lines
2.3 KiB
JavaScript

describe("Player", function() {
var player;
var song;
beforeEach(function() {
player = new Player();
song = new Song();
});
it("should be able to play a Song", function() {
player.play(song);
expect(player.currentlyPlayingSong).toEqual(song);
//demonstrates use of custom matcher
expect(player).toBePlaying(song);
});
describe("when song has been paused", function() {
beforeEach(function() {
player.play(song);
player.pause();
});
it("should indicate that the song is currently paused", function() {
expect(player.isPlaying).toBeFalsy();
// demonstrates use of 'not' with a custom matcher
expect(player).not.toBePlaying(song);
});
it("should be possible to resume", function() {
player.resume();
expect(player.isPlaying).toBeTruthy();
expect(player.currentlyPlayingSong).toEqual(song);
});
});
// demonstrates use of spies to intercept and test method calls
it("tells the current song if the user has made it a favorite", function() {
spyOn(song, 'persistFavoriteStatus');
player.play(song);
player.makeFavorite();
expect(song.persistFavoriteStatus).toHaveBeenCalledWith(true);
});
//demonstrates use of expected exceptions
describe("#resume", function() {
it("should throw an exception if song is already playing", function() {
player.play(song);
expect(function() {
player.resume();
}).toThrow("song is already playing");
});
});
});
xdescribe("Failed level 1", function() {
it("should not pass", function() {
expect(true).toBe(false);
});
describe('Level 2', function() {
it('should pass', function() {
expect(true).toBe(true);
});
describe('Level 3', function() {
it('should not pass', function() {
expect(true).toBe(true);
expect(true).toBe(true);
expect(true).toBe(false);
expect(true).toBe(true);
});
describe('Level 4', function() {
it('should pass', function() {
expect(true).toBe(true);
});
it('should not pass', function() {
expect(true).toBe(asdf);
});
})
it('should pass', function() {
expect(true).toBe(true);
});
})
});
});