Add latest added tracks list on the home page
This commit is contained in:
		@@ -1,5 +1,6 @@
 | 
			
		||||
class HomeController < ApplicationController
 | 
			
		||||
  def index
 | 
			
		||||
    @playlists = Playlist.all
 | 
			
		||||
    @tracks = Track.latest
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -15,4 +15,8 @@ class Track < ActiveRecord::Base
 | 
			
		||||
    end
 | 
			
		||||
    save!
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def self.latest
 | 
			
		||||
    Track.order('created_at DESC')
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -2,3 +2,6 @@
 | 
			
		||||
%ul
 | 
			
		||||
  - @playlists.each do |p|
 | 
			
		||||
    %li= p.name
 | 
			
		||||
%ul
 | 
			
		||||
  - @tracks.each do |t|
 | 
			
		||||
    %li= t.name
 | 
			
		||||
 
 | 
			
		||||
@@ -8,3 +8,12 @@ Feature: Home
 | 
			
		||||
    Given a playlist named "Electro"
 | 
			
		||||
    When I am on the home page
 | 
			
		||||
    Then I should see "Electro" within "ul>li"
 | 
			
		||||
 | 
			
		||||
  Scenario: Last tracks added
 | 
			
		||||
    Given the following tracks:
 | 
			
		||||
      | name        | created_at          |
 | 
			
		||||
      | Mega song 1 | 2011-07-27 19:13:42 |
 | 
			
		||||
      | Mega song 2 | 2011-07-27 19:58:57 |
 | 
			
		||||
    When I am on the home page
 | 
			
		||||
    Then I should see "Mega song 2" within "ul>li:first-child"
 | 
			
		||||
    And I should see "Mega song 1" within "ul>li:first-child+li"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,12 @@ Given /^a track named "([^"]*)"$/ do |name|
 | 
			
		||||
  @track.save_with_file(file, 'audio/mpeg')
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
Given /^the following tracks:$/ do |table|
 | 
			
		||||
  table.hashes.each do |h|
 | 
			
		||||
    Factory.create(:track, h)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
Then /^I should see an audio player$/ do
 | 
			
		||||
  page.should have_xpath '//audio'
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -7,5 +7,12 @@ describe HomeController do
 | 
			
		||||
      get :index
 | 
			
		||||
      assigns[:playlists].should == [playlist]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'assigns latest tracks as @tracks' do
 | 
			
		||||
      track1 = Factory.create(:track, :created_at => '2011-07-27 19:13:42')
 | 
			
		||||
      track2 = Factory.create(:track, :created_at => '2011-07-27 19:58:57')
 | 
			
		||||
      get :index
 | 
			
		||||
      assigns[:tracks].should == Track.latest
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -56,4 +56,12 @@ describe Track do
 | 
			
		||||
      `rm -f #{Rails.root}/data/tracks/*`
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe '.latest' do
 | 
			
		||||
    it 'returns latest tracks in descending creation date order' do
 | 
			
		||||
      track1 = Factory.create(:track, :created_at => '2011-07-27 19:13:42')
 | 
			
		||||
      track2 = Factory.create(:track, :created_at => '2011-07-27 19:58:57')
 | 
			
		||||
      Track.latest.should == [track2, track1]
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,9 @@ describe 'home/index.html.haml' do
 | 
			
		||||
    assign :playlists, [
 | 
			
		||||
      mock_model('Playlist', :name => 'Electro')
 | 
			
		||||
    ]
 | 
			
		||||
    assign :tracks, [
 | 
			
		||||
      mock_model('Track', :name => 'Mega song')
 | 
			
		||||
    ]
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  it 'displays a list of playlists' do
 | 
			
		||||
@@ -16,4 +19,9 @@ describe 'home/index.html.haml' do
 | 
			
		||||
    render
 | 
			
		||||
    rendered.should have_selector('a', :text => 'Add a track')
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  it 'displays a list of tracks' do
 | 
			
		||||
    render
 | 
			
		||||
    rendered.should have_selector('ul>li', :text => 'Mega song')
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user