Last active
August 29, 2015 14:27
-
-
Save pivotal-casebook/de385d08086b9a94fe41 to your computer and use it in GitHub Desktop.
Refactoring: replace assessment#reopened_at with query via WorkflowEvent.most_recent_reopening #100672128
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
05b794c 2015-08-13 12:09:32 -0400 Chris Earnhardt and Mitch Saltykov | WIP - Chris stuff! | |
diff --git a/app/models/assessment.rb b/app/models/assessment.rb | |
index 00932ca..cfa66e6 100644 | |
--- a/app/models/assessment.rb | |
+++ b/app/models/assessment.rb | |
@@ -744,13 +744,18 @@ class Assessment < ActiveRecord::Base | |
end | |
def has_been_appended? | |
- reopened_at? | |
+ # reopened_at? | |
+ workflow_events.most_recent_reopening.present? | |
end | |
def most_recently_appended_at | |
reopened_at | |
end | |
+ # def reopened_at | |
+ # workflow_events.most_recent_reopening.try(:created_at) | |
+ # end | |
+ | |
# the datetime accepted by supervisor prior to appeal | |
def approved_at_prior_to_appending | |
workflow_events.acceptances_before(most_recently_appended_at).first.try(:created_at) | |
diff --git a/app/models/workflow_event.rb b/app/models/workflow_event.rb | |
index f9f7e56..d7ccd72 100644 | |
--- a/app/models/workflow_event.rb | |
+++ b/app/models/workflow_event.rb | |
@@ -48,6 +48,10 @@ class WorkflowEvent < ActiveRecord::Base | |
reverse_chronological.endorsed | |
end | |
+ def most_recent_reopening | |
+ reverse_chronological.reopenings.first | |
+ end | |
+ | |
def active_return_for_edit | |
unless reverse_chronological.empty? | |
record = reverse_chronological.first | |
diff --git a/spec/models/assessment_spec.rb b/spec/models/assessment_spec.rb | |
index 3e1dd57..a318bcb 100644 | |
--- a/spec/models/assessment_spec.rb | |
+++ b/spec/models/assessment_spec.rb | |
@@ -121,7 +121,8 @@ describe Assessment, :type => :model do | |
end | |
describe ":assessment_in_reopened" do | |
- subject { assessments(:assessment_in_reopened) } | |
+ before { allow(ApplicationModel).to receive(:current_app_user).and_return(users(:worker_user)) } | |
+ subject { FactoryGirl.create(:assessment_in_reopened) } | |
describe '#state' do | |
subject { super().state } | |
@@ -2014,7 +2015,8 @@ describe Assessment, :type => :model do | |
shared_examples_for "a method that returns false when reopened" do | |
before do | |
- assessment.update_attributes!(reopened_at: 1.day.ago) | |
+ assessment.workflow_events.create(action: WorkflowEvent::Action::REOPENED, | |
+ created_at: 1.day.ago) | |
expect(assessment).to have_been_appended | |
end | |
@@ -3191,8 +3193,9 @@ describe Assessment, :type => :model do | |
context "when reopened" do | |
it 'validates allegations have substantiation set' do | |
- assessment = FactoryGirl.create(:nonsubstantiated_assessment, | |
- reopened_at: 1.day.ago) | |
+ assessment = FactoryGirl.create(:nonsubstantiated_assessment) | |
+ assessment.workflow_events.create(action: WorkflowEvent::Action::REOPENED, | |
+ created_at: 1.day.ago) | |
assessment.submitted_to_supervisor_review = true | |
expect(assessment).to_not receive(:validate_submit_to_supervisor_review) | |
expect(assessment.send(:primary_validator)).to receive(:validate_allegations_have_substantiation_set) | |
diff --git a/spec/models/workflow_event_spec.rb b/spec/models/workflow_event_spec.rb | |
expect(assessment).to_not receive(:validate_submit_to_supervisor_review) | |
expect(assessment.send(:primary_validator)).to receive(:validate_allegations_have_substantiation_set) | |
diff --git a/spec/models/workflow_event_spec.rb b/spec/models/workflow_event_spec.rb | |
index 538f44e..95798ea 100644 | |
--- a/spec/models/workflow_event_spec.rb | |
+++ b/spec/models/workflow_event_spec.rb | |
@@ -250,6 +250,47 @@ describe WorkflowEvent, :type => :model do | |
end | |
end | |
+ describe '.most_recent_reopening' do | |
+ before do | |
+ WorkflowEvent.destroy_all | |
+ end | |
+ | |
+ context 'when there are reopenings' do | |
+ context "has only a single reopened event" do | |
+ it 'returns the reopened workflow event' do | |
+ july_10_reopened_event = WorkflowEvent.create!(action: WorkflowEvent::Action::REOPENED, | |
+ model_with_workflow: assessments(:assessment), | |
+ created_at: Time.parse("July 10, 2011")) | |
+ | |
+ expect(WorkflowEvent.most_recent_reopening).to eq(july_10_reopened_event) | |
+ end | |
+ end | |
+ | |
+ context "has multiple reopened workflow events" do | |
+ it 'returns the most recent reopened event' do | |
+ WorkflowEvent.create!(action: WorkflowEvent::Action::REOPENED, | |
+ model_with_workflow: assessments(:assessment), | |
+ created_at: Time.parse("July 10, 2011")) | |
+ | |
+ july_20_reopened_event = WorkflowEvent.create!(action: WorkflowEvent::Action::REOPENED, | |
+ model_with_workflow: assessments(:assessment), | |
+ created_at: Time.parse("July 20, 2011")) | |
+ | |
+ WorkflowEvent.create!(action: WorkflowEvent::Action::REOPENED, | |
+ model_with_workflow: assessments(:assessment), | |
+ created_at: Time.parse("July 19, 2011")) | |
+ expect(WorkflowEvent.most_recent_reopening).to eq(july_20_reopened_event) | |
+ end | |
+ end | |
+ end | |
+ | |
+ context "when there are no reopened events" do | |
+ it 'returns nil' do | |
+ expect(WorkflowEvent.most_recent_reopening).to be_nil | |
+ end | |
+ end | |
+ end | |
+ | |
describe ".active_return_for_edit" do | |
subject { WorkflowEvent.active_return_for_edit } | |
(END) | |
index 538f44e..95798ea 100644 | |
--- a/spec/models/workflow_event_spec.rb | |
+++ b/spec/models/workflow_event_spec.rb | |
@@ -250,6 +250,47 @@ describe WorkflowEvent, :type => :model do | |
end | |
end | |
+ describe '.most_recent_reopening' do | |
+ before do | |
+ WorkflowEvent.destroy_all | |
+ end | |
+ | |
+ context 'when there are reopenings' do | |
+ context "has only a single reopened event" do | |
+ it 'returns the reopened workflow event' do | |
+ july_10_reopened_event = WorkflowEvent.create!(action: WorkflowEvent::Action::REOPENED, | |
+ model_with_workflow: assessments(:assessment), | |
+ created_at: Time.parse("July 10, 2011")) | |
+ | |
+ expect(WorkflowEvent.most_recent_reopening).to eq(july_10_reopened_event) | |
+ end | |
+ end | |
+ | |
+ context "has multiple reopened workflow events" do | |
+ it 'returns the most recent reopened event' do | |
+ WorkflowEvent.create!(action: WorkflowEvent::Action::REOPENED, | |
+ model_with_workflow: assessments(:assessment), | |
+ created_at: Time.parse("July 10, 2011")) | |
+ | |
+ july_20_reopened_event = WorkflowEvent.create!(action: WorkflowEvent::Action::REOPENED, | |
+ model_with_workflow: assessments(:assessment), | |
+ created_at: Time.parse("July 20, 2011")) | |
+ | |
+ WorkflowEvent.create!(action: WorkflowEvent::Action::REOPENED, | |
+ model_with_workflow: assessments(:assessment), | |
+ created_at: Time.parse("July 19, 2011")) | |
+ expect(WorkflowEvent.most_recent_reopening).to eq(july_20_reopened_event) | |
+ end | |
+ end | |
+ end | |
+ | |
+ context "when there are no reopened events" do | |
+ it 'returns nil' do | |
+ expect(WorkflowEvent.most_recent_reopening).to be_nil | |
+ end | |
+ end | |
+ end | |
+ | |
describe ".active_return_for_edit" do | |
subject { WorkflowEvent.active_return_for_edit } | |
(END) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment