require 'spec_helper' describe WrapIt::HTML, type: :wrapped do it_behaves_like 'Base module' describe '#html_data' do it 'sets data as {} by default' do expect(wrapper.html_data).to be_kind_of(Hash) end end describe '#html_attr' do it 'sets attr as {} by default' do expect(wrapper.html_attr).to be_kind_of(Hash) end end describe '#html_class' do it 'sets class HTMLClass by default' do expect(wrapper.html_class).to be_kind_of(WrapIt::HTMLClass) end end it 'has self.html_class and #html_class methods' do wrapper_class.class_eval { html_class :a, [:b, 'c'] } expect(wrapper.html_class).to match_array %w(a b c) sub_class = Class.new(wrapper_class) { html_class :a, [:d, 'e'] } expect(sub_class.new(template_wrapper).html_class) .to match_array %w(a d e b c) end describe '#html_class_prefix' do it 'returns empty string by default' do expect(wrapper.html_class_prefix).to eq '' end it 'returns value setted by class method' do wrapper_class.class_eval { html_class_prefix 'e-' } expect(wrapper.html_class_prefix).to eq 'e-' end it 'returns derived value' do wrapper_class.class_eval { html_class_prefix 'e-' } sub_class = Class.new(wrapper_class) expect(sub_class.new(template_wrapper).html_class_prefix).to eq 'e-' end end end describe WrapIt::HTMLClass do it 'has #<< with chaining' do expect(subject << :test).to match_array %w(test) subject.clear expect(subject << :a << 'b').to match_array %w(a b) subject.clear expect(subject << :a << [:b, :c]).to match_array %w(a b c) end it 'has #delete' do subject << :a << :b expect(subject.delete('a')).to match_array %w(b) end it 'has #include? method' do subject << [:a1, :b1] expect(subject.include?('a1')).to be_true expect(subject.include?(:a1, :b1)).to be_true expect(subject.include?(:a1, :b2)).to be_false expect(subject.include?(:a2)).to be_false expect(subject.include?(/\d+/)).to be_true expect(subject.include?(%w(a1 c1))).to be_true expect(subject.include? { |x| x[0] == 'a' }).to be_true end =begin describe 'documentation examples' do let(:element) { wrapper } it 'html_class=' do element.html_class = [:a, 'b', ['c', :d, 'a']] expect(element.html_class).to eq %w(a b c d) end it 'add_html_class' do element.html_class = 'a' element.add_html_class :b, :c, ['d', :c, :e, 'a'] expect(element.html_class).to include(*%w(a b c d e)) expect(element.html_class.size).to eq 5 end it 'remove_html_class' do element.add_html_class %w(a b c d e) element.remove_html_class :b, ['c', :e] expect(element.html_class).to eq %w(a d) end it 'html_class? with Symbol or String' do element.html_class = [:a, :b, :c] expect(element.html_class?(:a)).to be_true expect(element.html_class?(:d)).to be_false expect(element.html_class?(:a, 'b')).to be_true expect(element.html_class?(:a, :d)).to be_false end it 'html_class? with Regexp' do element.html_class = [:some, :test] expect(element.html_class?(/some/)).to be_true expect(element.html_class?(/some/, /bad/)).to be_false expect(element.html_class?(/some/, :test)).to be_true end it 'html_class? with Array' do element.html_class = [:a, :b, :c] expect(element.html_class?(%w(a d))).to be_true expect(element.html_class?(%w(e d))).to be_false end it 'html_class? with block' do element.html_class = [:a, :b, :c] expect(element.html_class? { |x| x == 'a' }).to be_true end end =end end