rspec-uuid 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rspec-uuid/matchers.rb +27 -8
- data/lib/rspec-uuid/version.rb +1 -1
- data/spec/matchers_spec.rb +31 -11
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4aa8aad7b8b1b71002560449a351a7bd23a83bf3d3becb4ed7f3df86258add3
|
4
|
+
data.tar.gz: 27a9d9b605a15c93f0f7c72c2f4a1c28f96752a50af0f741113881c8880f3529
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f015ceddf27a116bf433006d9992c5f2622cd4f2e3587bdae9f142fce7cbabf778826494cc2b45f2793c1f18cacf054fd08c64024da0c4ad8a666a7f32451dd7
|
7
|
+
data.tar.gz: bf5a2c0775e30e310897e209a028b5f8746aafcc25b7b0b6af44af9fc32e7cbed5a1832b663dcde58ecc29adb7a23b2bde828080c320f5dc32bca07570ae5aad
|
data/lib/rspec-uuid/matchers.rb
CHANGED
@@ -1,28 +1,47 @@
|
|
1
1
|
module RSpecUUID
|
2
2
|
module Matchers
|
3
3
|
class UUIDMatcher
|
4
|
-
def
|
5
|
-
|
4
|
+
def initialize(version = nil)
|
5
|
+
@version = version
|
6
|
+
end
|
7
|
+
|
8
|
+
def matches?(actual)
|
9
|
+
return false unless actual.is_a?(String)
|
6
10
|
|
7
11
|
# https://www.uuidtools.com/what-is-uuid
|
8
|
-
|
12
|
+
match = actual.match /^\h{8}-\h{4}-(\h{4})-\h{4}-\h{12}$/
|
13
|
+
|
14
|
+
return false unless match
|
15
|
+
|
16
|
+
if @version
|
17
|
+
# 1st nibble of 3rd section
|
18
|
+
@actual_version = match[1].to_i(16) >> 12
|
19
|
+
|
20
|
+
@version == @actual_version
|
21
|
+
else
|
22
|
+
true
|
23
|
+
end
|
9
24
|
end
|
10
25
|
|
11
26
|
def description
|
12
|
-
"
|
27
|
+
@version ? "a UUID v#{@version}" : "a UUID"
|
13
28
|
end
|
14
29
|
|
15
30
|
def failure_message
|
16
|
-
|
31
|
+
if @actual_version
|
32
|
+
"expected #{description}, found a UUID v#{@actual_version}"
|
33
|
+
else
|
34
|
+
"expected #{description}"
|
35
|
+
end
|
17
36
|
end
|
18
37
|
|
19
38
|
def failure_message_when_negated
|
20
|
-
"did not expect
|
39
|
+
"did not expect #{description}"
|
21
40
|
end
|
22
41
|
end
|
23
42
|
|
24
|
-
def be_a_uuid
|
25
|
-
UUIDMatcher.new
|
43
|
+
def be_a_uuid(...)
|
44
|
+
UUIDMatcher.new(...)
|
26
45
|
end
|
27
46
|
end
|
28
47
|
end
|
data/lib/rspec-uuid/version.rb
CHANGED
data/spec/matchers_spec.rb
CHANGED
@@ -5,9 +5,9 @@ describe RSpecUUID::Matchers do
|
|
5
5
|
specify { expect(uuid).to be_a_uuid }
|
6
6
|
end
|
7
7
|
|
8
|
-
context "with
|
8
|
+
context "with generated UUIDs" do
|
9
9
|
specify do
|
10
|
-
100.times { expect(
|
10
|
+
100.times { expect(SecureRandom.uuid).to be_a_uuid }
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
@@ -16,17 +16,37 @@ describe RSpecUUID::Matchers do
|
|
16
16
|
specify { expect(:xyz).not_to be_a_uuid }
|
17
17
|
specify { expect(123).not_to be_a_uuid }
|
18
18
|
specify { expect(nil).not_to be_a_uuid }
|
19
|
-
end
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
it "fails with a useful message" do
|
21
|
+
expect {
|
22
|
+
expect(nil).to be_a_uuid
|
23
|
+
}.to fail_including("expected a UUID")
|
24
|
+
end
|
25
|
+
|
26
|
+
it "fails with a useful negation message" do
|
27
|
+
expect {
|
28
|
+
expect(SecureRandom.uuid).not_to be_a_uuid
|
29
|
+
}.to fail_including("did not expect a UUID")
|
30
|
+
end
|
25
31
|
end
|
26
32
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
33
|
+
context "with a UUID version" do
|
34
|
+
let(:namespace) { Digest::UUID::OID_NAMESPACE }
|
35
|
+
let(:uuid_v3) { Digest::UUID.uuid_v3(namespace, "123") }
|
36
|
+
let(:uuid_v4) { SecureRandom.uuid }
|
37
|
+
let(:uuid_v5) { Digest::UUID.uuid_v5(namespace, "123") }
|
38
|
+
|
39
|
+
specify { expect(uuid_v3).to be_a_uuid(3) }
|
40
|
+
specify { expect(uuid_v3).not_to be_a_uuid(4) }
|
41
|
+
specify { expect(uuid_v3).not_to be_a_uuid(5) }
|
42
|
+
|
43
|
+
specify { expect(uuid_v4).to be_a_uuid(4) }
|
44
|
+
specify { expect(uuid_v5).to be_a_uuid(5) }
|
45
|
+
|
46
|
+
it "fails with a useful message" do
|
47
|
+
expect {
|
48
|
+
expect(uuid_v3).to be_a_uuid(4)
|
49
|
+
}.to fail_including("UUID v4, found a UUID v3")
|
50
|
+
end
|
31
51
|
end
|
32
52
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-uuid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Pepper
|
@@ -11,7 +11,7 @@ cert_chain: []
|
|
11
11
|
date: 2022-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: byebug
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: codecov
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|