Commit e9b7ee0

mo khan <mo@mokhan.ca>
2015-01-10 16:55:14
add validation to accept terms and conditions.
1 parent 1c83c9d
Changed files (3)
app/controllers/registrations_controller.rb
@@ -17,6 +17,6 @@ class RegistrationsController < ApplicationController
   private
 
   def secure_params
-    params.require(:user).permit(:username, :email, :password)
+    params.require(:user).permit(:username, :email, :password, :terms_and_conditions)
   end
 end
app/models/user.rb
@@ -1,7 +1,8 @@
 class User < ActiveRecord::Base
-  attr_accessor :terms_and_conditions, :password
+  attr_accessor :password
   USERNAME_REGEX=/\A[-a-z0-9_.]*\z/i
 
   validates :username, presence: true, format: { with: USERNAME_REGEX }, uniqueness: true
   validates :email, presence: true, email: true, uniqueness: true
+  validates_acceptance_of :terms_and_conditions, accept: true
 end
spec/models/user_spec.rb
@@ -14,7 +14,6 @@ describe User do
 
   describe "validations" do
     context "username" do
-
       it 'is invalid when the username is missing' do
         user = User.new(username: nil)
         expect(user).to_not be_valid
@@ -55,6 +54,19 @@ describe User do
         expect(second_user.errors[:email]).to_not be_empty
       end
     end
+
+    describe "terms_and_conditions" do
+      it 'is invalid if terms and conditions is unchecked' do
+        user = User.new(terms_and_conditions: false)
+        expect(user).to_not be_valid
+        expect(user.errors[:terms_and_conditions]).to_not be_empty
+      end
+    end
+
+    it 'is valid when it is' do
+      user = User.new(username: 'coolio', email: 'notblank@example.com', password: 'legit', terms_and_conditions: true)
+      expect(user).to be_valid
+    end
   end
 
   describe "USERNAME_REGEX" do