Skip to content

Commit

Permalink
adding playlist specs
Browse files Browse the repository at this point in the history
  • Loading branch information
maxdemarzi committed Apr 19, 2012
1 parent f366c67 commit 0628278
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 3 deletions.
17 changes: 17 additions & 0 deletions app/coffeescripts/learn/collections.coffee
@@ -0,0 +1,17 @@
# COLLECTIONS

@app = window.app ? {}

class Albums extends Backbone.Collection
model: window.app.Album
url: '/api/albums'

class Playlist extends Albums
isFirstAlbum: (index) ->
index == 0
isLastAlbum: (index) ->
index == (@models.length - 1)


@app.Albums = Albums
@app.Playlist = Playlist
4 changes: 2 additions & 2 deletions app/coffeescripts/learn/models.coffee
Expand Up @@ -3,7 +3,7 @@
class Album extends Backbone.Model
isFirstTrack: (index) ->
index == 0
isFirstTrack: (index)->
isLastTrack: (index)->
index >= this.get('tracks').length - 1
trackUrlAtIndex: (index) ->
if this.get('tracks').length >= index
Expand All @@ -12,4 +12,4 @@ class Album extends Backbone.Model
null

@app = window.app ? {}
@app.Album = Album
@app.Album = Album
34 changes: 34 additions & 0 deletions spec/coffeescripts/collections_spec.coffee
@@ -0,0 +1,34 @@
app = window.app ? {}

albumData = [{
"title": "Album A"
"artist": "Artist A"
"tracks": [{"title": "Track A", "url": "/music/Album A Track A.mp3" },{ "title": "Track B", "url": "/music/Album A Track B.mp3" }]
},{
"title": "Album B"
"artist": "Artist B"
"tracks": [{"title": "Track A", "url": "/music/Album B Track A.mp3" },{ "title": "Track B", "url": "/music/Album B Track B.mp3" }]
}]

describe "Playlist", ->
beforeEach ->
@playlist = new app.Playlist
@playlist.add(albumData[0])

it "has models", ->
expect(@playlist.models.length).toEqual(1)

it "identifies first album as first", ->
expect(@playlist.isFirstAlbum(0)).toBeTruthy()

it "rejects non-first album as first", ->
expect(@playlist.isFirstAlbum(1)).toBeFalsy()

it "identifies last album as last", ->
@playlist.add(albumData[1])
console.log(@playlist)
expect(@playlist.isLastAlbum(1)).toBeTruthy()

it "rejects non-last album as last", ->
@playlist.add(albumData[1])
expect(@playlist.isLastAlbum(0)).toBeFalsy()
19 changes: 19 additions & 0 deletions spec/coffeescripts/models_spec.coffee
Expand Up @@ -17,4 +17,23 @@ describe "Album", ->
it "creates from data", ->
expect(@album.get('tracks').length).toEqual(2)

describe "first track", ->
it "returns true for first track", ->
expect(@album.isFirstTrack(0)).toBeTruthy()

it "returns false for other tracks", ->
expect(@album.isFirstTrack(12)).toBeFalsy()

describe "last track", ->
it "returns true for first track", ->
expect(@album.isLastTrack(1)).toBeTruthy()

it "returns false for other tracks", ->
expect(@album.isLastTrack(0)).toBeFalsy()

describe "track url at index", ->
it "returns URL for existing track", ->
expect(@album.trackUrlAtIndex(0)).toEqual('/music/Album A Track A.mp3')

it "returns null for non-existing track", ->
expect(@album.trackUrlAtIndex(5)).toBe(null)
4 changes: 3 additions & 1 deletion spec/javascripts/support/jasmine.yml
Expand Up @@ -16,7 +16,9 @@ src_files:
- public/javascripts/vendor/json2.js
- public/javascripts/vendor/jquery.min.js
- public/javascripts/vendor/backbone.min.js
- public/javascripts/learn/*.js
- public/javascripts/learn/models.js
- public/javascripts/learn/collections.js
- public/javascripts/learn/util.js
- public/javascripts/*.js

# stylesheets
Expand Down

0 comments on commit 0628278

Please sign in to comment.