Files
growstuff/spec/controllers/posts_controller_spec.rb
2026-05-01 11:35:58 +00:00

66 lines
1.7 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
describe PostsController do
login_member
def valid_attributes
member = create(:member)
{ author_id: member.id, subject: "blah", body: "blah blah" }
end
describe '#new' do
let(:crop) { create(:crop, name: 'Bush Bean') }
it 'pre-populates the body when crop_id is present' do
get :new, params: { crop_id: crop.slug }
expect(assigns(:post).body).to eq("[#{crop.name}](crop)")
end
it 'does not pre-populate the body when crop_id is absent' do
get :new
expect(assigns(:post).body).to be_nil
end
end
describe '#index' do
before do
create_list(:post, 100)
create_list(:post, 5, author: member)
end
describe "everyone's posts" do
before { get :index }
it { expect(assigns(:posts).size).to eq 12 }
end
describe "one member's posts" do
before { get :index, params: { member_slug: member.slug } }
it { expect(assigns(:posts).size).to eq 5 }
it { expect(assigns(:posts).first.author).to eq member }
end
end
describe "GET RSS feed" do
it "returns an RSS feed" do
get :index, format: "rss"
expect(response).to be_successful
expect(response).to render_template("posts/index")
expect(response.content_type).to eq("application/rss+xml; charset=utf-8")
end
end
describe "GET RSS feed for individual post" do
it "returns an RSS feed" do
post = Post.create! valid_attributes
get :show, format: "rss", params: { id: post.slug }
expect(response).to be_successful
expect(response).to render_template("posts/show")
expect(response.content_type).to eq("application/rss+xml; charset=utf-8")
end
end
end