Created
November 12, 2014 22:18
-
-
Save NullVoxPopuli/8923a7f80451508df56c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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