class Nanoc::Int::ItemRepTest < Nanoc::TestCase def test_compiled_content_with_only_last_available # Create rep item = Nanoc::Int::Item.new( 'blah blah blah', {}, '/' ) rep = Nanoc::Int::ItemRep.new(item, :donkeys) rep.snapshot_contents = { last: Nanoc::Int::TextualContent.new('last content'), } rep.expects(:compiled?).returns(true) # Check assert_equal 'last content', rep.compiled_content end def test_compiled_content_with_pre_and_last_available # Create rep item = Nanoc::Int::Item.new( 'blah blah blah', {}, '/' ) rep = Nanoc::Int::ItemRep.new(item, :donkeys) rep.snapshot_contents = { pre: Nanoc::Int::TextualContent.new('pre content'), last: Nanoc::Int::TextualContent.new('last content'), } rep.expects(:compiled?).returns(true) # Check assert_equal 'pre content', rep.compiled_content end def test_compiled_content_with_custom_snapshot # Create rep item = Nanoc::Int::Item.new( 'blah blah blah', {}, '/' ) rep = Nanoc::Int::ItemRep.new(item, :donkeys) rep.snapshot_contents = { pre: Nanoc::Int::TextualContent.new('pre content'), last: Nanoc::Int::TextualContent.new('last content'), } rep.expects(:compiled?).returns(true) # Check assert_equal 'last content', rep.compiled_content(snapshot: :last) end def test_compiled_content_with_invalid_snapshot # Create rep item = Nanoc::Int::Item.new( 'blah blah blah', {}, '/' ) rep = Nanoc::Int::ItemRep.new(item, :donkeys) rep.snapshot_contents = { pre: Nanoc::Int::TextualContent.new('pre content'), last: Nanoc::Int::TextualContent.new('last content'), } # Check assert_raises Nanoc::Int::Errors::NoSuchSnapshot do rep.compiled_content(snapshot: :klsjflkasdfl) end end def test_compiled_content_with_uncompiled_content # Create rep item = Nanoc::Int::Item.new( 'blah blah', {}, '/' ) rep = Nanoc::Int::ItemRep.new(item, :donkeys) rep.expects(:compiled?).returns(false) # Check assert_raises(FiberError) do rep.compiled_content end end def test_compiled_content_with_moving_pre_snapshot # Create rep item = Nanoc::Int::Item.new( 'blah blah', {}, '/' ) rep = Nanoc::Int::ItemRep.new(item, :donkeys) rep.expects(:compiled?).returns(false) rep.snapshot_contents = { pre: Nanoc::Int::TextualContent.new('pre!'), last: Nanoc::Int::TextualContent.new('last!'), } # Check assert_raises(FiberError) do rep.compiled_content(snapshot: :pre) end end def test_compiled_content_with_non_moving_pre_snapshot # Create rep item = Nanoc::Int::Item.new( 'blah blah', {}, '/' ) rep = Nanoc::Int::ItemRep.new(item, :donkeys) rep.expects(:compiled?).returns(false) rep.snapshot_defs = [ Nanoc::Int::SnapshotDef.new(:pre, true), ] rep.snapshot_contents = { pre: Nanoc::Int::TextualContent.new('pre!'), post: Nanoc::Int::TextualContent.new('post!'), last: Nanoc::Int::TextualContent.new('last!'), } # Check assert_equal 'pre!', rep.compiled_content(snapshot: :pre) end def test_compiled_content_with_multiple_pre_snapshots # Create rep item = Nanoc::Int::Item.new( 'blah blah', {}, '/' ) rep = Nanoc::Int::ItemRep.new(item, :donkeys) rep.expects(:compiled?).returns(false) rep.snapshot_defs = [ Nanoc::Int::SnapshotDef.new(:pre, false), Nanoc::Int::SnapshotDef.new(:pre, true), ] rep.snapshot_contents = { pre: Nanoc::Int::TextualContent.new('pre!'), post: Nanoc::Int::TextualContent.new('post!'), last: Nanoc::Int::TextualContent.new('last!'), } # Check assert_equal 'pre!', rep.compiled_content(snapshot: :pre) end def test_access_compiled_content_of_binary_item content = Nanoc::Int::BinaryContent.new(File.expand_path('content/somefile.dat')) item = Nanoc::Int::Item.new(content, {}, '/somefile/') item_rep = Nanoc::Int::ItemRep.new(item, :foo) item_rep.expects(:compiled?).returns(true) assert_raises(Nanoc::Int::Errors::CannotGetCompiledContentOfBinaryItem) do item_rep.compiled_content end end private def create_rep_for(item, name) Nanoc::Int::ItemRep.new(item, name) end end