# encoding: utf-8 require_relative '../../test_helper' class FixtureLayoutsTest < ActiveSupport::TestCase def test_creation Cms::Layout.delete_all assert_difference 'Cms::Layout.count', 2 do ComfortableMexicanSofa::Fixture::Layout::Importer.new('sample-site', 'default-site').import! assert layout = Cms::Layout.where(:identifier => 'default').first assert_equal 'Default Fixture Layout', layout.label assert_equal "\n \n {{ cms:page:content }}\n \n", layout.content assert_equal 'body{color: red}', layout.css assert_equal '// default js', layout.js assert nested_layout = Cms::Layout.where(:identifier => 'nested').first assert_equal layout, nested_layout.parent assert_equal 'Default Fixture Nested Layout', nested_layout.label assert_equal "
{{ cms:page:left }}
\n
{{ cms:page:right }}
", nested_layout.content assert_equal 'div{float:left}', nested_layout.css assert_equal '// nested js', nested_layout.js end end def test_update layout = cms_layouts(:default) nested_layout = cms_layouts(:nested) child_layout = cms_layouts(:child) layout.update_column(:updated_at, 10.years.ago) nested_layout.update_column(:updated_at, 10.years.ago) child_layout.update_column(:updated_at, 10.years.ago) assert_difference 'Cms::Layout.count', -1 do ComfortableMexicanSofa::Fixture::Layout::Importer.new('sample-site', 'default-site').import! layout.reload assert_equal 'Default Fixture Layout', layout.label assert_equal "\n \n {{ cms:page:content }}\n \n", layout.content assert_equal 'body{color: red}', layout.css assert_equal '// default js', layout.js assert_equal 0, layout.position nested_layout.reload assert_equal layout, nested_layout.parent assert_equal 'Default Fixture Nested Layout', nested_layout.label assert_equal "
{{ cms:page:left }}
\n
{{ cms:page:right }}
", nested_layout.content assert_equal 'div{float:left}', nested_layout.css assert_equal '// nested js', nested_layout.js assert_equal 42, nested_layout.position assert_nil Cms::Layout.where(:identifier => 'child').first end end def test_update_ignore layout = cms_layouts(:default) layout_path = File.join(ComfortableMexicanSofa.config.fixtures_path, 'sample-site', 'layouts', 'default') attr_file_path = File.join(layout_path, 'attributes.yml') content_file_path = File.join(layout_path, 'content.html') css_file_path = File.join(layout_path, 'stylesheet.css') js_file_path = File.join(layout_path, 'javascript.js') assert layout.updated_at >= File.mtime(attr_file_path) assert layout.updated_at >= File.mtime(content_file_path) assert layout.updated_at >= File.mtime(css_file_path) assert layout.updated_at >= File.mtime(js_file_path) ComfortableMexicanSofa::Fixture::Layout::Importer.new('sample-site', 'default-site').import! layout.reload assert_equal 'default', layout.identifier assert_equal 'Default Layout', layout.label assert_equal "{{cms:field:default_field_text:text}}\nlayout_content_a\n{{cms:page:default_page_text:text}}\nlayout_content_b\n{{cms:snippet:default}}\nlayout_content_c", layout.content assert_equal 'default_css', layout.css assert_equal 'default_js', layout.js end def test_update_force layout = cms_layouts(:default) ComfortableMexicanSofa::Fixture::Layout::Importer.new('sample-site', 'default-site').import! layout.reload assert_equal 'Default Layout', layout.label ComfortableMexicanSofa::Fixture::Layout::Importer.new('sample-site', 'default-site', :forced).import! layout.reload assert_equal 'Default Fixture Layout', layout.label end def test_export host_path = File.join(ComfortableMexicanSofa.config.fixtures_path, 'test-site') layout_1_attr_path = File.join(host_path, 'layouts/nested/attributes.yml') layout_1_content_path = File.join(host_path, 'layouts/nested/content.html') layout_1_css_path = File.join(host_path, 'layouts/nested/stylesheet.css') layout_1_js_path = File.join(host_path, 'layouts/nested/javascript.js') layout_2_attr_path = File.join(host_path, 'layouts/nested/child/attributes.yml') layout_2_content_path = File.join(host_path, 'layouts/nested/child/content.html') layout_2_css_path = File.join(host_path, 'layouts/nested/child/stylesheet.css') layout_2_js_path = File.join(host_path, 'layouts/nested/child/javascript.js') ComfortableMexicanSofa::Fixture::Layout::Exporter.new('default-site', 'test-site').export! assert File.exists?(layout_1_attr_path) assert File.exists?(layout_1_content_path) assert File.exists?(layout_1_css_path) assert File.exists?(layout_1_js_path) assert File.exists?(layout_2_attr_path) assert File.exists?(layout_2_content_path) assert File.exists?(layout_2_css_path) assert File.exists?(layout_2_js_path) assert_equal ({ 'label' => 'Nested Layout', 'app_layout' => nil, 'position' => 0 }), YAML.load_file(layout_1_attr_path) assert_equal cms_layouts(:nested).content, IO.read(layout_1_content_path) assert_equal cms_layouts(:nested).css, IO.read(layout_1_css_path) assert_equal cms_layouts(:nested).js, IO.read(layout_1_js_path) assert_equal ({ 'label' => 'Child Layout', 'app_layout' => nil, 'position' => 0 }), YAML.load_file(layout_2_attr_path) assert_equal cms_layouts(:child).content, IO.read(layout_2_content_path) assert_equal cms_layouts(:child).css, IO.read(layout_2_css_path) assert_equal cms_layouts(:child).js, IO.read(layout_2_js_path) FileUtils.rm_rf(host_path) end end