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 +7 -0
- data/lib/referehencible.rb +8 -5
- data/lib/referehencible/version.rb +1 -1
- data/spec/lib/referehencible_spec.rb +19 -0
- metadata +14 -16
- data/spec/reference_number.rb +0 -36
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
|
data/lib/referehencible.rb
CHANGED
@@ -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 :
|
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 :
|
21
|
+
before_create :generate_guid
|
19
22
|
|
20
23
|
###
|
21
24
|
# ActiveRecord Overrides
|
22
25
|
#
|
23
|
-
def
|
26
|
+
def guid; generate_guid; end
|
24
27
|
end
|
25
28
|
end
|
26
29
|
|
27
30
|
private
|
28
|
-
def
|
29
|
-
read_attribute(:
|
31
|
+
def generate_guid
|
32
|
+
read_attribute(:guid) || write_attribute('guid', SecureRandom.hex(16))
|
30
33
|
end
|
31
34
|
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
|
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:
|
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
|
-
-
|
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:
|
48
|
+
rubygems_version: 2.2.2
|
51
49
|
signing_key:
|
52
|
-
specification_version:
|
50
|
+
specification_version: 4
|
53
51
|
summary: Enable unique reference numbers on all the things
|
54
52
|
test_files:
|
55
|
-
- spec/
|
53
|
+
- spec/lib/referehencible_spec.rb
|
56
54
|
has_rdoc:
|
data/spec/reference_number.rb
DELETED
@@ -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
|