add hidden_feedback to custom CodeOcean test-attributes

This commit is contained in:
Karol
2023-11-16 23:12:13 +01:00
committed by Sebastian Serth
parent 122580b220
commit 1e08f2cc9c
4 changed files with 12 additions and 4 deletions

View File

@ -109,7 +109,7 @@ module ProformaService
{ {
'@@order' => %w[test-meta-data], '@@order' => %w[test-meta-data],
'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'}, '@xmlns' => {'CodeOcean' => 'codeocean.openhpi.de'},
'CodeOcean:feedback-message' => { 'CodeOcean:feedback-message' => {
'@@order' => %w[$1], '@@order' => %w[$1],
@ -119,6 +119,10 @@ module ProformaService
'@@order' => %w[$1], '@@order' => %w[$1],
'$1' => file.weight, '$1' => file.weight,
}, },
'CodeOcean:hidden-feedback' => {
'@@order' => %w[$1],
'$1' => file.hidden_feedback,
},
}, },
} }
end end

View File

@ -68,6 +68,7 @@ module ProformaService
task_files.delete(test_object.files.first.id).tap do |file| 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.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.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' file.role ||= 'teacher_defined_test'
end end
end end

View File

@ -214,7 +214,7 @@ RSpec.describe ProformaService::ConvertExerciseToTask do
context 'when exercise has a test' do context 'when exercise has a test' do
let(:tests) { [test_file] } 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) } # let(:file) { FactoryBot.build(:codeharbor_test_file) }
it 'creates a task with one test' do it 'creates a task with one test' do
@ -229,7 +229,8 @@ RSpec.describe ProformaService::ConvertExerciseToTask do
meta_data: a_hash_including( meta_data: a_hash_including(
'test-meta-data' => a_hash_including( 'test-meta-data' => a_hash_including(
'CodeOcean:feedback-message' => {'$1' => 'feedback_message', '@@order' => ['$1']}, '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']}
) )
) )
) )

View File

@ -361,9 +361,10 @@ RSpec.describe ProformaService::ConvertTaskToExercise do
files: test_files, files: test_files,
meta_data: { meta_data: {
'test-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:feedback-message' => {'$1' => 'feedback-message', '@@order' => ['$1']},
'CodeOcean:weight' => {'$1' => '0.7', '@@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', role: 'teacher_defined_test',
hidden: true, hidden: true,
read_only: true, read_only: true,
hidden_feedback: true,
file_type: be_a(FileType).and(have_attributes(file_extension: '.txt')) file_type: be_a(FileType).and(have_attributes(file_extension: '.txt'))
) )
end end