diff --git a/app/models/comment.rb b/app/models/comment.rb index 7dfdd6c41..09f25e13b 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -1,3 +1,5 @@ class Comment < ActiveRecord::Base attr_accessible :author_id, :body, :post_id + belongs_to :author, :class_name => 'Member' + belongs_to :post end diff --git a/app/models/member.rb b/app/models/member.rb index 8f2548d8b..e882d36c7 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -3,6 +3,7 @@ class Member < ActiveRecord::Base friendly_id :login_name, use: :slugged has_many :posts, :foreign_key => 'author_id' + has_many :comments, :foreign_key => 'author_id' has_many :gardens, :foreign_key => 'owner_id' # Include default devise modules. Others available are: diff --git a/app/models/post.rb b/app/models/post.rb index 564cf5f00..de3c9cdcf 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -3,6 +3,7 @@ class Post < ActiveRecord::Base friendly_id :author_date_subject, use: :slugged attr_accessible :body, :subject, :author_id belongs_to :author, :class_name => 'Member' + has_many :comments default_scope order("created_at desc") def author_date_subject diff --git a/spec/factories/comments.rb b/spec/factories/comments.rb index 9a067805f..404ac5313 100644 --- a/spec/factories/comments.rb +++ b/spec/factories/comments.rb @@ -1,9 +1,7 @@ -# Read about factories at https://github.com/thoughtbot/factory_girl - FactoryGirl.define do factory :comment do - post_id 1 - author_id 1 - body "MyText" + post + author + body "OMG LOL" end end diff --git a/spec/models/comment_spec.rb b/spec/models/comment_spec.rb index 51f5efc44..6681fca18 100644 --- a/spec/models/comment_spec.rb +++ b/spec/models/comment_spec.rb @@ -1,2 +1,16 @@ require 'spec_helper' +describe Comment do + + before(:each) do + @comment = FactoryGirl.create(:comment) + end + + it "belongs to a post" do + @comment.post.should be_an_instance_of Post + end + + it "belongs to an author" do + @comment.author.should be_an_instance_of Member + end +end diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index bd29cd594..620d144a4 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -44,6 +44,12 @@ describe 'member' do @member.gardens.first.name.should eq "Garden" end + it "has many comments" do + @member.save + @comment1 = FactoryGirl.create(:comment, :author => @member) + @comment2 = FactoryGirl.create(:comment, :author => @member) + @member.comments.length.should == 2 + end end context 'no TOS agreement' do diff --git a/spec/models/post_spec.rb b/spec/models/post_spec.rb index 90e7c2cbc..e889322eb 100644 --- a/spec/models/post_spec.rb +++ b/spec/models/post_spec.rb @@ -20,4 +20,11 @@ describe Post do @datestr.length.should == 4 + @time.year.to_s.size @post.slug.should == "#{@member.login_name}-#{@datestr}-a-post" end + + it "has many comments" do + @post = FactoryGirl.create(:post, :author => @member) + @comment1 = FactoryGirl.create(:comment, :post => @post) + @comment2 = FactoryGirl.create(:comment, :post => @post) + @post.comments.length.should == 2 + end end