require 'test_helper' module Workarea class Content class BlockTypeTest < TestCase def test_config block_type = BlockType.new('Foo') block_type.instance_eval do width 960 height 470 end assert_equal({ width: 960, height: 470 }, block_type.config) end def test_defaults block_type = BlockType.new('Foo') block_type.instance_eval do field :foo, :string, default: 'foo' field :bar, :string, default: 'bar' end assert_equal({ foo: 'foo', bar: 'bar' }, block_type.defaults) end def test_field block_type = BlockType.new('Foo') block_type.instance_eval do field :foo, :string, default: 'foo' end assert(block_type.fieldsets.first.instance_of?(Fieldset)) assert_equal('Settings', block_type.fieldsets.first.name) end def test_series block_type = BlockType.new('Foo') block_type.instance_eval do field :foo, :string, default: 'foo' series 3 do field :bar, :string, default: 'bar' field :baz, :string, default: 'bar' end end assert_equal(3, block_type.series.length) assert(block_type.series.first.instance_of?(Fieldset)) assert('1st', block_type.series.first.name) end def test_fieldset block_type = BlockType.new('Foo') block_type.instance_eval do fieldset 'Foo Fields' do field :foo, :string, default: 'foo' end fieldset 'Bar Fields', replaces: 'Foo Fields' do field :bar, :string, default: 'foo' field :baz, :string, default: 'bar' end end assert_equal(1, block_type.fieldsets.count) fieldset = block_type.fieldsets.first field_names = fieldset.fields.map(&:name) refute_includes(field_names, :foo) assert_includes(field_names, :bar) assert_includes(field_names, :baz) assert_equal('Bar Fields', fieldset.name) end def test_remove_fieldset block_type = BlockType.new('Foo') block_type.instance_eval do fieldset 'Foo Fields' do field :foo, :string, default: 'foo' end fieldset 'Bar Fields' do field :bar, :string end remove_fieldset 'Foo Fields' end fieldsets = block_type.fieldsets.map(&:name) refute_includes(fieldsets, 'Foo Fields') assert_includes(fieldsets, 'Bar Fields') end end end end