# encoding: utf-8 require File.expand_path('../test_helper', File.dirname(__FILE__)) class FixturesTest < ActiveSupport::TestCase def test_import_layouts_creating Cms::Layout.delete_all assert_difference 'Cms::Layout.count', 2 do ComfortableMexicanSofa::Fixtures.import_layouts('test.host', 'example.com') assert layout = Cms::Layout.find_by_identifier('default') 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.find_by_identifier('nested') 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_import_layouts_updating_and_deleting layout = cms_layouts(:default) nested_layout = cms_layouts(:nested) child_layout = cms_layouts(:child) layout.update_attribute(:updated_at, 10.years.ago) nested_layout.update_attribute(:updated_at, 10.years.ago) child_layout.update_attribute(:updated_at, 10.years.ago) assert_difference 'Cms::Layout.count', -1 do ComfortableMexicanSofa::Fixtures.import_layouts('test.host', 'example.com') 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 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_nil Cms::Layout.find_by_identifier('child') end end def test_import_layouts_ignoring layout = cms_layouts(:default) layout_path = File.join(ComfortableMexicanSofa.config.fixtures_path, 'example.com', 'layouts', 'default') attr_file_path = File.join(layout_path, '_default.yml') content_file_path = File.join(layout_path, 'content.html') css_file_path = File.join(layout_path, 'css.css') js_file_path = File.join(layout_path, 'js.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::Fixtures.import_layouts('test.host', 'example.com') 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_import_pages_creating Cms::Page.delete_all layout = cms_layouts(:default) layout.update_attribute(:content, '{{cms:page:content}}') nested = cms_layouts(:nested) nested.update_attribute(:content, '{{cms:page:left}}
{{cms:page:right}}') assert_difference 'Cms::Page.count', 2 do ComfortableMexicanSofa::Fixtures.import_pages('test.host', 'example.com') assert page = Cms::Page.find_by_full_path('/') assert_equal layout, page.layout assert_equal 'index', page.slug assert_equal "Home Page Fixture Contént\ndefault_snippet_content", page.content assert page.is_published? assert child_page = Cms::Page.find_by_full_path('/child') assert_equal page, child_page.parent assert_equal nested, child_page.layout assert_equal 'child', child_page.slug assert_equal 'Child Page Left Fixture Content
Child Page Right Fixture Content', child_page.content end end def test_import_pages_updating_and_deleting page = cms_pages(:default) page.update_attribute(:updated_at, 10.years.ago) assert_equal 'Default Page', page.label child = cms_pages(:child) child.update_attribute(:slug, 'old') assert_no_difference 'Cms::Page.count' do ComfortableMexicanSofa::Fixtures.import_pages('test.host', 'example.com') page.reload assert_equal 'Home Fixture Page', page.label assert_nil Cms::Page.find_by_slug('old') end end def test_import_pages_ignoring page = cms_pages(:default) page_path = File.join(ComfortableMexicanSofa.config.fixtures_path, 'example.com', 'pages', 'index') attr_file_path = File.join(page_path, '_index.yml') content_file_path = File.join(page_path, 'content.html') assert page.updated_at >= File.mtime(attr_file_path) assert page.updated_at >= File.mtime(content_file_path) ComfortableMexicanSofa::Fixtures.import_pages('test.host', 'example.com') page.reload assert_equal nil, page.slug assert_equal 'Default Page', page.label assert_equal "\nlayout_content_a\ndefault_page_text_content_a\ndefault_snippet_content\ndefault_page_text_content_b\nlayout_content_b\ndefault_snippet_content\nlayout_content_c", page.content end def test_import_snippets_creating Cms::Snippet.delete_all assert_difference 'Cms::Snippet.count' do ComfortableMexicanSofa::Fixtures.import_snippets('test.host', 'example.com') assert snippet = Cms::Snippet.last assert_equal 'default', snippet.identifier assert_equal 'Default Fixture Snippet', snippet.label assert_equal 'Fixture Content for Default Snippet', snippet.content end end def test_import_snippets_updating snippet = cms_snippets(:default) snippet.update_attribute(:updated_at, 10.years.ago) assert_equal 'default', snippet.identifier assert_equal 'Default Snippet', snippet.label assert_equal 'default_snippet_content', snippet.content assert_no_difference 'Cms::Snippet.count' do ComfortableMexicanSofa::Fixtures.import_snippets('test.host', 'example.com') snippet.reload assert_equal 'default', snippet.identifier assert_equal 'Default Fixture Snippet', snippet.label assert_equal 'Fixture Content for Default Snippet', snippet.content end end def test_import_snippets_deleting snippet = cms_snippets(:default) snippet.update_attribute(:identifier, 'old') assert_no_difference 'Cms::Snippet.count' do ComfortableMexicanSofa::Fixtures.import_snippets('test.host', 'example.com') assert snippet = Cms::Snippet.last assert_equal 'default', snippet.identifier assert_equal 'Default Fixture Snippet', snippet.label assert_equal 'Fixture Content for Default Snippet', snippet.content assert_nil Cms::Snippet.find_by_identifier('old') end end def test_import_snippets_ignoring snippet = cms_snippets(:default) snippet_path = File.join(ComfortableMexicanSofa.config.fixtures_path, 'example.com', 'snippets', 'default') attr_file_path = File.join(snippet_path, '_default.yml') content_file_path = File.join(snippet_path, 'content.html') assert snippet.updated_at >= File.mtime(attr_file_path) assert snippet.updated_at >= File.mtime(content_file_path) ComfortableMexicanSofa::Fixtures.import_snippets('test.host', 'example.com') snippet.reload assert_equal 'default', snippet.identifier assert_equal 'Default Snippet', snippet.label assert_equal 'default_snippet_content', snippet.content end def test_import_all Cms::Page.destroy_all Cms::Layout.destroy_all Cms::Snippet.destroy_all assert_difference 'Cms::Layout.count', 2 do assert_difference 'Cms::Page.count', 2 do assert_difference 'Cms::Snippet.count', 1 do ComfortableMexicanSofa::Fixtures.import_all('test.host', 'example.com') end end end end def test_export_layouts host_path = File.join(ComfortableMexicanSofa.config.fixtures_path, 'test.test') layout_1_attr_path = File.join(host_path, 'layouts/nested/_nested.yml') layout_1_content_path = File.join(host_path, 'layouts/nested/content.html') layout_1_css_path = File.join(host_path, 'layouts/nested/css.css') layout_1_js_path = File.join(host_path, 'layouts/nested/js.js') layout_2_attr_path = File.join(host_path, 'layouts/nested/child/_child.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/css.css') layout_2_js_path = File.join(host_path, 'layouts/nested/child/js.js') ComfortableMexicanSofa::Fixtures.export_layouts('test.host', 'test.test') 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, 'parent' => nil }), 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, 'parent' => 'nested' }), 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 def test_export_pages host_path = File.join(ComfortableMexicanSofa.config.fixtures_path, 'test.test') page_1_attr_path = File.join(host_path, 'pages/index/_index.yml') page_1_block_a_path = File.join(host_path, 'pages/index/default_field_text.html') page_1_block_b_path = File.join(host_path, 'pages/index/default_page_text.html') page_2_attr_path = File.join(host_path, 'pages/index/child-page/_child-page.yml') ComfortableMexicanSofa::Fixtures.export_pages('test.host', 'test.test') assert_equal ({ 'label' => 'Default Page', 'layout' => 'default', 'parent' => nil, 'target_page' => nil, 'is_published' => true }), YAML.load_file(page_1_attr_path) assert_equal cms_blocks(:default_field_text).content, IO.read(page_1_block_a_path) assert_equal cms_blocks(:default_page_text).content, IO.read(page_1_block_b_path) assert_equal ({ 'label' => 'Child Page', 'layout' => 'default', 'parent' => 'index', 'target_page' => nil, 'is_published' => true }), YAML.load_file(page_2_attr_path) FileUtils.rm_rf(host_path) end def test_export_snippets host_path = File.join(ComfortableMexicanSofa.config.fixtures_path, 'test.test') attr_path = File.join(host_path, 'snippets/default/_default.yml') content_path = File.join(host_path, 'snippets/default/content.html') ComfortableMexicanSofa::Fixtures.export_snippets('test.host', 'test.test') assert File.exists?(attr_path) assert File.exists?(content_path) assert_equal ({'label' => 'Default Snippet'}), YAML.load_file(attr_path) assert_equal cms_snippets(:default).content, IO.read(content_path) FileUtils.rm_rf(host_path) end def test_export_all host_path = File.join(ComfortableMexicanSofa.config.fixtures_path, 'test.test') ComfortableMexicanSofa::Fixtures.export_all('test.host', 'test.test') FileUtils.rm_rf(host_path) end end