diff --git a/app/models/entry.rb b/app/models/entry.rb index fa962639..f1a59f3d 100644 --- a/app/models/entry.rb +++ b/app/models/entry.rb @@ -1,10 +1,9 @@ class Entry < ActiveRecord::Base + include Pacecar include Feedra::Entry + + def self.recent(limit) + limited(limit).by_published_at(:desc).by_created_at(:desc) + end - named_scope :recent, lambda { |limit| - { - :limit => limit, - :order => 'published_at desc, created_at desc' - } - } end diff --git a/test/unit/company_test.rb b/test/unit/company_test.rb index 7925d0d6..e246151a 100644 --- a/test/unit/company_test.rb +++ b/test/unit/company_test.rb @@ -6,6 +6,8 @@ class CompanyTest < ActiveSupport::TestCase @company = Factory(:company, :name => "Nike") end + subject { @company } + should_validate_presence_of :name should_validate_uniqueness_of :name should_validate_url_format_of :website_url diff --git a/test/unit/entry_test.rb b/test/unit/entry_test.rb index 11eed452..8a06cd3c 100644 --- a/test/unit/entry_test.rb +++ b/test/unit/entry_test.rb @@ -5,5 +5,30 @@ class EntryTest < ActiveSupport::TestCase assert Entry.included_modules.include?(Feedra::Entry) end - should_have_named_scope 'recent(5)', :order => 'published_at desc, created_at desc', :limit => 5 + context "recent" do + + setup do + @expected = stub('entries') + + Entry.stub_chain(:limited, :by_published_at, :by_created_at).returns(@expected) + @actual = Entry.recent(5) + end + + should "return the entries" do + assert_equal @expected, @actual + end + + should "get 5 entries" do + assert_received(Entry, :limited) {|subject| subject.with(5) } + end + + should "sort by published_at, descending" do + assert_received(Entry, :by_published_at) {|subject| subject.with(:desc) } + end + + should "sort by created_at, descending" do + assert_received(Entry, :by_created_at) {|subject| subject.with(:desc) } + end + + end end diff --git a/test/unit/event_test.rb b/test/unit/event_test.rb index 27fdc231..325fe909 100644 --- a/test/unit/event_test.rb +++ b/test/unit/event_test.rb @@ -7,6 +7,8 @@ class EventTest < ActiveSupport::TestCase @event = Factory(:event, :title => "Hackfest") end + subject { @event } + should_validate_presence_of :date, :title, :location should_have_markup :description, :required => true, :cache_html => true diff --git a/test/unit/presentation_test.rb b/test/unit/presentation_test.rb index ee064622..9bdb48e1 100644 --- a/test/unit/presentation_test.rb +++ b/test/unit/presentation_test.rb @@ -6,6 +6,8 @@ class PresentationTest < ActiveSupport::TestCase @presentation = Factory(:presentation, :title => "Agile Design") end + subject { @presentation } + should_belong_to :user should "display name as string representation" do diff --git a/test/unit/project_test.rb b/test/unit/project_test.rb index 605f7753..b922c7b0 100644 --- a/test/unit/project_test.rb +++ b/test/unit/project_test.rb @@ -6,6 +6,8 @@ class ProjectTest < ActiveSupport::TestCase @project = Factory(:project, :name => "Paperclip") end + subject { @project } + should_validate_presence_of :name, :user_id should_validate_url_format_of :github_url diff --git a/test/unit/tweet_test.rb b/test/unit/tweet_test.rb index 4df5b349..51e64562 100644 --- a/test/unit/tweet_test.rb +++ b/test/unit/tweet_test.rb @@ -4,8 +4,9 @@ class TweetTest < ActiveSupport::TestCase should "be valid with factory" do assert_valid Factory.build(:tweet) end + should_belong_to :user - should_have_index :user_id + should_have_db_index :user_id should_validate_presence_of :text, :twitter_id, :tweeted_at, :user_id context "recent five Tweets given six existing Tweets" do diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index ff251342..612756d7 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -3,7 +3,6 @@ class UserTest < ActiveSupport::TestCase should "respond to gravatar_url" do user = Factory(:user, :email => 'john@doe.com') - puts user.gravatar_url assert_respond_to user, :gravatar_url end @@ -12,6 +11,8 @@ class UserTest < ActiveSupport::TestCase @user = Factory(:user, :twitter => "Croaky") end + subject { @user } + should_have_many :tweets should_have_many :projects should_have_one :feed, :dependent => :destroy