Skip to content

Commit bd6a25c

Browse files
committed
fix exercise#duplicate when xml_id_path is set
1 parent f634e7d commit bd6a25c

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

app/controllers/exercises_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def batch_update
5656
end
5757

5858
def clone
59-
exercise = @exercise.duplicate(public: false, token: nil, user: current_user)
59+
exercise = @exercise.duplicate(public: false, token: nil, user: current_user, uuid: nil)
6060
exercise.send(:generate_token)
6161
if exercise.save
6262
redirect_to(exercise_path(exercise), notice: t('shared.object_cloned', model: Exercise.model_name.human))

spec/controllers/exercises_controller_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,15 @@
4949
expect_redirect(Exercise.last)
5050
end
5151

52+
context 'when exercise has uuid' do
53+
let(:exercise) { create(:dummy, uuid: SecureRandom.hex) }
54+
55+
it 'clones the exercise' do
56+
expect_any_instance_of(Exercise).to receive(:duplicate).with(hash_including(public: false, user:)).and_call_original
57+
expect { perform_request.call }.to change(Exercise, :count).by(1)
58+
end
59+
end
60+
5261
context 'when saving fails' do
5362
before do
5463
allow_any_instance_of(Exercise).to receive(:save).and_return(false)

0 commit comments

Comments
 (0)