hoodoo 1.1.3 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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