require "rails_helper"
RSpec.feature "Templates::UpgradeCustomisations", type: :feature do
let(:funder) { create(:org, :funder, name: "The funder org") }
let(:org) { create(:org, :organisation, name: "The User's org") }
let(:user) { create(:user, org: org) }
let(:funder_template) do
create(:template, :default, :publicly_visible, :published,
org: funder, title: "Funder Template")
end
before do
create_list(:phase, 1, template: funder_template).each do |phase|
create_list(:section, 2, phase: phase).each do |section|
create_list(:question, 2, section: section)
end
end
user.perms << create(:perm, :modify_templates)
user.perms << create(:perm, :add_organisations)
user.perms << create(:perm, :change_org_affiliation)
user.perms << create(:perm, :add_organisations)
end
scenario "Admin upgrades customizations from funder Template", :js do
# pending "Need S3 travis working to debug this test on Travis"
sign_in user
visit org_admin_templates_path
# Customise a Template that belongs to another funder Org
click_link("Customisable Templates")
click_button "Actions"
expect { click_link "Customise" }.to change { Template.count }.by(1)
customized_template = Template.last
# click_link "View all templates"
visit customisable_org_admin_templates_path
expect(page).to have_text('Unpublished')
# Publish our customisation
click_button "Actions"
click_link "Publish"
# Move to the other funder Org's Templates
fill_in(:superadmin_user_org_name, with: funder.name)
choose_suggestion(funder.name)
click_button("Change affiliation")
# Edit the original Template
click_link "#{funder.name} Templates"
expect(page).to have_text('Published')
click_button "Actions"
click_link "Edit"
click_link(funder_template.phases.first.title)
click_link "Add a new section"
within('#new_section_new_section') do
fill_in :new_section_section_title, with: "New section title"
tinymce_fill_in :new_section_section_description, with: "New section title"
expect { click_button("Save") }.to change { Section.count }.by(3)
end
new_funder_template = Template.last
visit organisational_org_admin_templates_path
click_button "Actions"
click_link "Publish changes"
expect(page).to have_text('Published')
# Go back to the original Org...
fill_in(:superadmin_user_org_name, with: org.name)
choose_suggestion(org.name)
click_button("Change affiliation")
click_link "Customisable Templates"
expect(page).to have_text('Original funder template has changed')
click_button "Actions"
click_link "Transfer customisation"
new_customized_template = Template.last
expect(page).to have_text("Customisations are published")
expect(funder_template.sections).to have(2).items
expect(customized_template.sections).to have(2).items
expect(new_customized_template.sections).to have(3).items
expect(new_funder_template.sections).to have(3).items
end
end