Skip to content

Commit

Permalink
reformat code
Browse files Browse the repository at this point in the history
  • Loading branch information
Fivell committed Jul 15, 2015
1 parent 1cb2593 commit 266e3db
Show file tree
Hide file tree
Showing 16 changed files with 87 additions and 129 deletions.
2 changes: 2 additions & 0 deletions .hound.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
StringLiterals:
EnforcedStyle: single_quotes
2 changes: 1 addition & 1 deletion lib/credit_card_validations/detector.rb
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ def delete_brand(key)
#create rule for detecting brand
def add_rule(key, length, prefixes)
unless brands.has_key?(key)
raise CreditCardValidations::Error.new("brand #{key} is undefined, please use #add_brand method")
raise Error.new("brand #{key} is undefined, please use #add_brand method")
end
length, prefixes = Array(length), Array(prefixes)
brands[key][:rules] << {length: length, regexp: compile_regexp(prefixes), prefixes: prefixes}
Expand Down
2 changes: 1 addition & 1 deletion lib/credit_card_validations/error.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module CreditCardValidations
class Error < StandardError
end
end
end
8 changes: 3 additions & 5 deletions lib/credit_card_validations/factory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,11 @@ module CreditCardValidations
class Factory
class << self
def random(brand = nil)
if brand.nil?
brand = Detector.brands.keys.sample
else
raise CreditCardValidations::Error.new("Unsupported brand") if Detector.brands[brand].nil?
brand = Detector.brands.keys.sample if brand.nil?
if Detector.brands[brand].nil?
raise Error.new('Unsupported brand')
end
generate(Detector.brands[brand][:rules].sample)

end

def generate(rule)
Expand Down
14 changes: 6 additions & 8 deletions lib/credit_card_validations/plugins/diners_us.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
# :diners_us:
# :rules:
# - :length:
# - 16
# :prefixes:
# - '54'
# - '55'
CreditCardValidations.add_brand(:diners_us, {length: 16, prefixes: %w(54 55)}, {brand_name: 'Diners Club US'})
CreditCardValidations.add_brand(
:diners_us,
{ length: 16, prefixes: %w(54 55) },
brand_name: 'Diners Club US'
)

6 changes: 5 additions & 1 deletion lib/credit_card_validations/plugins/en_route.rb
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
CreditCardValidations.add_brand(:en_route, {length: 15, prefixes: %w(2014 2149)}, {skip_luhn: true})
CreditCardValidations.add_brand(
:en_route,
{ length: 15, prefixes: %w(2014 2149) },
skip_luhn: true
)
16 changes: 4 additions & 12 deletions lib/credit_card_validations/plugins/laser.rb
Original file line number Diff line number Diff line change
@@ -1,12 +1,4 @@
# :laser:
# :rules:
# - :length:
# - 16
# - 17
# - 18
# - 19
# :prefixes:
# - '6304'
# - '6706'
# - '6771'
CreditCardValidations.add_brand(:laser, {length: [16, 17, 18, 19], prefixes: %w(6304 6706 6771)})
CreditCardValidations.add_brand(
:laser,
length: [16, 17, 18, 19], prefixes: %w(6304 6706 6771)
)
2 changes: 1 addition & 1 deletion lib/credit_card_validations/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module CreditCardValidations
VERSION = "3.0.0"
VERSION = '3.0.0'
end
8 changes: 0 additions & 8 deletions lib/plugins/diners_us.rb

This file was deleted.

1 change: 0 additions & 1 deletion lib/plugins/en_route.rb

This file was deleted.

12 changes: 0 additions & 12 deletions lib/plugins/laser.rb

This file was deleted.

28 changes: 14 additions & 14 deletions spec/active_model_spec.rb
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
require_relative 'test_helper'

describe "ActiveModel Validator" do
describe 'ActiveModel Validator' do

let(:model) { CreditCard.new }

describe "Proc support" do
it "should be valid if brands from proc valid" do
describe 'Proc support' do
it 'should be valid if brands from proc valid' do
card = model.dup
card.card_type = "Master Card"
card.card_type = 'Master Card'
card.number6 = CreditCardValidations::Factory.random(:visa)
card.valid?.must_equal false
card.number6 = CreditCardValidations::Factory.random(:mastercard)
card.valid?.must_equal true
end
end

