require 'test_helper' class PlanTest < ActiveSupport::TestCase def setup @plan = Plan.new.tap do |p| p.project = Project.new end end def settings(extras = {}) { margin: (@margin || { top: 10, bottom: 10, left: 10, right: 10 }), font_face: (@font_face || Settings::Dmptemplate::VALID_FONT_FACES.first), font_size: (@font_size || 11) }.merge(extras) end # settings test "no explicit settings should be Settings::Dmptemplate::DEFAULT_SETTINGS" do assert(!@plan.settings(:export).value?) assert_equal(Settings::Dmptemplate::DEFAULT_SETTINGS[:formatting], @plan.settings(:export).formatting) end test "no explicit settings with template settings should use template settings" do template = dmptemplates(:ahrc_template) template.settings(:export).update_attributes(formatting: settings) @plan.project.dmptemplate = template assert(!@plan.super_settings(:export).value?) assert(template.settings(:export).value?) assert_equal(settings, template.settings(:export).formatting) assert_equal(settings, @plan.settings(:export).formatting) end test "explicit settings with template settings should use plan settings" do template_settings = settings plan_settings = settings(font_size: 14) template = dmptemplates(:ahrc_template) template.settings(:export).update_attributes(formatting: template_settings) @plan.project.dmptemplate = template @plan.super_settings(:export).formatting = plan_settings @plan.save! @plan.reload assert(@plan.super_settings(:export).value?) assert(@plan.settings(:export).value?) assert(template.settings(:export).value?) assert_not_equal(plan_settings, template_settings) assert_equal(template_settings, template.settings(:export).formatting) assert_equal(plan_settings, @plan.settings(:export).formatting) end test "explicit settings should not affect other plans with same template" do template_settings = settings plan_settings = settings(font_size: 14) template = dmptemplates(:ahrc_template) template.settings(:export).update_attributes(formatting: template_settings) @plan.project.dmptemplate = template @plan.super_settings(:export).formatting = plan_settings @plan.save! @plan.reload other_plan = Plan.new.tap do |plan| plan.project = Project.new.tap {|p| p.dmptemplate = template } end other_plan.save! other_plan.reload assert(@plan.super_settings(:export).value?) assert(@plan.settings(:export).value?) assert(template.settings(:export).value?) assert_not_equal(plan_settings, other_plan.settings(:export).formatting) assert_equal(template_settings, other_plan.settings(:export).formatting) end end