# frozen_string_literal: true shared_examples "edits box label inline" do |test_case, key| let(:data) { '[{"type":"text","label":"Short Name","subtype":"text","className":"form-control","name":"text-1476748004559"}]' } it "updates the label when no changes" do link = find("[data-key=#{key}] a.awesome-auto-edit", match: :first) expect(page).not_to have_css("input.awesome-auto-edit") link.click expect(page).to have_css("input.awesome-auto-edit") find("body").click expect(page).not_to have_css("input.awesome-auto-edit") link.click input = find("[data-key=#{key}] input.awesome-auto-edit") input.fill_in with: "A new làbel\n" sleep 1 expect(page).not_to have_css("input.awesome-auto-edit") expect(page).to have_css("span.awesome-auto-edit[data-key=a_new_label]") find("*[type=submit]").click case test_case when :css expect(page).to have_content("body {background: red;}") when :fields expect(page).to have_content("Occupation") expect(page).to have_content("Street Sweeper") expect(page).not_to have_content("Short Bio") when :admins expect(page).not_to have_content(user.name.to_s) expect(page).to have_content(user2.name.to_s) expect(page).to have_content(user3.name.to_s) end expect(page).to have_css("span.awesome-auto-edit[data-key=a_new_label]") expect(page).not_to have_css("span.awesome-auto-edit[data-key=#{key}]") end it "updates the label with previous changes" do case test_case when :css sleep 1 page.execute_script("document.querySelector(\"[data-key=#{key}] .CodeMirror\").CodeMirror.setValue(\"div {background: brown;}\");") when :fields sleep 2 page.execute_script("$('.proposal_custom_fields_container[data-key=#{key}] .proposal_custom_fields_editor')[0].FormBuilder.actions.setData(#{data})") when :admins sleep 1 page.execute_script("$('.multiusers-select:first').append(new Option('#{user.name}', #{user.id}, true, true)).trigger('change');") end link = find("[data-key=#{key}] a.awesome-auto-edit", match: :first) expect(page).not_to have_css("input.awesome-auto-edit") link.click expect(page).to have_css("input.awesome-auto-edit") find("body").click expect(page).not_to have_css("input.awesome-auto-edit") link.click input = find("[data-key=#{key}] input.awesome-auto-edit") input.fill_in with: "A new làbel\n" sleep 1 expect(page).not_to have_css("input.awesome-auto-edit") expect(page).to have_css("span.awesome-auto-edit[data-key=a_new_label]") find("*[type=submit]").click case test_case when :css expect(page).to have_admin_callout("updated successfully") expect(page).to have_content("div {background: brown;}") when :fields expect(page).to have_content("Short Name") when :admins expect(page).to have_content(user.name.to_s) expect(page).to have_content(user2.name.to_s) expect(page).to have_content(user3.name.to_s) end expect(page).to have_css("span.awesome-auto-edit[data-key=a_new_label]") expect(page).not_to have_css("span.awesome-auto-edit[data-key=#{key}]") end it "updates the label with post changes" do link = find("[data-key=#{key}] a.awesome-auto-edit", match: :first) expect(page).not_to have_css("input.awesome-auto-edit") link.click expect(page).to have_css("input.awesome-auto-edit") find("body").click expect(page).not_to have_css("input.awesome-auto-edit") link.click input = find("[data-key=#{key}] input.awesome-auto-edit") input.fill_in with: "A new làbel\n" sleep 1 expect(page).not_to have_css("input.awesome-auto-edit") expect(page).to have_css("span.awesome-auto-edit[data-key=a_new_label]") case test_case when :css sleep 1 page.execute_script('document.querySelector("[data-key=a_new_label] .CodeMirror").CodeMirror.setValue("body {background: lilac;}");') find("*[type=submit]").click expect(page).to have_admin_callout("updated successfully") expect(page).to have_content("body {background: lilac;}") when :fields expect(page).to have_content("Full Name") sleep 2 page.execute_script("$('.proposal_custom_fields_container[data-key=a_new_label] .proposal_custom_fields_editor')[0].FormBuilder.actions.setData(#{data})") find("*[type=submit]").click expect(page).to have_content("Short Name") when :admins page.execute_script("$('.multiusers-select:first').append(new Option('#{user.name}', #{user.id}, true, true)).trigger('change');") find("*[type=submit]").click expect(page).to have_content(user.name.to_s) expect(page).to have_content(user2.name.to_s) expect(page).to have_content(user3.name.to_s) end expect(page).to have_css("span.awesome-auto-edit[data-key=a_new_label]") expect(page).not_to have_css("span.awesome-auto-edit[data-key=#{key}]") end end