require 'spec_helper' describe WrapIt::Container do before do successor_class.class_eval do default_tag 'ul' child :item, tag: 'li' end end def list_erb(args = '') <<-EOL <%= helper(#{args}) do |s| %>
  • item 1
  • <% 2.upto 5 do |i| %> <%= s.item class: "c\#{i}" do |_| %>item <%= i %><% end %> <% end %>
  • item 6
  • <% end %> EOL end it 'renders as ul' do render '<%= helper %>' expect(rendered).to have_tag 'ul', count: 1 expect(rendered).to_not have_tag 'ul > *' end it 'renders child items' do render list_erb expect(rendered).to have_tag 'ul > li', count: 6 end it 'renders child items deffered' do render list_erb(':deffered_render') expect(rendered).to have_tag 'ul > li', count: 6 end it 'drops content child items with omit_content' do successor_class.class_eval { omit_content } render list_erb expect(rendered).to have_tag 'ul > li', count: 4 end it 'drops content childs with omit_content and deffered' do successor_class.class_eval { omit_content } render list_erb(':deffered_render') expect(rendered).to have_tag 'ul > li', count: 4 end describe 'child helper method safety' do it 'returns string with default options' do expect(successor.item).to be_kind_of String end it 'returns string with omit_content' do successor_class.class_eval { omit_content } expect(successor.item).to be_kind_of String end it 'returns string with deffered' do expect(successor(:deffered_render).item).to be_kind_of String end it 'returns string with deffered and omit' do successor_class.class_eval { omit_content } expect(successor(:deffered_render).item).to be_kind_of String end end it 'not collects children without deffered_render' do successor.item expect(successor.children.size).to eq 0 end it 'collects children with deffered_render' do successor(:deffered_render).item expect(successor.children.size).to eq 1 end it 'avoids changing deffered_render after first item added' do successor(:deffered_render).item successor.deffered_render = false expect(successor.deffered_render?).to be_true end it 'extracts one child from optioins' do successor_class.class_eval { child :item1, tag: 'li', option: true } render '<%= helper item1: {class: "listitem"} %>' expect(rendered).to have_tag 'ul > li.listitem', count: 1 end end