ActiveLdap adapter for Fabrication.
‘ActiveLdap Fabrication’ is an ActiveLdap adapter for Fabrication. It means that you can use Fabrication as fixture replacement for ActiveLdap.
Here are install steps for Rails 3:
- Add activeldap-fabrication gem to your Gemfile.
- Change fixture_replacement to Fabrication in your config/application.rb.
- Add
require "active_ldap_fabrication"in your test/test_helper.rb or spec/spec_helper.rb.
Gemfile:
group :development, :test do # ... gem "activeldap-fabrication" # <- Add this. end
config/application.rb:
config.generators do |g| # For test-unit g.test_framework :test_unit, :fixture => true, :fixture_replacement => "fabrication" g.fixture_replacement :fabrication, :dir => "test/fabricators" # For RSpec # g.test_framework :rspec, :fixture => true, :fixture_replacement => "fabrication" # g.fixture_replacement :fabrication end
test/test_helper.rb:
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
require "active_ldap_fabrication" # <- Add this.
class ActiveSupport::TestCase
# Add more helper methods to be used by all tests here...
# LDAP: start
setup do
@dumped_data = nil
begin
@dumped_data = ActiveLdap::Base.dump(:scope => :sub)
rescue ActiveLdap::ConnectionError
end
ActiveLdap::Base.delete_all(nil, :scope => :sub)
populate_ldap
end
teardown do
if @dumped_data
ActiveLdap::Base.setup_connection
ActiveLdap::Base.delete_all(nil, :scope => :sub)
ActiveLdap::Base.load(@dumped_data)
end
end
def populate_ldap
populate_ldap_base
populate_ldap_ou
end
def populate_ldap_base
ActiveLdap::Populate.ensure_base
end
def populate_ldap_ou
end
# LDAP: end
end
We generate User model:
% script/rails generate model User --classes person
We populate ou=Users on setup in test/test_helper.rb:
# ...
class ActiveSupport::TestCase
# ...
def populate_ldap_ou
ActiveLdap::Populate.ensure_ou("Users") # <- Add this.
end
end
We define test data in test/fabricators/user_fabricator.rb:
Fabricator(:user) do end Fabricator(:bob, :from => :user) do cn "Bob" sn "Dyran" end
We add a test for User model in test/unit/user_test.rb:
require 'test_helper'
class UserTest < ActiveSupport::TestCase
test "cn" do
assert_equal("Bob", Fabricate(:bob).cn)
end
end
We run tests:
% bundle exec rake test
Loaded suite /var/lib/gems/1.9.1/gems/rake-0.9.2/lib/rake/rake_test_loader
Started
UserTest:
PASS cn (1.10s)
Finished in 1.101005 seconds.
1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
- Copyright © 2011 Kouhei Sutou <[email protected]>
This program is free software; you can redistribute it and/or modify it. It is dual licensed under Ruby’s license and under the terms of the Lesser GNU General Public License as published by the Free Software Foundation; either version 2.1, or (at your option) any later version.
Please see the file COPYING for the terms of the licence.
- …