require 'spec_helper' describe 'Locomotive::Steam::Entities::Page' do it 'builds an empty page' do build_page.should_not be_nil end describe '#index?' do it { build_page(fullpath: {en: 'index'}).should be_index } it { build_page(fullpath: {en: 'about'}).should_not be_index } it { build_page(fullpath: {en: 'products/index'}).should_not be_index } end describe '#index_or_404?' do it { build_page(fullpath: {en: 'index'}).should be_index_or_404 } it { build_page(fullpath: {en: 'about'}).should_not be_index_or_404 } it { build_page(fullpath: {en: 'products/index'}).should_not be_index_or_404 } it { build_page(fullpath: {en: 'products/404'}).should_not be_index_or_404 } it { build_page(fullpath: {en: '404'}).should be_index_or_404 } end describe '#depth' do it { build_page(fullpath: {en: 'index'}).depth.should eq 0 } it { build_page(fullpath: {en: '404'}).depth.should eq 0 } it { build_page(fullpath: {en: 'about'}).depth.should eq 1 } it { build_page(fullpath: {en: 'about/me'}).depth.should eq 2 } it { build_page(fullpath: {en: 'about/index'}).depth.should eq 2 } it { build_page(fullpath: {en: 'about/the/team'}).depth.should eq 3 } end describe '#fullpath=' do context 'when the page has no slug yet' do it 'also sets the slug' do build_page(fullpath: {en: 'this/is/the/page_full_path'}).slug[:en].should eq 'page_full_path' end end context 'when the slug is already set' do it 'keeps the original slug' do build_page(fullpath: {en: 'this/is/the/page_full_path'}, slug: {en: 'the_slug'}).slug[:en].should eq 'the_slug' end end end def build_page(attributes = {}) Locomotive::Steam::Entities::Page.new(attributes) end end