Skip to content

Commit

Permalink
wth - fix otf service associations
Browse files Browse the repository at this point in the history
Created rake task to migrate data.
1. Destroy LineItemsVisits that belong to a OTF LineItem.
2. Destroy any arms that lack LineItemsVisits to cleanup.
3. Add validation that ensures a LineItemsVisit should only belong to a
PPPV LineItem.
[#137959649]
  • Loading branch information
William Holt committed Jan 19, 2017
1 parent cc0cc66 commit 49e3eaf
Show file tree
Hide file tree
Showing 11 changed files with 38 additions and 11 deletions.
7 changes: 7 additions & 0 deletions app/models/line_items_visit.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class LineItemsVisit < ActiveRecord::Base

validates_numericality_of :subject_count
validate :subject_count_valid
validate :pppv_line_item

after_save :set_arm_edited_flag_on_subjects

Expand All @@ -50,6 +51,12 @@ def subject_count_valid
end
end

def pppv_line_item
if self.line_item.one_time_fee
errors.add(:_, 'Line Items Visits should only belong to a PPPV LineItem')
end
end

def set_arm_edited_flag_on_subjects
self.arm.set_arm_edited_flag_on_subjects
end
Expand Down
13 changes: 13 additions & 0 deletions lib/tasks/fix_otf_service_associations.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
task fix_otf_service_associations: :environment do
LineItem.all.each do |line_item|
if line_item.one_time_fee
line_item.line_items_visits.destroy
end
end

Arm.all.each do |arm|
unless arm.line_items_visits.present?
arm.destroy
end
end
end
4 changes: 4 additions & 0 deletions spec/factories/line_items_visit.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,8 @@
factory :line_items_visit do
subject_count 1
end

trait :without_validations do
to_create { |instance| instance.save(validate: false) }
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
li = create(:line_item, sub_service_request: ssr, service_request: @sr, service: service)
@arm = create(:arm, protocol: protocol)
vg = create(:visit_group, arm: @arm)
liv = create(:line_items_visit, line_item: li, arm: @arm)
liv = create(:line_items_visit, :without_validations, line_item: li, arm: @arm)
visit = create(:visit, line_items_visit: liv, visit_group: vg)

visit service_calendar_service_request_path(@sr)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
li = create(:line_item, sub_service_request: ssr, service_request: @sr, service: service)
@arm = create(:arm, protocol: protocol)
vg = create(:visit_group, arm: @arm)
liv = create(:line_items_visit, line_item: li, arm: @arm)
liv = create(:line_items_visit, :without_validations, line_item: li, arm: @arm)
visit = create(:visit, line_items_visit: liv, visit_group: vg)

visit service_calendar_service_request_path(@sr)
Expand Down
3 changes: 0 additions & 3 deletions spec/lib/dashboard/service_calendars_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@
# this LIV should not appear (it is not PPPV)
service_otf = create(:service, :without_validations, organization: org_A, one_time_fee: true)
li_otf = create(:line_item, :without_validations, service: service_otf, sub_service_request: ssr)
create(:line_items_visit, arm: arm, line_item: li_otf, sub_service_request: ssr)

# this LIV should not appear (not associated with arm)
wrong_arm = create(:arm, :without_validations)
Expand Down Expand Up @@ -117,7 +116,6 @@
# this LIV should not appear (it is not PPPV)
service_otf = create(:service, :without_validations, organization: org_A, one_time_fee: true)
li_otf = create(:line_item, :without_validations, service: service_otf, sub_service_request: ssr)
create(:line_items_visit, arm: arm, line_item: li_otf, sub_service_request: ssr)

# this LIV should not appear (associated with another SSR)
another_ssr = create(:sub_service_request, :without_validations, organization: org_A)
Expand Down Expand Up @@ -156,7 +154,6 @@
# this LIV should not appear (it is not PPPV)
service_otf = create(:service, :without_validations, organization: org_A, one_time_fee: true)
li_otf = create(:line_item, :without_validations, service: service_otf, service_request: sr, sub_service_request: ssr)
create(:line_items_visit, arm: arm, line_item: li_otf)

# this LIV should not appear (associated with another SR)
another_sr = create(:service_request_without_validations)
Expand Down
1 change: 0 additions & 1 deletion spec/models/arm/service_list_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
# org2 <- s2(otf)
@s2 = create(:service, organization: @org2, one_time_fee: true)
@li2 = create(:line_item, service: @s2, service_request: @sr)
@liv2 = create(:line_items_visit, arm: @arm, line_item: @li2)

# org3(ssrs)* <- org4(ssrs) <- s3(not otf)
@org3 = create(:organization, process_ssrs: true, parent: nil)
Expand Down
10 changes: 9 additions & 1 deletion spec/models/line_items_visit_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@
expect(line_items_visit.visits).to eq [ ]
end

it 'should only belong to a PPPV LineItem' do
arm = create(:arm, :without_validations)
line_item = create(:line_item, :one_time_fee, :without_validations)
line_items_visit = build(:line_items_visit, line_item_id: line_item.id, arm_id: arm.id)

expect(line_items_visit).not_to be_valid
end

describe "methods" do

before :each do
Expand Down Expand Up @@ -194,7 +202,7 @@
describe 'any visit quantities customized' do
let!(:protocol) { create(:protocol_without_validations) }
let!(:arm) { create(:arm, protocol: protocol) }
let!(:line_items_visit1) { create(:line_items_visit, arm_id: arm.id) }
let!(:line_items_visit1) { create(:line_items_visit, :without_validations, arm_id: arm.id) }
let!(:visit_group) { create(:visit_group, arm_id: arm.id)}
let!(:visit1) { create(:visit, line_items_visit_id: line_items_visit1.id, visit_group_id: visit_group.id) }
let!(:visit2) { create(:visit, line_items_visit_id: line_items_visit1.id, visit_group_id: visit_group.id) }
Expand Down
2 changes: 1 addition & 1 deletion spec/models/visit_group_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
describe 'any visit quantities customized' do
let!(:protocol) { create(:protocol_without_validations) }
let!(:arm) { create(:arm, protocol: protocol) }
let!(:line_items_visit1) { create(:line_items_visit, arm_id: arm.id, line_item_id: line_item.id) }
let!(:line_items_visit1) { create(:line_items_visit, :without_validations, arm_id: arm.id, line_item_id: line_item.id) }
let!(:visit_group) { create(:visit_group, arm_id: arm.id)}
let!(:visit1) { create(:visit, line_items_visit_id: line_items_visit1.id, visit_group_id: visit_group.id) }
let!(:visit2) { create(:visit, line_items_visit_id: line_items_visit1.id, visit_group_id: visit_group.id) }
Expand Down
4 changes: 2 additions & 2 deletions spec/models/visit_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
build_service_request_with_study

let!(:arm) { create(:arm, protocol: study) }
let!(:line_items_visit1) { create(:line_items_visit, arm_id: arm.id, line_item_id: line_item.id) }
let!(:line_items_visit1) { create(:line_items_visit, :without_validations, arm_id: arm.id, line_item_id: line_item.id) }
let!(:visit_group) { create(:visit_group, arm_id: arm.id)}
let!(:visit1) { create(:visit, line_items_visit_id: line_items_visit1.id, visit_group_id: visit_group.id) }

Expand All @@ -44,4 +44,4 @@
expect(visit1.quantities_customized?).to eq(true)
end
end
end
end
1 change: 0 additions & 1 deletion spec/support/capybara_support.rb
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,6 @@ def create_default_data

arm = create(:arm, protocol_id: project.id, subject_count: 2, visit_count: 10)

line_items_visit = create(:line_items_visit, arm_id: arm.id, subject_count: arm.subject_count)

survey = create(:survey, title: "System Satisfaction survey", description: nil, access_code: "system-satisfaction-survey", reference_identifier: nil,
data_export_identifier: nil, common_namespace: nil, common_identifier: nil, active_at: nil, inactive_at: nil, css_url: nil,
Expand Down

0 comments on commit 49e3eaf

Please sign in to comment.