From f872cf73eef3d6888e3c9e8f6b48b0566a5645bc Mon Sep 17 00:00:00 2001 From: Karol Date: Mon, 2 Nov 2020 17:09:31 +0100 Subject: [PATCH] Review points, specs --- .../proforma_service/convert_task_to_exercise.rb | 8 ++++++-- config/locales/en.yml | 2 +- .../convert_task_to_exercise_spec.rb | 15 ++++++++++++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/services/proforma_service/convert_task_to_exercise.rb b/app/services/proforma_service/convert_task_to_exercise.rb index 9ac6ee34..0ef8a96f 100644 --- a/app/services/proforma_service/convert_task_to_exercise.rb +++ b/app/services/proforma_service/convert_task_to_exercise.rb @@ -66,8 +66,12 @@ module ProformaService end def file_type(extension) - FileType.find_by(file_extension: extension) || - FileType.create(file_extension: extension, name: extension[1..-1], user: @user, indent_size: 4, editor_mode: 'ace/mode/plain_text') + FileType.find_or_create_by(file_extension: extension) do |file_type| + file_type.name = extension[1..-1] + file_type.user = @user + file_type.indent_size = 4 + file_type.editor_mode = 'ace/mode/plain_text' + end end end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 2b4b033f..8bfb2978 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -344,7 +344,7 @@ en: import_codeharbor: import_errors: invalid: Invalid exercise - internal_error: An internal error occurred on Codeocean while importing the exercise. + internal_error: An internal error occurred on CodeOcean while importing the exercise. export_codeharbor: label: Export to Codeharbor dialogtitle: Export to Codeharbor 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 7cd93af8..a9f4f0e1 100644 --- a/spec/services/proforma_service/convert_task_to_exercise_spec.rb +++ b/spec/services/proforma_service/convert_task_to_exercise_spec.rb @@ -69,7 +69,7 @@ describe ProformaService::ConvertTaskToExercise do Proforma::TaskFile.new( id: 'id', content: content, - filename: "#{path}filename.txt", + filename: filename, used_by_grader: 'used_by_grader', visible: 'yes', usage_by_lms: usage_by_lms, @@ -78,6 +78,7 @@ describe ProformaService::ConvertTaskToExercise do mimetype: mimetype ) end + let(:filename) { "#{path}filename.txt" } let(:usage_by_lms) { 'display' } let(:mimetype) { 'mimetype' } let(:binary) { false } @@ -148,6 +149,18 @@ describe ProformaService::ConvertTaskToExercise do expect(convert_to_exercise_service.files).to be_empty end end + + context 'when file has an unkown file_type' do + let(:filename) { 'unknown_file_type.asdf' } + + it 'creates a new Exercise on save' do + expect { convert_to_exercise_service.save! }.to change(Exercise, :count).by(1) + end + + it 'creates the missing FileType on save' do + expect { convert_to_exercise_service.save! }.to change(FileType, :count).by(1) + end + end end context 'when task has a model-solution' do