Blame view

framework/thirdparty/jasmine/example/spec/PlayerSpec.js 1.49 KB
0084d336   Administrator   Importers CRUD
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
  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");
      });
    });
  });