spec/spec_helpers/model.rb in protector-0.0.4 vs spec/spec_helpers/model.rb in protector-0.1.0
- old
+ new
@@ -1,8 +1,8 @@
shared_examples_for "a model" do
it "evaluates meta properly" do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do |subject, dummy|
subject.should == '!'
scope { limit(5) }
@@ -10,26 +10,20 @@
can :create
can :update
end
end
- fields = Hash[*%w(id string number text created_at updated_at).map{|x| [x, nil]}.flatten]
- dummy = @dummy.new.restrict!('!')
- meta = dummy.protector_meta
+ fields = Hash[*%w(id string number text dummy_id created_at updated_at).map{|x| [x, nil]}.flatten]
+ meta = dummy.new.restrict!('!').protector_meta
meta.access[:view].should == fields
meta.access[:create].should == fields
meta.access[:update].should == fields
end
describe "association" do
context "(has_many)" do
- around(:each) do |e|
- ActiveRecord::Base.logger = Logger.new(STDOUT)
- e.run
- ActiveRecord::Base.logger = nil
- end
it "loads" do
Dummy.first.restrict!('!').fluffies.length.should == 2
Dummy.first.restrict!('+').fluffies.length.should == 1
Dummy.first.restrict!('-').fluffies.empty?.should == true
end
@@ -47,307 +41,299 @@
end
end
describe "visibility" do
it "marks blocked" do
- @dummy.instance_eval do
- protect do; scope { none }; end
- end
-
- @dummy.first.restrict!('!').visible?.should == false
+ Dummy.first.restrict!('-').visible?.should == false
end
it "marks allowed" do
- @dummy.instance_eval do
- protect do; scope { limit(5) }; end
- end
-
- @dummy.first.restrict!('!').visible?.should == true
+ Dummy.first.restrict!('+').visible?.should == true
end
end
describe "readability" do
it "hides fields" do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do
can :view, :string
end
end
- dummy = @dummy.first.restrict!('!')
- dummy.number.should == nil
- dummy[:number].should == nil
- dummy.read_attribute(:number).should_not == nil
- dummy.string.should == 'zomgstring'
+ d = dummy.first.restrict!('!')
+ d.number.should == nil
+ d[:number].should == nil
+ d.read_attribute(:number).should_not == nil
+ d.string.should == 'zomgstring'
end
end
describe "creatability" do
context "with empty meta" do
before(:each) do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do; end
end
end
it "marks blocked" do
- dummy = @dummy.new(string: 'bam', number: 1)
- dummy.restrict!('!').creatable?.should == false
+ d = dummy.new(string: 'bam', number: 1)
+ d.restrict!('!').creatable?.should == false
end
it "invalidates" do
- dummy = @dummy.new(string: 'bam', number: 1).restrict!('!')
- dummy.should invalidate
+ d = dummy.new(string: 'bam', number: 1).restrict!('!')
+ d.should invalidate
end
end
context "by list of fields" do
before(:each) do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do
can :create, :string
end
end
end
it "marks blocked" do
- dummy = @dummy.new(string: 'bam', number: 1)
- dummy.restrict!('!').creatable?.should == false
+ d = dummy.new(string: 'bam', number: 1)
+ d.restrict!('!').creatable?.should == false
end
it "marks allowed" do
- dummy = @dummy.new(string: 'bam')
- dummy.restrict!('!').creatable?.should == true
+ d = dummy.new(string: 'bam')
+ d.restrict!('!').creatable?.should == true
end
it "invalidates" do
- dummy = @dummy.new(string: 'bam', number: 1).restrict!('!')
- dummy.should invalidate
+ d = dummy.new(string: 'bam', number: 1).restrict!('!')
+ d.should invalidate
end
it "validates" do
- dummy = @dummy.new(string: 'bam').restrict!('!')
- dummy.should validate
+ d = dummy.new(string: 'bam').restrict!('!')
+ d.should validate
end
end
context "by lambdas" do
before(:each) do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do
can :create, string: lambda {|x| x.try(:length) == 5 }
end
end
end
it "marks blocked" do
- dummy = @dummy.new(string: 'bam')
- dummy.restrict!('!').creatable?.should == false
+ d = dummy.new(string: 'bam')
+ d.restrict!('!').creatable?.should == false
end
it "marks allowed" do
- dummy = @dummy.new(string: '12345')
- dummy.restrict!('!').creatable?.should == true
+ d = dummy.new(string: '12345')
+ d.restrict!('!').creatable?.should == true
end
it "invalidates" do
- dummy = @dummy.new(string: 'bam').restrict!('!')
- dummy.should invalidate
+ d = dummy.new(string: 'bam').restrict!('!')
+ d.should invalidate
end
it "validates" do
- dummy = @dummy.new(string: '12345').restrict!('!')
- dummy.should validate
+ d = dummy.new(string: '12345').restrict!('!')
+ d.should validate
end
end
context "by ranges" do
before(:each) do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do
can :create, number: 0..2
end
end
end
it "marks blocked" do
- dummy = @dummy.new(number: 500)
- dummy.restrict!('!').creatable?.should == false
+ d = dummy.new(number: 500)
+ d.restrict!('!').creatable?.should == false
end
it "marks allowed" do
- dummy = @dummy.new(number: 2)
- dummy.restrict!('!').creatable?.should == true
+ d = dummy.new(number: 2)
+ d.restrict!('!').creatable?.should == true
end
it "invalidates" do
- dummy = @dummy.new(number: 500).restrict!('!')
- dummy.should invalidate
+ d = dummy.new(number: 500).restrict!('!')
+ d.should invalidate
end
it "validates" do
- dummy = @dummy.new(number: 2).restrict!('!')
- dummy.should validate
+ d = dummy.new(number: 2).restrict!('!')
+ d.should validate
end
end
end
describe "updatability" do
context "with empty meta" do
before(:each) do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do; end
end
end
it "marks blocked" do
- dummy = @dummy.first
- dummy.assign_attributes(string: 'bam', number: 1)
- dummy.restrict!('!').updatable?.should == false
+ d = dummy.first
+ d.assign_attributes(string: 'bam', number: 1)
+ d.restrict!('!').updatable?.should == false
end
it "invalidates" do
- dummy = @dummy.first.restrict!('!')
- dummy.assign_attributes(string: 'bam', number: 1)
- dummy.should invalidate
+ d = dummy.first.restrict!('!')
+ d.assign_attributes(string: 'bam', number: 1)
+ d.should invalidate
end
end
context "by list of fields" do
before(:each) do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do
can :update, :string
end
end
end
it "marks blocked" do
- dummy = @dummy.first
- dummy.assign_attributes(string: 'bam', number: 1)
- dummy.restrict!('!').updatable?.should == false
+ d = dummy.first
+ d.assign_attributes(string: 'bam', number: 1)
+ d.restrict!('!').updatable?.should == false
end
it "marks allowed" do
- dummy = @dummy.first
- dummy.assign_attributes(string: 'bam')
- dummy.restrict!('!').updatable?.should == true
+ d = dummy.first
+ d.assign_attributes(string: 'bam')
+ d.restrict!('!').updatable?.should == true
end
it "invalidates" do
- dummy = @dummy.first.restrict!('!')
- dummy.assign_attributes(string: 'bam', number: 1)
- dummy.should invalidate
+ d = dummy.first.restrict!('!')
+ d.assign_attributes(string: 'bam', number: 1)
+ d.should invalidate
end
it "validates" do
- dummy = @dummy.first.restrict!('!')
- dummy.assign_attributes(string: 'bam')
- dummy.should validate
+ d = dummy.first.restrict!('!')
+ d.assign_attributes(string: 'bam')
+ d.should validate
end
end
context "by lambdas" do
before(:each) do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do
can :update, string: lambda {|x| x.try(:length) == 5 }
end
end
end
it "marks blocked" do
- dummy = @dummy.first
- dummy.assign_attributes(string: 'bam')
- dummy.restrict!('!').updatable?.should == false
+ d = dummy.first
+ d.assign_attributes(string: 'bam')
+ d.restrict!('!').updatable?.should == false
end
it "marks allowed" do
- dummy = @dummy.first
- dummy.assign_attributes(string: '12345')
- dummy.restrict!('!').updatable?.should == true
+ d = dummy.first
+ d.assign_attributes(string: '12345')
+ d.restrict!('!').updatable?.should == true
end
it "invalidates" do
- dummy = @dummy.first.restrict!('!')
- dummy.assign_attributes(string: 'bam')
- dummy.should invalidate
+ d = dummy.first.restrict!('!')
+ d.assign_attributes(string: 'bam')
+ d.should invalidate
end
it "validates" do
- dummy = @dummy.first.restrict!('!')
- dummy.assign_attributes(string: '12345')
- dummy.should validate
+ d = dummy.first.restrict!('!')
+ d.assign_attributes(string: '12345')
+ d.should validate
end
end
context "by ranges" do
before(:each) do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do
can :update, number: 0..2
end
end
end
it "marks blocked" do
- dummy = @dummy.first
- dummy.assign_attributes(number: 500)
- dummy.restrict!('!').updatable?.should == false
+ d = dummy.first
+ d.assign_attributes(number: 500)
+ d.restrict!('!').updatable?.should == false
end
it "marks allowed" do
- dummy = @dummy.first
- dummy.assign_attributes(number: 2)
- dummy.restrict!('!').updatable?.should == true
+ d = dummy.first
+ d.assign_attributes(number: 2)
+ d.restrict!('!').updatable?.should == true
end
it "invalidates" do
- dummy = @dummy.first.restrict!('!')
- dummy.assign_attributes(number: 500)
- dummy.should invalidate
+ d = dummy.first.restrict!('!')
+ d.assign_attributes(number: 500)
+ d.should invalidate
end
it "validates" do
- dummy = @dummy.first.restrict!('!')
- dummy.assign_attributes(number: 2)
- dummy.should validate
+ d = dummy.first.restrict!('!')
+ d.assign_attributes(number: 2)
+ d.should validate
end
end
end
describe "destroyability" do
it "marks blocked" do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do; end
end
- @dummy.first.restrict!('!').destroyable?.should == false
+ dummy.first.restrict!('!').destroyable?.should == false
end
it "marks allowed" do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do; can :destroy; end
end
- @dummy.first.restrict!('!').destroyable?.should == true
+ dummy.first.restrict!('!').destroyable?.should == true
end
it "invalidates" do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do; end
end
- @dummy.first.restrict!('!').destroy.should == false
+ dummy.first.restrict!('!').destroy.should == false
end
it "validates" do
- @dummy.instance_eval do
+ dummy.instance_eval do
protect do; can :destroy; end
end
- dummy = @dummy.create!.restrict!('!')
- dummy.destroy.should == dummy
- dummy.destroyed?.should == true
+ d = dummy.create!.restrict!('!')
+ d.destroy.should == d
+ d.destroyed?.should == true
end
end
end
\ No newline at end of file