Sha256: b072b31ec4e797efb48d4e8c28950ddda80f0aafc9e737979740495bcb466ac1

Contents?: true

Size: 1.61 KB

Versions: 7

Compression:

Stored size: 1.61 KB

Contents

require 'spec_helper'

describe AdminIt::Field, type: :context do
  subject { described_class.new(:name, object_class) }

  it 'has name reader' do
    expect(subject.name).to eq :name
  end

  it 'converts name to symbol' do
    expect(described_class.new('test', object_class).name).to eq :test
  end

  it 'has :unknown type by default' do
    expect(subject.type).to eq :unknown
  end

  it 'has DSL type setter' do
    subject.type :string
    expect(subject.type).to eq :string
  end

  it 'rejects reads of write-only fields' do
    f = described_class.new(:name, object_class, readable: false)
    expect { f.read(Object.new) }.to raise_error AdminIt::FieldReadError
  end

  it 'rejects writes to read-only fields' do
    f = described_class.new(:name, object_class, writable: false)
    expect { f.write(Object.new, 1) }.to raise_error AdminIt::FieldWriteError
  end

  it 'calls DSL defined reader for read value' do
    subject.read { |obj| 10 }
    expect(subject.read(Object.new)).to eq 10
  end

  it 'calls DSL defined writer for write value' do
    subject.write { |obj, value| obj[:test] = value }
    expect(subject.write({}, 10)).to eq test: 10
  end

  it 'doesn\'t implements value reading' do
    expect { subject.send(:read_value, Object.new) }
      .to raise_error NotImplementedError
  end

  it 'doesn\'t implements value writing' do
    expect { subject.send(:write_value, Object.new, 'test') }
      .to raise_error NotImplementedError
  end

  it 'has #hide' do
    subject.hide
    expect(subject.visible?).to be_false
  end

  it 'has #show' do
    subject.show
    expect(subject.visible?).to be_true
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
admin_it-1.0.7 spec/lib/field_spec.rb
admin_it-1.0.6 spec/lib/field_spec.rb
admin_it-1.0.5 spec/lib/field_spec.rb
admin_it-1.0.4 spec/lib/field_spec.rb
admin_it-1.0.3 spec/lib/field_spec.rb
admin_it-1.0.2 spec/lib/field_spec.rb
admin_it-1.0.1 spec/lib/field_spec.rb