diff --git a/app/views/appearance_releases/index.html.erb b/app/views/appearance_releases/index.html.erb
index 0e00548..65b60ff 100644
--- a/app/views/appearance_releases/index.html.erb
+++ b/app/views/appearance_releases/index.html.erb
@@ -51,7 +51,7 @@
<%= t(".table_headers.notes") %> |
<%= t(".table_headers.tags") %> |
<%= t(".table_headers.signed_at") %> |
- <%= t 'appearance_releases.index.table_headers.amendment_signed' %> |
+ <%= t '.table_headers.amendment_signed' %> |
|
diff --git a/spec/controllers/public/amendments_controller_spec.rb b/spec/controllers/public/amendments_controller_spec.rb
index 56fdfd6..257661e 100644
--- a/spec/controllers/public/amendments_controller_spec.rb
+++ b/spec/controllers/public/amendments_controller_spec.rb
@@ -1,27 +1,22 @@
require 'rails_helper'
-release_types = %i[location_release appearance_release]
+RSpec.describe Public::AmendmentsController, type: :controller do
+ let(:user) { create(:user) }
+ let(:account) { user.primary_account }
+ let(:project) { create(:project, account: account) }
-release_types.each do |release_type|
-
- RSpec.describe Public::AmendmentsController, type: :controller do
- let(:user) { create(:user) }
- let(:account) { user.primary_account }
- let(:project) { create(:project, account: account) }
- let(:contract_template) { create("#{release_type}_contract_template".to_sym, :with_amendment_clause, project: project) }
- let(:release) { create(release_type, contract_template: contract_template, project: project) }
-
- render_views
+ render_views
+ shared_examples "amendments signing controller" do
describe "#new" do
it "shows amendment signing form for non-signed amendment of a release" do
- expect(release.amendment_signed?).to be_falsey
+ expect(subject.amendment_signed?).to be_falsey
get :new, params: {
account_id: account,
project_id: project,
- contract_template_id: release.contract_template,
- "#{release_type}_id": release
+ contract_template_id: subject.contract_template,
+ "#{subject.model_name.param_key}_id": subject
}
expect(response).to be_successful
@@ -31,15 +26,13 @@ release_types.each do |release_type|
end
it "shows already signed message for signed amendment of a release" do
- signed_release = create(release_type, :amendment_signed, contract_template: contract_template, project: project)
-
expect(signed_release.amendment_signed?).to be_truthy
get :new, params: {
account_id: account,
project_id: project,
- contract_template_id: release.contract_template,
- "#{release_type}_id": signed_release
+ contract_template_id: signed_release.contract_template,
+ "#{signed_release.model_name.param_key}_id": signed_release
}
expect(response).to be_successful
@@ -51,14 +44,14 @@ release_types.each do |release_type|
describe "#create" do
it "signs amendment" do
- expect(release.amendment_signed?).to be_falsey
+ expect(subject.amendment_signed?).to be_falsey
post :create, params: {
account_id: account,
project_id: project,
- contract_template_id: release.contract_template,
- "#{release_type}_id": release,
- "#{release_type}": {
+ contract_template_id: subject.contract_template,
+ "#{subject.model_name.param_key}_id": subject,
+ "#{subject.model_name.param_key}": {
amendment_signer_name: "Signer Name",
amendment_signature_base64: signature_base64
}
@@ -70,21 +63,19 @@ release_types.each do |release_type|
expect(body).not_to match already_signed_message
expect(body).to match signed_successfully_message
- expect(release.class.last.amendment_signed?).to be_truthy
- expect(release.class.last.amendment_signer_name).to eq "Signer Name"
+ expect(subject.class.last.amendment_signed?).to be_truthy
+ expect(subject.class.last.amendment_signer_name).to eq "Signer Name"
end
it "shows already signed message for signed amendment of a release" do
- signed_release = create(release_type, :amendment_signed, amendment_signer_name: "Big Signer", contract_template: contract_template, project: project)
-
expect(signed_release.amendment_signed?).to be_truthy
post :create, params: {
account_id: account,
project_id: project,
- contract_template_id: release.contract_template,
- "#{release_type}_id": signed_release,
- "#{release_type}": {
+ contract_template_id: signed_release.contract_template,
+ "#{signed_release.model_name.param_key}_id": signed_release,
+ "#{signed_release.model_name.param_key}": {
amendment_signer_name: "Signer Who",
amendment_signature_base64: signature_base64
}
@@ -96,23 +87,38 @@ release_types.each do |release_type|
expect(body).to match already_signed_message
expect(signed_release.amendment_signed?).to be_truthy
- expect(signed_release.amendment_signer_name).to eq "Big Signer"
+ expect(signed_release.amendment_signer_name).to eq "Amendment Signer"
end
end
-
- private
-
- def already_signed_message
- t 'public.amendments.create.amendment_already_signed_message'
- end
-
- def signed_successfully_message
- t 'public.amendments.create.amendment_signed_message'
- end
-
- def signature_base64
- @signature_base64 ||= Base64Image.from_image(file_fixture('signature.png')).data_uri
- end
end
+ context "for location release" do
+ let(:contract_template) { create(:location_release_contract_template, :with_amendment_clause, project: project) }
+ let(:signed_release) { create(:location_release, :amendment_signed, contract_template: contract_template, project: project) }
+ subject { create(:location_release, contract_template: contract_template, project: project) }
+
+ it_behaves_like "amendments signing controller"
+ end
+
+ context "for location release" do
+ let(:contract_template) { create(:appearance_release_contract_template, :with_amendment_clause, project: project) }
+ let(:signed_release) { create(:appearance_release, :amendment_signed, contract_template: contract_template, project: project) }
+ subject { create(:appearance_release, contract_template: contract_template, project: project) }
+
+ it_behaves_like "amendments signing controller"
+ end
+
+ private
+
+ def already_signed_message
+ t 'public.amendments.create.amendment_already_signed_message'
+ end
+
+ def signed_successfully_message
+ t 'public.amendments.create.amendment_signed_message'
+ end
+
+ def signature_base64
+ @signature_base64 ||= Base64Image.from_image(file_fixture('signature.png')).data_uri
+ end
end
\ No newline at end of file