describe "Any Brand" do
it "should be valid for all prepared valid numbers" do
describe 'Any Brand' do
it 'should be valid for all prepared valid numbers' do
VALID_NUMBERS.each do |_, numbers|
numbers.each do |number|
card = model
Expand All @@ -28,8 +28,8 @@
end
end

describe "Except Amex and Maestro brand" do
it "should reject all other valid numbers" do
describe 'Except Amex and Maestro brand' do
it 'should reject all other valid numbers' do
VALID_NUMBERS.except(:amex, :maestro).each do |_, numbers|
card = model
card.number = numbers.first
Expand All @@ -38,7 +38,7 @@
end
end

it "should accept using except options" do
it 'should accept using except options' do
VALID_NUMBERS.except(:amex, :maestro).each do |_, numbers|
card = model
card.number3 = numbers.first
Expand All @@ -47,8 +47,8 @@
end
end

describe "Only Amex and Mestro brands" do
it "should accept amex and maestro brand if valid" do
describe 'Only Amex and Mestro brands' do
it 'should accept amex and maestro brand if valid' do
VALID_NUMBERS.slice(:amex, :maestro).each do |_, numbers|
card = model
card.number = numbers.first
Expand All @@ -58,12 +58,12 @@
end
end

describe "Custom error message" do
it "should allow custom message" do
describe 'Custom error message' do
it 'should allow custom message' do
card = model
card.number7 = 'wrong'
card.valid?.must_equal false
card.errors[:number7].must_equal ["Custom message"]
card.errors[:number7].must_equal ['Custom message']
end
end

Expand Down
65 changes: 33 additions & 32 deletions spec/credit_card_validations_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,36 @@
CreditCardValidations.reload!
end

describe "MMI" do
it "should detect issuer category" do
describe 'MMI' do
it 'should detect issuer category' do
d = detector(VALID_NUMBERS[:visa].first)
d.issuer_category.must_equal CreditCardValidations::Mmi::ISSUER_CATEGORIES[d.number[0]]
end
end

describe "Luhn#valid?" do
describe 'Luhn#valid?' do
let(:card_detector) {
detector(VALID_NUMBERS[:unionpay].first)
}
it "should call Luhn.valid? once" do
it 'should call Luhn.valid? once' do
CreditCardValidations::Luhn.expects(:valid?).with(card_detector.number).once
card_detector.valid?(:visa, :unionpay).must_equal true
end

it "should call Luhn.valid? twice" do
it 'should call Luhn.valid? twice' do
CreditCardValidations::Luhn.expects(:valid?).with(card_detector.number).twice
card_detector.valid?(:visa, :mastercard).must_equal false
end

it "should not call Luhn.valid?" do

it 'should not call Luhn.valid?' do
CreditCardValidations::Luhn.expects(:valid?).never
card_detector.valid?(:unionpay).must_equal true
end

end


it "should check luhn" do
it 'should check luhn' do
VALID_NUMBERS.each do |brand, card_numbers|
if has_luhn_check_rule?(brand)
card_numbers.each do |number|
Expand All @@ -47,7 +46,7 @@
end
end

it "should check valid brand" do
it 'should check valid brand' do
VALID_NUMBERS.each do |brand, card_numbers|
card_numbers.each do |card_number|
detector(card_number).send("#{brand}?").must_equal true
Expand All @@ -56,7 +55,7 @@
end
end

it "should check if card invalid" do
it 'should check if card invalid' do
INVALID_NUMBERS.each do |card_number|
detector(card_number).valid?.must_equal false
detector(card_number).brand.must_be_nil
Expand All @@ -66,14 +65,14 @@
end
end

it "should detect by full brand name" do
it 'should detect by full brand name' do
amex = CreditCardValidations::Factory.random(:amex)
detector(amex).valid?('American Express').must_equal true
visa = CreditCardValidations::Factory.random(:visa)
detector(visa).valid?('American Express').must_equal false
end

it "should support multiple brands for single check" do
it 'should support multiple brands for single check' do
VALID_NUMBERS.slice(:visa, :mastercard).each do |key, value|
detector(value.first).brand(:visa, :mastercard).must_equal key
end
Expand All @@ -83,7 +82,7 @@
end
end

