referehencible 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f41f4169c955a8f550dacececb9b45ed228a8161
4
+ data.tar.gz: 6c3537205a3dfda2dc99d1299079752896438925
5
+ SHA512:
6
+ metadata.gz: 924c238fc58b033dd6a1124f85e64e1a20d46bbd38fbc55d32d16942ab49f68962fe32e2ee9b729b8b57b5c9004697693ae89db46e7343957411d4c3f68ea3c0
7
+ data.tar.gz: 94106a98120a1565f792913f6b730958bb03371840ff583a8dbc43cb826b0eee66947105845ad5375599afd351b79644ffcd0448f3c1728c9df0163ae2748a9d
@@ -1,4 +1,5 @@
1
1
  require 'referehencible/version'
2
+ require 'securerandom'
2
3
 
3
4
  module Referehencible
4
5
  def self.included(base)
@@ -6,26 +7,28 @@ module Referehencible
6
7
  ###
7
8
  # Validations
8
9
  #
9
- validates :reference_number,
10
+ validates :guid,
10
11
  presence: true,
11
12
  uniqueness: true,
13
+ format: {
14
+ with: /[a-f0-9]{32}/ },
12
15
  length: {
13
16
  is: 16 }
14
17
 
15
18
  ###
16
19
  # Hooks
17
20
  #
18
- before_create :generate_reference_number
21
+ before_create :generate_guid
19
22
 
20
23
  ###
21
24
  # ActiveRecord Overrides
22
25
  #
23
- def reference_number; generate_reference_number; end
26
+ def guid; generate_guid; end
24
27
  end
25
28
  end
26
29
 
27
30
  private
28
- def generate_reference_number
29
- read_attribute(:reference_number) || write_attribute('reference_number', SecureRandom.hex(8))
31
+ def generate_guid
32
+ read_attribute(:guid) || write_attribute('guid', SecureRandom.hex(16))
30
33
  end
31
34
  end
@@ -1,3 +1,3 @@
1
1
  module Referehencible
2
- VERSION = '0.0.1'
2
+ VERSION = '0.1.0'
3
3
  end
@@ -0,0 +1,19 @@
1
+ require 'rspectacular'
2
+ require 'referehencible'
3
+
4
+ class Referenced
5
+ include Referehencible
6
+ end
7
+
8
+ # describe Referehencible do
9
+ # it { expect(subject).to allow_value('a' * 32).for :guid }
10
+ # it { expect(subject).not_to allow_value('a' * 33).for :guid }
11
+ # it { expect(subject).not_to allow_value('y' * 32).for :guid }
12
+ #
13
+ # it 'cannot create two tokenables with the same guid' do
14
+ # referenced = Referenced.new
15
+ # referenced guid: '3dd76acc3d4a2f2e33b5316500b8a484')
16
+ #
17
+ # expect(subject).to validate_uniqueness_of(:guid)
18
+ # end
19
+ # end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: referehencible
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - jfelchner
@@ -10,7 +9,7 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-01-11 00:00:00.000000000 Z
12
+ date: 2014-03-19 00:00:00.000000000 Z
14
13
  dependencies: []
15
14
  description: ''
16
15
  email: support@chirrpy.com
@@ -20,37 +19,36 @@ extra_rdoc_files:
20
19
  - README.md
21
20
  - LICENSE
22
21
  files:
23
- - lib/referehencible/version.rb
24
- - lib/referehencible.rb
25
- - Rakefile
26
- - README.md
27
22
  - LICENSE
28
- - spec/reference_number.rb
23
+ - README.md
24
+ - Rakefile
25
+ - lib/referehencible.rb
26
+ - lib/referehencible/version.rb
27
+ - spec/lib/referehencible_spec.rb
29
28
  homepage: https://github.com/chirrpy/referehencible
30
29
  licenses: []
30
+ metadata: {}
31
31
  post_install_message:
32
32
  rdoc_options:
33
- - --charset = UTF-8
33
+ - "--charset = UTF-8"
34
34
  require_paths:
35
35
  - lib
36
36
  required_ruby_version: !ruby/object:Gem::Requirement
37
- none: false
38
37
  requirements:
39
- - - ! '>='
38
+ - - ">="
40
39
  - !ruby/object:Gem::Version
41
40
  version: '0'
42
41
  required_rubygems_version: !ruby/object:Gem::Requirement
43
- none: false
44
42
  requirements:
45
- - - ! '>='
43
+ - - ">="
46
44
  - !ruby/object:Gem::Version
47
45
  version: '0'
48
46
  requirements: []
49
47
  rubyforge_project: referehencible
50
- rubygems_version: 1.8.24
48
+ rubygems_version: 2.2.2
51
49
  signing_key:
52
- specification_version: 3
50
+ specification_version: 4
53
51
  summary: Enable unique reference numbers on all the things
54
52
  test_files:
55
- - spec/reference_number.rb
53
+ - spec/lib/referehencible_spec.rb
56
54
  has_rdoc:
@@ -1,36 +0,0 @@
1
- shared_examples 'something with a reference number' do
2
- describe '#reference_number' do
3
- it { should have_valid(:reference_number).when ('*' * 16) }
4
- it { should_not have_valid(:reference_number).when ('*' * 15), ('*' * 17), '' }
5
-
6
- it 'should be unique' do
7
- send("create_#{subject.class.name.underscore}".to_sym)
8
-
9
- should validate_uniqueness_of(:reference_number)
10
- end
11
- end
12
-
13
- it 'does not have a reference number until it is accessed' do
14
- order = build_processing_order
15
- order.send(:read_attribute, :reference_number).should be_nil
16
- order.reference_number.should match Chirrpy::FORMATS[:order_reference_number]
17
- end
18
-
19
- it 'generates a reference number on create' do
20
- order = build_processing_order
21
- order.send(:read_attribute, :reference_number).should be_nil
22
- order.event.save!
23
- order.occurrence.schedulee_id = order.event.id
24
- recursively_save order.tickets.first
25
- order.reference_number.should match Chirrpy::FORMATS[:order_reference_number]
26
- end
27
-
28
- it 'does not overwrite a reference number that already exists' do
29
- order = build_processing_order
30
- reference_number_before_save = order.reference_number
31
- order.event.save!
32
- order.occurrence.schedulee_id = order.event.id
33
- recursively_save order.tickets.first
34
- order.reference_number.should eql reference_number_before_save
35
- end
36
- end