# frozen_string_literal: true require 'spec_helper' RSpec.describe 'Array attributes rendering', type: :render do describe 'class' do it 'renders array class' do with_each_attribute_type(:class, '"c1"', klass: 'c2') do |str| expect(render_string(str)).to eq("\n") end with_each_attribute_type(:class, '["c1", "c3", :c2]', klass: 'c2') do |str| expect(render_string(str)).to eq("\n") end end it 'merges classes' do expect(render_string(<hello\n") - h1 = {class: 'c1', id: ['id1', 'id3']} - h2 = {class: [{}, 'c2'], id: 'id2'} %span#main.content{h1, h2} hello HAML end it 'remove duplicated classes' do with_each_attribute_type(:class, ':foo', klass: 'foo') do |str| expect(render_string(str)).to eq("\n") end with_each_attribute_type(:class, '"foo bar"', klass: 'foo') do |str| expect(render_string(str)).to eq("\n") end with_each_attribute_type(:class, '%w[foo bar]', klass: 'foo') do |str| expect(render_string(str)).to eq("\n") end end it 'skips empty array class' do with_each_attribute_type(:class, '[]') do |str| expect(render_string(str)).to eq("\n") end end it 'skips falsey array elements in class' do with_each_attribute_type(:class, '[1, nil, false, true]') do |str| expect(render_string(str)).to eq("\n") end end it 'flattens array class' do with_each_attribute_type(:class, '[[1, [2]]]') do |str| expect(render_string(str)).to eq("\n") end end it 'merges static class' do with_each_attribute_type(:class, '"bar"', tag: 'div', klass: 'foo', text: 'baz') do |str| expect(render_string(str)).to eq("
baz
\n") end end end describe 'id' do it 'skips empty array id' do with_each_attribute_type(:id, '[]') do |str| expect(render_string(str)).to eq("\n") end end it 'skips falsey array elements in id' do with_each_attribute_type(:id, '[1, nil, false, true]') do |str| expect(render_string(str)).to eq("\n") end end it 'flattens array id' do with_each_attribute_type(:id, '[1, [2]]') do |str| expect(render_string(str)).to eq("\n") end end it 'merges static id' do with_each_attribute_type(:id, '"bar"', tag: 'div', id: 'foo', text: 'baz') do |str| expect(render_string(str)).to eq("
baz
\n") end end end end