referehencible 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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