Guest User

Untitled

a guest
Apr 20th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. it "should validate the uniqueness of a column" do
  2. class User < Sequel::Model
  3. validations.clear
  4. validates do
  5. uniqueness_of :username
  6. end
  7. end
  8. User.dataset.extend(Module.new {
  9. def fetch_rows(sql)
  10. @db << sql
  11.  
  12. if sql == "SELECT * FROM users WHERE (username = 'willy') LIMIT 1" then
  13. yield({:id => 1, :username => "willy", :password => "test"})
  14. end
  15. end
  16. })
  17.  
  18. @user = User.new :username => "willy", :password => "anothertest"
  19. @user.should_not be_valid
  20. @user.errors.full_messages.should == ['username is already taken']
  21.  
  22. @user.username = "pinky"
  23. @user.should be_valid
  24. end
  25.  
  26.  
  27. # custom models validations
  28.  
  29. module Validation
  30. module ClassMethods
  31.  
  32. def validates_uniqueness_of(*atts) # field value uniqueness validation
  33. opts = {
  34. :message => 'is already taken',
  35. }.merge!(atts.extract_options!)
  36.  
  37. validates_each(*atts) do |o, a, v|
  38. o.errors[a] << opts[:message] unless v && !v.blank? && !o.class[a => v]
  39. end
  40. end
  41.  
  42. end
  43. end
Add Comment
Please, Sign In to add comment