it "should check if valid brand without arguments" do
it 'should check if valid brand without arguments' do
VALID_NUMBERS.each do |key, value|
value.each do |card_number|
detector(card_number).valid?(key).must_equal true
Expand All @@ -92,70 +91,72 @@
end
end

it "should not be valid? if wrong brand" do
it 'should not be valid? if wrong brand' do
detector(VALID_NUMBERS[:visa].first).valid?(:mastercard).must_equal false
detector(VALID_NUMBERS[:mastercard].first).valid?(:visa).must_equal false
end

it "should be valid? if right brand" do
it 'should be valid? if right brand' do
detector(VALID_NUMBERS[:visa].first).valid?(:mastercard, :visa).must_equal true
detector(VALID_NUMBERS[:visa].first).valid?(:mastercard, :amex).must_equal false
end


describe "adding/removing brand" do
describe 'adding/removing brand' do

describe "adding rules" do
describe 'adding rules' do

let(:voyager_number) { '869926275400212' }

it "should validate number as voyager" do
CreditCardValidations::Detector.add_brand(:voyager, { length: 15, prefixes: '86' })
it 'should validate number as voyager' do
CreditCardValidations::Detector.add_brand(:voyager, length: 15, prefixes: '86')
detector(voyager_number).valid?(:voyager).must_equal true
detector(voyager_number).voyager?.must_equal true
detector(voyager_number).brand.must_equal :voyager
end

describe "Add voyager rule" do
describe 'Add voyager rule' do
before do
CreditCardValidations::Detector.add_brand(:voyager, { length: 15, prefixes: '86' })
CreditCardValidations::Detector.add_brand(:voyager, length: 15, prefixes: '86')
end

it "should validate number as voyager" do
it 'should validate number as voyager' do
detector(voyager_number).valid?(:voyager).must_equal true
detector(voyager_number).voyager?.must_equal true
detector(voyager_number).brand.must_equal :voyager
end

describe "Remove voyager rule" do
describe 'Remove voyager rule' do
before do
CreditCardValidations::Detector.delete_brand(:voyager)
end

it "should not validate number as voyager" do
it 'should not validate number as voyager' do
detector(voyager_number).respond_to?(:voyager?).must_equal false
detector(voyager_number).brand.must_be_nil
end
end
end
end

describe "plugins" do

describe 'plugins' do
[:diners_us, :en_route, :laser].each do |brand|
it "should support #{brand}" do
-> { CreditCardValidations::Factory.random(brand) }.must_raise(CreditCardValidations::Error)
detector('somenumber').respond_to?("#{brand}?").must_equal false
-> { CreditCardValidations::Factory.random(brand) }.
must_raise(CreditCardValidations::Error)
custom_number = 'some_number'
detector(custom_number).respond_to?("#{brand}?").must_equal false
require "credit_card_validations/plugins/#{brand}"
number = CreditCardValidations::Factory.random(brand)
CreditCardValidations::Detector.new(number).valid?("#{brand}".to_sym).must_equal true
detector('somenumber').respond_to?("#{brand}?").must_equal true
detector(number).valid?("#{brand}".to_sym).must_equal true
detector(custom_number).respond_to?("#{brand}?").must_equal true
end
end
end

it "should raise Error if no brand added before" do
-> { CreditCardValidations::Detector::add_rule(:undefined_brand, 20, [20]) }.must_raise(CreditCardValidations::Error)
it 'should raise Error if no brand added before' do
-> { CreditCardValidations::Detector::add_rule(:undefined_brand, 20, [20]) }.
must_raise(CreditCardValidations::Error)
end
end

Expand Down
7 changes: 1 addition & 6 deletions spec/factory_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,17 @@

describe CreditCardValidations::Factory do

it "should generate random brand" do
it 'should generate random brand' do
number = CreditCardValidations::Factory.random
CreditCardValidations::Detector.new(number).valid?.must_equal true
end

CreditCardValidations::Detector.brands.keys.sort.each do |key|
describe "#{key}" do

it "should generate valid #{key}" do
number = CreditCardValidations::Factory.random(key)
CreditCardValidations::Detector.new(number).valid?(key).must_equal true
end

end
end



end
Loading

0 comments on commit 266e3db

Please sign in to comment.