Fix pending spec for DataMapper adapter.

This commit is contained in:
Emmanuel Gomez 2011-04-29 00:46:38 -07:00
parent 6d39b0ae07
commit d6851debd4
2 changed files with 8 additions and 12 deletions

View File

@ -15,19 +15,16 @@ module CanCan
end end
def database_records def database_records
scope = @model_class.all(:conditions => ["0=1"]) scope = @model_class.all(:conditions => ["0 = 1"])
conditions.each do |condition| cans, cannots = @rules.partition { |r| r.base_behavior }
scope += @model_class.all(:conditions => condition) # apply unions first, then differences. this mean cannot overrides can
end cans.each { |r| scope += @model_class.all(:conditions => r.conditions) }
cannots.each { |r| scope -= @model_class.all(:conditions => r.conditions) }
scope scope
end end
end # class DataMapper
def conditions end # module ModelAdapters
@rules.map(&:conditions) end # module CanCan
end
end
end
end
DataMapper::Model.class_eval do DataMapper::Model.class_eval do
include CanCan::ModelAdditions::ClassMethods include CanCan::ModelAdditions::ClassMethods

View File

@ -65,7 +65,6 @@ if ENV["MODEL_ADAPTER"] == "data_mapper"
end end
it "should fetch only the articles that are published and not secret" do it "should fetch only the articles that are published and not secret" do
pending "the `cannot` may require some custom SQL, maybe abstract out from Active Record adapter"
@ability.can :read, Article, :published => true @ability.can :read, Article, :published => true
@ability.cannot :read, Article, :secret => true @ability.cannot :read, Article, :secret => true
article1 = Article.create(:published => true, :secret => false) article1 = Article.create(:published => true, :secret => false)