diff --git a/app/services/proforma_service/convert_exercise_to_task.rb b/app/services/proforma_service/convert_exercise_to_task.rb index 655106fe..5c87f50e 100644 --- a/app/services/proforma_service/convert_exercise_to_task.rb +++ b/app/services/proforma_service/convert_exercise_to_task.rb @@ -22,12 +22,19 @@ module ProformaService { title: @exercise.title, description: @exercise.description, - internal_description: @exercise.instructions, + internal_description: nil, + # ?: @exercise.instructions, store in meta-data + # proglang: proglang, where can we get this information? files: task_files, tests: tests, uuid: uuid, language: DEFAULT_LANGUAGE, model_solutions: model_solutions, + meta_data: { + openHPI: { + instructions: @exercise.instructions, + }, + }, }.compact ) end @@ -69,8 +76,10 @@ module ProformaService end def test_meta_data(file) - [{namespace: 'openHPI', key: 'entry-point', value: file.filepath}, - {namespace: 'openHPI', key: 'feedback-message', value: file.feedback_message}] + {openHPI: { + 'entry-point': file.filepath, + 'feedback-message': file.feedback_message, + }} end def test_file(file) diff --git a/app/services/proforma_service/convert_task_to_exercise.rb b/app/services/proforma_service/convert_task_to_exercise.rb index 19a9333b..e761efb5 100644 --- a/app/services/proforma_service/convert_task_to_exercise.rb +++ b/app/services/proforma_service/convert_task_to_exercise.rb @@ -21,7 +21,7 @@ module ProformaService user: @user, title: @task.title, description: @task.description, - instructions: @task.internal_description, + instructions: @task.meta_data&.dig(:openHPI)&.dig(:instructions), files: files ) end @@ -34,7 +34,7 @@ module ProformaService @task.tests.map do |test_object| task_files.delete(test_object.files.first.id).tap do |file| file.weight = 1.0 - file.feedback_message = test_object.meta_data.detect {|meta_data| meta_data[:namespace] == 'openHPI' && meta_data[:key] == 'feedback-message' }[:value] + file.feedback_message = test_object.meta_data[:openHPI]&.dig(:'feedback-message') end 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 e28c6668..a8f277bb 100644 --- a/spec/services/proforma_service/convert_exercise_to_task_spec.rb +++ b/spec/services/proforma_service/convert_exercise_to_task_spec.rb @@ -30,13 +30,18 @@ RSpec.describe ProformaService::ConvertExerciseToTask do expect(task).to have_attributes( title: exercise.title, description: exercise.description, - internal_description: exercise.instructions, + # internal_description: exercise.instructions, # proglang: { # name: exercise.execution_environment.language, # version: exercise.execution_environment.version # }, uuid: exercise.uuid, language: described_class::DEFAULT_LANGUAGE, + meta_data: { + openHPI: { + instructions: exercise.instructions, + }, + }, # parent_uuid: exercise.clone_relations.first&.origin&.uuid, files: [], tests: [], @@ -161,8 +166,12 @@ RSpec.describe ProformaService::ConvertExerciseToTask do id: test_file.id, title: test_file.name, files: have(1).item, - meta_data: [{key: 'entry-point', namespace: 'openHPI', value: test_file.filepath}, - {key: 'feedback-message', namespace: 'openHPI', value: 'feedback_message'}] + meta_data: { + openHPI: { + 'entry-point': test_file.filepath, + 'feedback-message': 'feedback_message', + }, + } ) end 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 98e8cba2..b357df01 100644 --- a/spec/services/proforma_service/convert_task_to_exercise_spec.rb +++ b/spec/services/proforma_service/convert_task_to_exercise_spec.rb @@ -34,11 +34,15 @@ describe ProformaService::ConvertTaskToExercise do Proforma::Task.new( title: 'title', description: 'description', - internal_description: 'internal_description', - proglang: {name: 'proglang-name', version: 'proglang-version'}, + # proglang: {name: 'proglang-name', version: 'proglang-version'}, uuid: 'uuid', parent_uuid: 'parent_uuid', language: 'language', + meta_data: { + openHPI: { + instructions: 'instructions', + }, + }, model_solutions: model_solutions, files: files, tests: tests @@ -54,7 +58,7 @@ describe ProformaService::ConvertTaskToExercise do expect(convert_to_exercise_service).to have_attributes( title: 'title', description: 'description', - instructions: 'internal_description', + instructions: 'instructions', execution_environment: be_blank, uuid: be_blank, unpublished: true, @@ -226,14 +230,15 @@ describe ProformaService::ConvertTaskToExercise do id: 'test-id', title: 'title', description: 'description', - internal_description: 'internal_description', test_type: 'test_type', files: test_files, - meta_data: [ - {namespace: 'openHPI', key: 'feedback-message', value: 'feedback-message'}, - {namespace: 'openHPI', key: 'testing-framework', value: 'testing-framework'}, - {namespace: 'openHPI', key: 'testing-framework-version', value: 'testing-framework-version'}, - ] + meta_data: { + openHPI: { + 'feedback-message': 'feedback-message', + 'testing-framework': 'testing-framework', + 'testing-framework-version': 'testing-framework-version', + }, + } ) end @@ -272,11 +277,13 @@ describe ProformaService::ConvertTaskToExercise do let(:test2) do Proforma::Test.new( files: test_files2, - meta_data: [ - {namespace: 'openHPI', key: 'feedback-message', value: 'feedback-message'}, - {namespace: 'openHPI', key: 'testing-framework', value: 'testing-framework'}, - {namespace: 'openHPI', key: 'testing-framework-version', value: 'testing-framework-version'}, - ] + meta_data: { + openHPI: { + 'feedback-message': 'feedback-message', + 'testing-framework': 'testing-framework', + 'testing-framework-version': 'testing-framework-version', + }, + } ) end let(:test_files2) { [test_file2] } @@ -317,7 +324,7 @@ describe ProformaService::ConvertTaskToExercise do id: exercise.id, title: task.title, description: task.description, - instructions: task.internal_description, + instructions: task.meta_data[:openHPI][:instructions], execution_environment: exercise.execution_environment, uuid: exercise.uuid, user: exercise.user, @@ -352,11 +359,13 @@ describe ProformaService::ConvertTaskToExercise do internal_description: 'regular_file', test_type: 'test_type', files: test_files, - meta_data: [ - {namespace: 'openHPI', key: 'feedback-message', value: 'feedback-message'}, - {namespace: 'openHPI', key: 'testing-framework', value: 'testing-framework'}, - {namespace: 'openHPI', key: 'testing-framework-version', value: 'testing-framework-version'}, - ] + meta_data: { + openHPI: { + 'feedback-message': 'feedback-message', + 'testing-framework': 'testing-framework', + 'testing-framework-version': 'testing-framework-version', + }, + } ) end let(:test_files) { [test_file] } diff --git a/spec/services/proforma_service/export_task_spec.rb b/spec/services/proforma_service/export_task_spec.rb index f91423ca..3c2b4f26 100644 --- a/spec/services/proforma_service/export_task_spec.rb +++ b/spec/services/proforma_service/export_task_spec.rb @@ -37,5 +37,6 @@ describe ProformaService::ExportTask do export_task expect(exporter).to have_received(:perform) end + # TODO more tests?! end end