hoodoo 1.1.3 → 1.2.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.
@@ -73,7 +73,8 @@ RSpec.configure do | config |
73
73
 
74
74
  # Wake up Database Cleaner.
75
75
 
76
- DatabaseCleaner.strategy = :transaction # MUST NOT be changed
76
+ DATABASE_CLEANER_STRATEGY = :transaction # MUST NOT be changed
77
+ DatabaseCleaner.strategy = DATABASE_CLEANER_STRATEGY
77
78
 
78
79
  database_name = 'hoodoo_test'
79
80
 
@@ -1,20 +1,152 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Hoodoo::UUID do
4
+ before :all do
5
+ valid_v4_full_uuids = [
6
+ # 'xxxxxxxx-xxxx-4xxx-Yxxx-xxxxxxxxxxxx' Y = 8,9,A,B,a,b
7
+ '01234567-89AB-4CDE-8Fab-cdef00000000',
8
+ '01234567-89AB-4CDE-9Fab-cdef00000000',
9
+ '01234567-89AB-4CDE-AFab-cdef00000000',
10
+ '01234567-89AB-4CDE-BFab-cdef00000000',
11
+ '01234567-89AB-4CDE-aFab-cdef00000000',
12
+ '01234567-89AB-4CDE-bFab-cdef00000000'
13
+ ]
4
14
 
5
- describe '#generate' do
6
- it 'should generate a 32 character string' do
7
- uuid = Hoodoo::UUID.generate
15
+ @valid_uuids = valid_v4_full_uuids.map { | uuid | uuid.gsub( '-', '' ) }
16
+ end
17
+
18
+ context '#generate' do
19
+ it 'generates a 32 character string' do
20
+ uuid = Hoodoo::UUID.generate()
21
+
22
+ expect( uuid ).to be_a( String )
23
+ expect( uuid.length ).to eq( 32 )
24
+ end
25
+
26
+ it 'generates a 16 hex digit pair string' do
27
+ uuid = Hoodoo::UUID.generate()
28
+ expect( uuid =~ Hoodoo::UUID::MATCH_16_PAIRS_OF_HEX_DIGITS ).to_not be_nil
29
+ end
30
+
31
+ it 'does not generate the same UUID twice' do
32
+ 100.times do
33
+ uuid1 = Hoodoo::UUID.generate()
34
+ uuid2 = Hoodoo::UUID.generate()
35
+
36
+ expect( uuid1 ).not_to eq( uuid2 )
37
+ end
38
+ end
39
+ end
40
+
41
+ context '#valid?' do
42
+ it 'validates known-good UUIDs' do
43
+ @valid_uuids.each do | uuid |
44
+ expect( Hoodoo::UUID.valid?( uuid ) ).to eq( true )
45
+ end
46
+ end
47
+
48
+ it 'validates internally generated UUIDs' do
49
+ 100.times do
50
+ uuid = Hoodoo::UUID.generate()
51
+ expect( Hoodoo::UUID.valid?( uuid ) ).to eq( true )
52
+ end
53
+ end
54
+
55
+ it 'rejects non-string items' do
56
+ uuid = Hoodoo::UUID.generate()
57
+ expect( Hoodoo::UUID.valid?( uuid.to_sym ) ).to eq( false )
58
+ end
59
+
60
+ it 'rejects the wrong version check digit' do
61
+ value = @valid_uuids.first.dup
62
+ value[ 12 ] = '0'
63
+
64
+ expect( Hoodoo::UUID.valid?( value ) ).to eq( false )
65
+ end
66
+
67
+ it 'does not match the wrong other check digit' do
68
+ value = @valid_uuids.first.dup
69
+ value[ 16 ] = '0'
70
+
71
+ expect( Hoodoo::UUID.valid?( value ) ).to eq( false )
72
+ end
73
+
74
+ it 'does not match non-hex digits' do
75
+ value = @valid_uuids.first.dup
76
+ value[ 0 ] = 'Z'
77
+
78
+ expect( Hoodoo::UUID.valid?( value ) ).to eq( false )
79
+ end
8
80
 
9
- expect(uuid).to be_a(String)
10
- expect(uuid.length).to eq(32)
81
+ it 'does not match too-short strings' do
82
+ value = @valid_uuids.first[ 0..30 ]
83
+ expect( Hoodoo::UUID.valid?( value ) ).to eq( false )
11
84
  end
12
85
 
