Skip to content

Instantly share code, notes, and snippets.

@NullVoxPopuli
Created November 12, 2014 22:18
Show Gist options
  • Save NullVoxPopuli/8923a7f80451508df56c to your computer and use it in GitHub Desktop.
Save NullVoxPopuli/8923a7f80451508df56c to your computer and use it in GitHub Desktop.
require 'spec_helper'
describe Documents::ChangeRequestsController do
before(:each) do
instantiate_mock_user_and_account
@proposal = create_proposal
end
it "works" do
ap "this should fail"
puts "fail"
p 2==4
p 2.eq(4)
expect(2).to eq 4
2.should == 3
raise "fail"
end
describe "index" do
before(:each) do
@proposal.create_change_request
@proposal.create_change_request
end
it "retrieves all change requests" do
get :index, document_id: @proposal.id, format: :json
json = JSON.parse(response.body)
json.size.should == 2
end
end
describe "create" do
it "requires change request data" do
expect{
post :create, document_id: @proposal.id
}.to change(RedlineChangeRequest, :count).by 0
end
it "creates a change request" do
expect{
post :create, document_id: @proposal.id,
change_request: {
pages: [
# empty, mock proposal currently doesn't have pages
]
}
}.to change(RedlineChangeRequest, :count).by 1
end
describe "triggers revision creation" do
it "creates a revision" do
expect{
post :create, document_id: @proposal.id,
change_request: {
pages: []
}
}.to change(Revision, :count).by(1)
end
it "only creates one revision for multiple change requests" do
expect{
post :create, document_id: @proposal.id,
change_request: {
pages: []
}
# second change request
post :create, document_id: @proposal.id,
change_request: {
pages: []
}
}.to change(Revision, :count).by(1)
end
it "associates the change requset with the revision" do
post :create, document_id: @proposal.id,
change_request: {
pages: []
}
binding.pry
ap "Wat"
RedlineChangeRequest.last
RedlineChangeRequest.last.revision_id.should be_nil
end
end
describe "creates a change request with a page body" do
let(:document_with_pages){
lambda {
s = @proposal.add_new_section!("name")
p = s.build_blank_page
p.save
post :create, document_id: @proposal.id,
change_request: {
pages: [
{
id: p.id,
body: "Changed!"
}
]
}
}
}
it "creates change request objects" do
expect(document_with_pages).to change(RedlineChangeRequest, :count).by(2)
end
it "creates one change request on the document" do
expect(document_with_pages).to change(@proposal.change_requests, :count).by(1)
end
end
end
describe "update" do
before(:each) do
s = @proposal.add_new_section!("name")
@p = s.build_blank_page
@p.save
Delorean.jump 30
@change_request = @proposal.create_change_request(event: "rspec")
Delorean.jump 30
end
it "finalizes the change request" do
put :update,
document_id: @proposal.id,
id: @change_request.id,
change_request: {
finalized: true
},
format: :json
response.status.should == 200
json = JSON.parse(response.body)
json["redline_change_request"]["finalized"].should be_true
end
it "creates a new redline record when the page hasn't been modified before" do
expect{
put :update,
document_id: @proposal.id,
id: @change_request.id,
change_request: {
pages: [
{
id: @p.id,
body: "Changed!"
}
]
}, format: :json
}.to change(RedlineChangeRequest, :count).by(1)
end
it "updates the change request page json" do
put :update,
document_id: @proposal.id,
id: @change_request.id,
change_request: {
pages: [
{
id: @p.id,
body: "Changed!"
}
]
}, format: :json
response.status.should == 200
Delorean.jump 30
change_request = @proposal.change_requests.first
proposed_doc = change_request.restore
proposed_doc.proposal_pages.first.body.should == "Changed!"
end
end
describe "destroy" do
before(:each) do
@change_request = @proposal.create_change_request(event: "rspec")
end
it "destroys the change request" do
delete :destroy, document_id: @proposal.id, id: @change_request.id, format: :json
end
end
describe "view" do
before(:each) do
s = @proposal.add_new_section!("name")
@p = s.build_blank_page
@p.save
s.build_blank_page.save
@original_body = @p.body
Delorean.jump 30
@change_request = @proposal.create_change_request(event: "rspec")
@change_request.update_from_hash(
pages: [
id: @p.id,
body: "changed"
])
Delorean.jump 30
end
it "returns the new body, and not the old" do
get :view,
document_id: @proposal.id,
id: @change_request.id,
format: :json
expect(response.status).to eq 200
json = JSON.parse(response.body)
expect(json["pages"].first["body"]).to eq "changed"
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment