Guest User

Untitled

a guest
May 2nd, 2018
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. ## Object Daddy fails
  2. require 'spec/factory'
  3.  
  4. describe UsersController do
  5. it 'allows signup' do
  6. lambda do
  7. create_user
  8. response.should be_redirect
  9. end.should change(User, :count).by(1)
  10. end
  11.  
  12. def create_user(options = {})
  13. user = User.generate
  14. post :create, :user => {
  15. :login => user.login,
  16. :email => user.email,
  17. :password => user.password,
  18. :password_confirmation => user.password_confirmation
  19. }.merge(options)
  20. return user
  21. end
  22. end
  23.  
  24. ## Factory builder passes
  25. require 'spec/factory'
  26.  
  27. describe UsersController do
  28. it 'allows signup' do
  29. lambda do
  30. create_user
  31. response.should be_redirect
  32. end.should change(User, :count).by(1)
  33. end
  34.  
  35. def create_user(options = {})
  36. user = User.build_valid
  37. post :create, :user => {
  38. :login => user.login,
  39. :email => user.email,
  40. :password => user.password,
  41. :password_confirmation => user.password_confirmation
  42. }.merge(options)
  43. return user
  44. end
  45. end
  46.  
  47. ## Here's the user exemplar
  48. class User
  49. generator_for :login, :start => 'Login000' do |prev|
  50. prev.succ
  51. end
  52.  
  53. generator_for :name, :start => 'Name 000' do |prev|
  54. name, id = prev.split(/ /)
  55. "#{name} #{id.succ}"
  56. end
  57. generator_for :email, :start => 'email000@domain.com' do |prev|
  58. user, domain = prev.split(/@/)
  59. "#{user.succ}@#{domain}"
  60. end
  61. generator_for :password, :start => 'password000' do |prev|
  62. prev.succ
  63. end
  64. generator_for :password_confirmation, :start => 'password000' do |prev|
  65. prev.succ
  66. end
  67. generator_for :created_at, 5.days.ago
  68. generator_for :salt, '7e3041ebc2fc05a40c60028e2c4901a81035d3cd'
  69. end
  70.  
  71. ## Here's the factory builder
  72. module Factory
  73.  
  74. def self.included(base)
  75. base.extend(self)
  76. end
  77.  
  78. def build_valid(params = {})
  79. unless self.respond_to?("builder_#{self.name.underscore}")
  80. raise "There are no default params for #{self.name}"
  81. end
  82. new(self.send("builder_#{self.name.underscore}").merge(params))
  83. end
  84.  
  85. def build_valid!(params = {})
  86. obj = build(params)
  87. obj.save!
  88. obj
  89. end
  90.  
  91. def builder_user
  92. random = Time.now.to_i
  93. {
  94. :login => "Login#{random}",
  95. :email => "#{random}@email.com",
  96. :name => "Name #{random}",
  97. :password => "#{random}",
  98. :password_confirmation => "#{random}"
  99. }
  100. end
  101.  
  102. end
  103.  
  104. ActiveRecord::Base.class_eval do
  105. include Factory
  106. end
Add Comment
Please, Sign In to add comment