FIX: better handling of missing welcome topic in wizard (#6606)

This commit is contained in:
Joffrey JAFFEUX 2018-11-15 12:20:48 +01:00 committed by GitHub
parent 9c5b5243fc
commit c52e68a0c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 44 additions and 7 deletions

View File

@ -3999,6 +3999,7 @@ en:
introduction:
title: "Introduction"
disabled: "We couldnt find any Welcome Topic. Create a topic with `Welcome to Discourse` as title to fix this issue."
fields:
welcome:

View File

@ -46,15 +46,19 @@ class Wizard
@wizard.append_step('introduction') do |step|
introduction = IntroductionUpdater.new(@wizard.user)
step.add_field(id: 'welcome', type: 'textarea', required: true, value: introduction.get_summary)
if @wizard.completed_steps?('introduction') && !introduction.get_summary
step.disabled = true
else
step.add_field(id: 'welcome', type: 'textarea', required: true, value: introduction.get_summary)
step.on_update do |updater|
value = updater.fields[:welcome].strip
step.on_update do |updater|
value = updater.fields[:welcome].strip
if value.index("\n")
updater.errors.add(:welcome, I18n.t("wizard.step.introduction.fields.welcome.one_paragraph"))
else
introduction.update_summary(value)
if value.index("\n")
updater.errors.add(:welcome, I18n.t("wizard.step.introduction.fields.welcome.one_paragraph"))
else
introduction.update_summary(value)
end
end
end
end

View File

@ -37,4 +37,36 @@ describe Wizard::Builder do
expect(invites_step.disabled).to be_truthy
end
context 'introduction step' do
let(:wizard) { Wizard::Builder.new(moderator).build }
let(:introduction_step) { wizard.steps.find { |s| s.id == 'introduction' } }
context 'step has not been completed' do
it 'enables the step' do
expect(introduction_step.disabled).to be_nil
end
end
context 'step has been completed' do
before do
wizard = Wizard::Builder.new(moderator).build
introduction_step = wizard.steps.find { |s| s.id == 'introduction' }
# manually sets the step as completed
logger = StaffActionLogger.new(moderator)
logger.log_wizard_step(introduction_step)
end
it 'disables step if no welcome topic' do
expect(introduction_step.disabled).to eq(true)
end
it 'enables step if welcome topic is present' do
topic = Fabricate(:topic, title: 'Welcome to Discourse')
welcome_post = Fabricate(:post, topic: topic, raw: "this will be the welcome topic post\n\ncool!")
expect(introduction_step.disabled).to be_nil
end
end
end
end