13
- it 'should not generate the same uuid twice' do
14
- uuid1 = Hoodoo::UUID.generate
15
- uuid2 = Hoodoo::UUID.generate
86
+ it 'does not match too-long strings' do
87
+ value = @valid_uuids.first + '0'
88
+ expect( Hoodoo::UUID.valid?( value ) ).to eq( false )
89
+ end
90
+ end
91
+
92
+ context 'MATCH_16_PAIRS_OF_HEX_DIGITS' do
93
+ it 'matches 32 hex digits in any case' do
94
+ value = '0123456789ABCDEFabcdef0123456789'
95
+ expect( value =~ Hoodoo::UUID::MATCH_16_PAIRS_OF_HEX_DIGITS ).to_not be_nil
96
+ end
97
+
98
+ it 'does not match non-hex digits' do
99
+ value = '0123456789ABCDEFabcZef0123456789'
100
+ expect( value =~ Hoodoo::UUID::MATCH_16_PAIRS_OF_HEX_DIGITS ).to be_nil
101
+ end
102
+
103
+ it 'does not match too-short strings' do
104
+ value = '0123456789ABCDEFabcdef012345678'
105
+ expect( value =~ Hoodoo::UUID::MATCH_16_PAIRS_OF_HEX_DIGITS ).to be_nil
106
+ end
107
+
108
+ it 'does not match too-long strings' do
109
+ value = '0123456789ABCDEFabcdef0123456789A'
110
+ expect( value =~ Hoodoo::UUID::MATCH_16_PAIRS_OF_HEX_DIGITS ).to be_nil
111
+ end
112
+ end
113
+
114
+ context 'MATCH_V4_UUID' do
115
+ it 'matches known-good UUIDs' do
116
+ @valid_uuids.each do | uuid |
117
+ expect( uuid =~ Hoodoo::UUID::MATCH_V4_UUID ).to_not be_nil
118
+ end
119
+ end
120
+
121
+ it 'does not match the wrong version check digit' do
122
+ value = @valid_uuids.first.dup
123
+ value[ 12 ] = '0'
124
+
125
+ expect( value =~ Hoodoo::UUID::MATCH_V4_UUID ).to be_nil
126
+ end
127
+
128
+ it 'does not match the wrong other check digit' do
129
+ value = @valid_uuids.first.dup
130
+ value[ 16 ] = '0'
131
+
132
+ expect( value =~ Hoodoo::UUID::MATCH_V4_UUID ).to be_nil
133
+ end
134
+
135
+ it 'does not match non-hex digits' do
136
+ value = @valid_uuids.first.dup
137
+ value[ 0 ] = 'Z'
138
+
139
+ expect( value =~ Hoodoo::UUID::MATCH_V4_UUID ).to be_nil
140
+ end
141
+
142
+ it 'does not match too-short strings' do
143
+ value = @valid_uuids.first[ 0..30 ]
144
+ expect( value =~ Hoodoo::UUID::MATCH_V4_UUID ).to be_nil
145
+ end
16
146
 
17
- expect(uuid1).not_to eq(uuid2)
147
+ it 'does not match too-long strings' do
148
+ value = @valid_uuids.first + '0'
149
+ expect( value =~ Hoodoo::UUID::MATCH_V4_UUID ).to be_nil
18
150
  end
19
151
  end
20
- end
152
+ end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hoodoo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Loyalty New Zealand
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-04 00:00:00.000000000 Z
11
+ date: 2016-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: uuidtools
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '2.1'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: '2.1'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: kgio
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -294,6 +280,7 @@ files:
294
280
  - lib/hoodoo/active/active_record/dated.rb
295
281
  - lib/hoodoo/active/active_record/error_mapping.rb
296
282
  - lib/hoodoo/active/active_record/finder.rb
283
+ - lib/hoodoo/active/active_record/manually_dated.rb
297
284
  - lib/hoodoo/active/active_record/search_helper.rb
298
285
  - lib/hoodoo/active/active_record/secure.rb
299
286
  - lib/hoodoo/active/active_record/support.rb
@@ -401,6 +388,7 @@ files:
401
388
  - spec/active/active_record/dated_spec.rb
402
389
  - spec/active/active_record/error_mapping_spec.rb
403
390
  - spec/active/active_record/finder_spec.rb
391
+ - spec/active/active_record/manually_dated_spec.rb
404
392
  - spec/active/active_record/search_helper_spec.rb
405
393
  - spec/active/active_record/secure_spec.rb
406
394
  - spec/active/active_record/support_spec.rb
@@ -529,6 +517,7 @@ test_files:
529
517
  - spec/active/active_record/dated_spec.rb
530
518
  - spec/active/active_record/error_mapping_spec.rb
531
519
  - spec/active/active_record/finder_spec.rb
520
+ - spec/active/active_record/manually_dated_spec.rb
532
521
  - spec/active/active_record/search_helper_spec.rb
533
522
  - spec/active/active_record/secure_spec.rb
534
523
  - spec/active/active_record/support_spec.rb