diff --git a/lib/custom_wizard/submission.rb b/lib/custom_wizard/submission.rb index ae616b0b..7387902e 100644 --- a/lib/custom_wizard/submission.rb +++ b/lib/custom_wizard/submission.rb @@ -131,6 +131,8 @@ class CustomWizard::Submission params[:key] = list_actor_id if list_actor_id query = PluginStoreRow.where(params) + query = query.order(order_by) if order_by + result = OpenStruct.new(submissions: [], total: nil) query.each do |record| diff --git a/plugin.rb b/plugin.rb index 2c2f5215..133284f7 100644 --- a/plugin.rb +++ b/plugin.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true # name: discourse-custom-wizard # about: Forms for Discourse. Better onboarding, structured posting, data enrichment, automated actions and much more. -# version: 2.4.24 +# version: 2.4.26 # authors: Angus McLeod, Faizaan Gagan, Robert Barrow, Keegan George, Kaitlin Maddever, Juan Marcos Gutierrez Ramos # url: https://github.com/paviliondev/discourse-custom-wizard # contact_emails: development@pavilion.tech @@ -242,10 +242,11 @@ after_initialize do on(:before_create_topic) do |topic_params, user| category = topic_params.category - if category&.custom_fields&.[]('create_topic_wizard').present? + wizard_submission_id = topic_params.custom_fields&.[]('wizard_submission_id') + if category&.custom_fields&.[]('create_topic_wizard').present? && wizard_submission_id.blank? raise Discourse::InvalidParameters.new( - I18n.t('wizard.error_messages.wizard_replacing_composer') - ) + I18n.t('wizard.error_messages.wizard_replacing_composer') + ) end end end diff --git a/spec/components/custom_wizard/action_spec.rb b/spec/components/custom_wizard/action_spec.rb index 39e74dfa..b867cced 100644 --- a/spec/components/custom_wizard/action_spec.rb +++ b/spec/components/custom_wizard/action_spec.rb @@ -451,4 +451,29 @@ describe CustomWizard::Action do expect(action.result.success?).to eq(true) expect(Topic.find(action.result.output).custom_fields["topic_custom_field"]).to eq("t") end + + context 'creating a topic when there are multiple actions' do + it 'works' do + wizard_template['actions'] << create_topic + wizard_template['actions'] << send_message + update_template(wizard_template) + wizard = CustomWizard::Builder.new(@template[:id], user).build + wizard.create_updater( + wizard.steps.first.id, + step_1_field_1: 'Topic Title', + step_1_field_2: 'topic body' + ).update + wizard.create_updater(wizard.steps.second.id, {}).update + wizard.create_updater(wizard.steps.last.id, step_3_field_3: category.id) + .update + User.create(username: 'angus1', email: 'angus1@email.com') + wizard.create_updater(wizard.steps[0].id, {}).update + wizard.create_updater(wizard.steps[1].id, {}).update + topic = Topic.where(title: 'Topic Title', category_id: category.id) + expect(topic.exists?).to eq(true) + expect( + Post.where(topic_id: topic.pluck(:id), raw: 'topic body').exists? + ).to eq(true) + end + end end diff --git a/spec/serializers/custom_wizard/submission_serializer_spec.rb b/spec/serializers/custom_wizard/submission_serializer_spec.rb index f810a0aa..0548f381 100644 --- a/spec/serializers/custom_wizard/submission_serializer_spec.rb +++ b/spec/serializers/custom_wizard/submission_serializer_spec.rb @@ -25,7 +25,7 @@ describe CustomWizard::SubmissionSerializer do it 'should return submission attributes' do wizard = CustomWizard::Wizard.create(template_json["id"]) - list = CustomWizard::Submission.list(wizard, page: 0) + list = CustomWizard::Submission.list(wizard, page: 0, order_by: 'id') json_array = ActiveModel::ArraySerializer.new( list.submissions, @@ -41,7 +41,7 @@ describe CustomWizard::SubmissionSerializer do it "should return field values, types and labels" do wizard = CustomWizard::Wizard.create(template_json["id"]) - list = CustomWizard::Submission.list(wizard, page: 0) + list = CustomWizard::Submission.list(wizard, page: 0, order_by: 'id') json_array = ActiveModel::ArraySerializer.new( list.submissions,