Skip to content

Commit

Permalink
Adding enslavement module
Browse files Browse the repository at this point in the history
  • Loading branch information
durran committed Feb 12, 2010
1 parent a8aada8 commit abfa248
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/mongoid.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
require "mongoid/contexts"
require "mongoid/criteria"
require "mongoid/cursor"
require "mongoid/enslavement"
require "mongoid/extensions"
require "mongoid/errors"
require "mongoid/factory"
Expand Down
38 changes: 38 additions & 0 deletions lib/mongoid/enslavement.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# encoding: utf-8
module Mongoid #:nodoc:
module Enslavement #:nodoc:
def self.included(base)
base.class_eval do
extend ClassMethods
class_inheritable_accessor :enslaved
self.enslaved = false

delegate :enslaved?, :to => "self.class"
end
end

module ClassMethods #:nodoc
# Set whether or not this documents read operations should delegate to
# the slave database by default.
#
# Example:
#
# class Person
# include Mongoid::Document
# enslave
# end
def enslave
self.enslaved = true
end

# Determines if the class is enslaved or not.
#
# Returns:
#
# True if enslaved, false if not.
def enslaved?
self.enslaved == true
end
end
end
end
63 changes: 63 additions & 0 deletions spec/unit/mongoid/enslavement_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
require "spec_helper"

describe Mongoid::Enslavement do

before do
@klass = Class.new do
include Mongoid::Enslavement
end
end

describe ".enslave" do

before do
@klass.enslave
end

it "sets the enslaved boolean on the class" do
@klass.enslaved.should be_true
end

end

describe ".enslaved" do

it "defaults to false" do
@klass.enslaved.should be_false
end
end

describe ".enslaved?" do

context "when the class is enslaved" do

before do
@klass.enslave
end

it "returns true" do
@klass.should be_enslaved
end
end

context "when the class is not enslaved" do

it "returns false" do
@klass.should_not be_enslaved
end
end

end

describe "#enslaved?" do

before do
@klass.enslave
@doc = @klass.new
end

it "returns the class enslaved? value" do
@doc.should be_enslaved
end
end
end

0 comments on commit abfa248

Please sign in to comment.