From 1e08f2cc9cda8f5f0d49b8543cf25323e0b93e2f Mon Sep 17 00:00:00 2001 From: Karol Date: Thu, 16 Nov 2023 23:12:13 +0100 Subject: [PATCH] add hidden_feedback to custom CodeOcean test-attributes --- app/services/proforma_service/convert_exercise_to_task.rb | 6 +++++- app/services/proforma_service/convert_task_to_exercise.rb | 1 + .../proforma_service/convert_exercise_to_task_spec.rb | 5 +++-- .../proforma_service/convert_task_to_exercise_spec.rb | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/services/proforma_service/convert_exercise_to_task.rb b/app/services/proforma_service/convert_exercise_to_task.rb index 7f5abf24..3eba296f 100644 --- a/app/services/proforma_service/convert_exercise_to_task.rb +++ b/app/services/proforma_service/convert_exercise_to_task.rb @@ -109,7 +109,7 @@ module ProformaService { '@@order' => %w[test-meta-data], 'test-meta-data' => { - '@@order' => %w[CodeOcean:feedback-message CodeOcean:weight], + '@@order' => %w[CodeOcean:feedback-message CodeOcean:weight CodeOcean:hidden-feedback], '@xmlns' => {'CodeOcean' => 'codeocean.openhpi.de'}, 'CodeOcean:feedback-message' => { '@@order' => %w[$1], @@ -119,6 +119,10 @@ module ProformaService '@@order' => %w[$1], '$1' => file.weight, }, + 'CodeOcean:hidden-feedback' => { + '@@order' => %w[$1], + '$1' => file.hidden_feedback, + }, }, } end diff --git a/app/services/proforma_service/convert_task_to_exercise.rb b/app/services/proforma_service/convert_task_to_exercise.rb index efa64074..6eda6e4c 100644 --- a/app/services/proforma_service/convert_task_to_exercise.rb +++ b/app/services/proforma_service/convert_task_to_exercise.rb @@ -68,6 +68,7 @@ module ProformaService task_files.delete(test_object.files.first.id).tap do |file| file.weight = extract_meta_data(test_object.meta_data&.dig('test-meta-data'), 'weight').presence || 1.0 file.feedback_message = extract_meta_data(test_object.meta_data&.dig('test-meta-data'), 'feedback-message').presence || 'Feedback' + file.hidden_feedback = extract_meta_data(test_object.meta_data&.dig('test-meta-data'), 'hidden-feedback').presence || false file.role ||= 'teacher_defined_test' end end diff --git a/spec/services/proforma_service/convert_exercise_to_task_spec.rb b/spec/services/proforma_service/convert_exercise_to_task_spec.rb index 915921f2..73e68dc0 100644 --- a/spec/services/proforma_service/convert_exercise_to_task_spec.rb +++ b/spec/services/proforma_service/convert_exercise_to_task_spec.rb @@ -214,7 +214,7 @@ RSpec.describe ProformaService::ConvertExerciseToTask do context 'when exercise has a test' do let(:tests) { [test_file] } - let(:test_file) { build(:test_file) } + let(:test_file) { build(:test_file, hidden_feedback: true) } # let(:file) { FactoryBot.build(:codeharbor_test_file) } it 'creates a task with one test' do @@ -229,7 +229,8 @@ RSpec.describe ProformaService::ConvertExerciseToTask do meta_data: a_hash_including( 'test-meta-data' => a_hash_including( 'CodeOcean:feedback-message' => {'$1' => 'feedback_message', '@@order' => ['$1']}, - 'CodeOcean:weight' => {'$1' => test_file.weight, '@@order' => ['$1']} + 'CodeOcean:weight' => {'$1' => test_file.weight, '@@order' => ['$1']}, + 'CodeOcean:hidden-feedback' => {'$1' => test_file.hidden_feedback, '@@order' => ['$1']} ) ) ) diff --git a/spec/services/proforma_service/convert_task_to_exercise_spec.rb b/spec/services/proforma_service/convert_task_to_exercise_spec.rb index fd5ef3a2..12438d9b 100644 --- a/spec/services/proforma_service/convert_task_to_exercise_spec.rb +++ b/spec/services/proforma_service/convert_task_to_exercise_spec.rb @@ -361,9 +361,10 @@ RSpec.describe ProformaService::ConvertTaskToExercise do files: test_files, meta_data: { 'test-meta-data' => { - '@@order' => %w[CodeOcean:feedback-message CodeOcean:weight], + '@@order' => %w[CodeOcean:feedback-message CodeOcean:weight CodeOcean:hidden-feedback], 'CodeOcean:feedback-message' => {'$1' => 'feedback-message', '@@order' => ['$1']}, 'CodeOcean:weight' => {'$1' => '0.7', '@@order' => ['$1']}, + 'CodeOcean:hidden-feedback' => {'$1' => 'true', '@@order' => ['$1']}, }, } ) @@ -396,6 +397,7 @@ RSpec.describe ProformaService::ConvertTaskToExercise do role: 'teacher_defined_test', hidden: true, read_only: true, + hidden_feedback: true, file_type: be_a(FileType).and(have_attributes(file_extension: '.txt')) ) end