All files / pdf.js/spec/jasmine_examples PlayerSpec.js

0% Statements 0/31
100% Branches 0/0
0% Functions 0/11
0% Lines 0/31
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61                                                                                                                         
describe("Player", function() {
  var Player = require('../../lib/jasmine_examples/Player');
  var Song = require('../../lib/jasmine_examples/Song');
  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();
      }).toThrowError("song is already playing");
    });
  });
});