spec/ssn_spec.rb in ssn-0.3.0 vs spec/ssn_spec.rb in ssn-1.0.0

- old
+ new

@@ -1,74 +1,131 @@ require 'spec_helper' -describe "Ssn" do +describe Ssn do + + let :user do + User.new :name => 'John Smith', + :raw_ssn => '123456789' + end + describe "having ActiveRecord extensions" do + it "should respond to has_ssn" do ActiveRecord::Base.respond_to?( :has_ssn ).should be_true end it "should respond to has_ssns" do ActiveRecord::Base.respond_to?( :has_ssns ).should be_true end + end describe "when a user provides a symbol to the has_ssn method" do - before :each do - @user = User.new :name => 'John Smith', :raw_ssn => '123456789' - end it "should respond to a getter method with the correct name" do - @user.respond_to?( :ssn ).should be_true + user.respond_to?( :ssn ).should be_true end it "should respond to a setter method with the correct name" do - @user.respond_to?( :ssn= ).should be_true + user.respond_to?( :ssn= ).should be_true end it "should add a length validation on the raw ssn field" do - @user.raw_ssn = '1234567890' - @user.save.should be_false + user.raw_ssn = '1234567890' + user.save.should be_false end it "should not allow any formatting in the raw ssn field" do - @user.raw_ssn = '1-3456789' - @user.save.should be_false + user.raw_ssn = '1-3456789' + user.save.should be_false end it "should not allow a mal-formed social security number" do - @user.ssn = '1-3456789' - @user.save.should be_false + user.ssn = '1-3456789' + user.save.should be_false end + end describe "in general" do - before :each do - @user = User.new :name => 'John Smith', :raw_ssn => '123456789' - end it "should return nil if the raw ssn is nil" do - @user.raw_ssn = nil - @user.save! - @user.ssn.should be_nil + user.raw_ssn = nil + user.save! + user.ssn.should be_nil end it "should return nil if the raw ssn is ''" do - @user.raw_ssn = '' - @user.save! - @user.ssn.should be_nil + user.raw_ssn = '' + user.save! + user.ssn.should be_nil end it "should return a formatted social security number" do - @user.ssn.should == '123-45-6789' + user.ssn.should == '123-45-6789' end it "should set ssn" do - @user.ssn = '234-56-7890' - @user.ssn.should == '234-56-7890' + user.ssn = '234-56-7890' + user.ssn.should == '234-56-7890' end it "should strip formatting from a social security number" do - @user.ssn = '234-56-7890' - @user.raw_ssn.should == '234567890' + user.ssn = '234-56-7890' + user.raw_ssn.should == '234567890' end + end + + context 'when the ssn is set to 000000000' do + + let :user do + User.new :name => 'John Smith', + :ssn => '000000000' + end + + it "should agree that the ssn is nil" do + user.ssn.should be_nil + end + + end + + context 'when the ssn is set to 000-00-0000' do + + let :user do + User.new :name => 'John Smith', + :ssn => '000-00-0000' + end + + it "should agree that the ssn is nil" do + user.ssn.should be_nil + end + + end + + context 'when the raw_ssn is set to 000000000' do + + let :user do + User.new :name => 'John Smith', + :raw_ssn => '000000000' + end + + it "should agree that the raw_ssn is nil" do + user.raw_ssn.should be_nil + end + + end + + context 'when the ssn is set to 000-00-0000' do + + let :user do + User.new :name => 'John Smith', + :raw_ssn => '000-00-0000' + end + + it "should agree that the raw_ssn is nil" do + user.raw_ssn.should be_nil + end + + end + end