Files
dunlop-ember/spec/controllers/api/posts_controller/index_spec.rb
T
2018-06-07 17:31:21 -03:00

111 lines
3.4 KiB
Ruby

require 'rails_helper'
RSpec.describe Api::PostsController, type: :controller do
describe "index" do
describe 'unauthorized' do
it 'redirects to login page' do
get :index
response.redirect_url.should end_with('/users/sign_in')
end
end
describe 'authorized' do
before { sign_in create :user }
it "no default include, default pagination" do
post1 = create :post, title: 'post-1', body: 'post-body-1'
comment = create :comment, post: post1
post2 = create :post, title: 'post-2', body: 'post-body-2'
get :index
assert_json(
data: [
{
id: post1.id.to_s,
type: "post",
attributes: {"title"=>"post-1", "body"=>"post-body-1"},
relationships: {
comments: {data: [{id: comment.id.to_s , type: "comment" }]}
}
},
{
id: post2.id.to_s,
type: "post",
attributes: {"title"=>"post-2", "body"=>"post-body-2"},
relationships: {
comments: {data: []}
}
},
],
meta: {"total-pages"=>1, "total-count"=>2}
)
end
it "does not paginate when index_pagination? is false" do
expect( subject ).to receive(:index_pagination?).and_return false
post1 = create :post, title: 'post-1', body: 'post-body-1'
comment = create :comment, post: post1
post2 = create :post, title: 'post-2', body: 'post-body-2'
get :index
assert_json(
data: [
{
id: post1.id.to_s,
type: "post",
attributes: {"title"=>"post-1", "body"=>"post-body-1"},
relationships: {
comments: {data: [{id: comment.id.to_s , type: "comment" }]}
}
},
{
id: post2.id.to_s,
type: "post",
attributes: {"title"=>"post-2", "body"=>"post-body-2"},
relationships: {
comments: {data: []}
}
},
]
)
end
it "includes associations if configured" do
expect( subject ).to receive(:index_serialize_options).and_return(include: 'comments')
post1 = create :post, title: 'post-1', body: 'post-body-1'
comment = create :comment, post: post1, body: 'post-1-comment-1'
post2 = create :post, title: 'post-2', body: 'post-body-2'
get :index
assert_json(
data: [
{
id: post1.id.to_s,
type: "post",
attributes: {"title"=>"post-1", "body"=>"post-body-1"},
relationships: {
comments: {data: [{id: comment.id.to_s , type: "comment" }]}
}
},
{
id: post2.id.to_s,
type: "post",
attributes: {"title"=>"post-2", "body"=>"post-body-2"},
relationships: {
comments: {data: []}
}
},
],
included: [
{
id: comment.id.to_s,
type: "comment",
attributes: {body: "post-1-comment-1"},
relationships: {
post: {data: {id: post1.id.to_s, type: "post"}}
}
}
],
meta: {"total-pages"=>1, "total-count"=>2}
)
end
end
end
end