// 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"); // }); // }); // });