Advertisement
Guest User

Untitled

a guest
Apr 18th, 2014
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. describe Campaign do
  2. before :each do
  3. @campaign = Campaign.new
  4. end
  5.  
  6. it { should validate_presence_of :position }
  7. end
  8.  
  9. class Campaign < ActiveRecord::Base
  10. attr_accessible :position
  11.  
  12. validates :position, presence: true
  13.  
  14. default_scope order(:position)
  15.  
  16. before_validation :next_position
  17.  
  18. # sets the position to the next id (1 if none exist) before validation
  19. def next_position
  20. if self.position.blank?
  21. self.position = Campaign.select("coalesce(max(position),0) + 1 as position").reorder(nil).first.position
  22. end
  23. end
  24. end
  25.  
  26. Failures:
  27.  
  28. 1) Campaign should require position to be set
  29. Failure/Error: it { should validate_presence_of :position }
  30. Expected errors to include "can't be blank" when position is set to nil, got errors: ["name can't be blank (nil)"]
  31. # ./spec/models/campaign_spec.rb:9:in `block (2 levels) in <top (required)>'
  32.  
  33. it 'populates position if blank before validations' do
  34. subject.position = nil
  35. subject.valid?
  36. subject.position.should_not be_nil
  37. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement