Skip to content

Commit

Permalink
manage sub-analysis replacement
Browse files Browse the repository at this point in the history
  • Loading branch information
relf committed Mar 14, 2020
1 parent bc83625 commit 893446d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
5 changes: 1 addition & 4 deletions app/models/discipline.rb
Original file line number Diff line number Diff line change
Expand Up @@ -104,17 +104,14 @@ def update_discipline(params)

def create_variables_from_sub_analysis(sub_analysis = nil)
sub_analysis ||= analysis_discipline&.analysis
variables.map(&:destroy!)
if sub_analysis
sub_analysis.driver.output_variables.each do |outvar|
next unless variables.where(name: outvar.name).empty?

newvar = variables.build(outvar.attributes.except("id", "discipline_id", "created_at", "updated_at"))
newvar.io_mode = WhatsOpt::Variable::IN unless is_driver?
newvar.save!
end
sub_analysis.driver.input_variables.each do |invar|
next unless variables.where(name: invar.name).empty?

newvar = variables.build(invar.attributes.except("id", "discipline_id", "created_at", "updated_at"))
newvar.io_mode = WhatsOpt::Variable::OUT unless is_driver?
newvar.save!
Expand Down
18 changes: 18 additions & 0 deletions test/controllers/api/v1/analysis_disciplines_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,22 @@ class Api::V1::AnalysisDisciplinesControllerTest < ActionDispatch::IntegrationTe
end
end
end

test "should replace analysis discipline without duplicating variables" do
disc = disciplines(:outermda_innermda_discipline)
varins = @cicav.input_variables.map(&:name)
varouts = @cicav.response_variables.map(&:name)
post api_v1_discipline_mda_url(@innermdadisc), params: { analysis_discipline: { analysis_id: @cicav.id } },
as: :json, headers: @auth_headers
disc.reload
assert_equal varins, disc.input_variables.map(&:name)
assert_equal varouts, disc.output_variables.map(&:name)
end

test "should not be authorized to attach an analysis owned by another user" do
singleton_of_user3 = analyses(:singleton)
post api_v1_discipline_mda_url(@innermdadisc), params: { analysis_discipline: { analysis_id: singleton_of_user3.id } },
as: :json, headers: @auth_headers
assert_response :unauthorized
end
end

0 comments on commit 893446d

Please sign in to comment.