Some ruby code written to manage an ldap directory.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

146 lines
3.4 KiB

$:.unshift File.join(File.dirname(__FILE__), "..", "app")
require 'test/unit'
require 'mocha'
require 'ds_admin'
class ModelStub
include DsAdmin::Model
attr_accessor :data
def initialize(args = {})
return if args.empty?
super(args)
@data = args[:data]
end
end
class ModelTest < Test::Unit::TestCase
# def setup
# end
# def teardown
# end
def test_initialize
model = ModelStub.new
assert_instance_of(ModelStub, model)
assert_kind_of(DsAdmin::Model, model)
model = ModelStub.new({:data => 'data'})
assert_instance_of(ModelStub, model)
assert_kind_of(DsAdmin::Model, model)
assert_equal('data', model.data)
assert_nil(model.id)
end
def test_config_key
assert_equal(:ModelStub, ModelStub.new.config_key)
end
def test_to_h
model_hash = ModelStub.new({:data => 'data'}).to_h
assert_instance_of(Hash, model_hash)
assert_equal('data', model_hash[:data])
end
def test_all_and_each
model = ModelStub.new
storage_config_mock = mock(:model= => model)
storage_mock = mock(:config => storage_config_mock)
storage_mock.extend(Enumerable).
expects(:each).multiple_yields(
[{:id => 1, :data => 'data1'}],
[{:id => 2, :data => 'data2'}])
DsAdmin::Model.storage = storage_mock
all = model.all
assert_nil(model.id)
assert_nil(model.data)
assert_instance_of(Array, all)
assert_instance_of(ModelStub, all[0])
assert_instance_of(ModelStub, all[1])
assert_equal(1, all[0].id)
assert_equal('data1', all[0].data)
assert_equal(2, all[1].id)
assert_equal('data2', all[1].data)
found = Array.new
ids = Array.new
all.each do |a|
assert_instance_of(ModelStub, a)
found << a.data
ids << a.id
end
assert_equal([1, 2], ids)
assert_equal(['data1', 'data2'], found)
end
def test_load
model = ModelStub.new
storage_config_mock = mock
storage_config_mock.expects(:model=).twice.returns(model)
storage_mock = mock().extend(Enumerable)
storage_mock.expects(:config).twice.returns(storage_config_mock)
storage_mock.expects(:each).twice.multiple_yields(
[{:id => 1, :data => 'data1'}],
[{:id => 2, :data => 'data2'}])
DsAdmin::Model.storage = storage_mock
loaded = model.load(2)
assert_instance_of(ModelStub, model)
assert_instance_of(ModelStub, loaded)
assert_not_equal(model, loaded)
assert_nil(model.data)
assert_equal('data2', loaded.data)
assert_raise RuntimeError do
loaded = model.load(3)
end
end
def test_load!
model = ModelStub.new
storage_config_mock = mock
storage_config_mock.expects(:model=).twice.returns(model)
storage_mock = mock().extend(Enumerable)
storage_mock.expects(:config).twice.returns(storage_config_mock)
storage_mock.expects(:each).twice.multiple_yields(
[{:id => 1, :data => 'data1'}],
[{:id => 2, :data => 'data2'}])
DsAdmin::Model.storage = storage_mock
model.load!(1)
assert_instance_of(ModelStub, model)
assert_equal('data1', model.data)
assert_raise RuntimeError do
model.load!(3)
end
end
def test_save_stores_new_id
model = ModelStub.new({:data => 'data'})
storage_mock = mock()
storage_mock.expects(:write).returns(3)
DsAdmin::Model.storage = storage_mock
model.save
assert_equal(3, model.id)
end
end