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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e842761ec28b372bbb63629058b3a67c0cdb822af9b809388be813b5671f6c6
4
- data.tar.gz: 68ce117e6e041a56184781a548bef376185dfad070bf4dd32492643872d550a8
3
+ metadata.gz: e4aa8aad7b8b1b71002560449a351a7bd23a83bf3d3becb4ed7f3df86258add3
4
+ data.tar.gz: 27a9d9b605a15c93f0f7c72c2f4a1c28f96752a50af0f741113881c8880f3529
5
5
  SHA512:
6
- metadata.gz: 869b71a5eddce1e8a6789ba1850e77cb8fdba899919615f041527839af2c98f9bb69cd94aa0488c15fca6e975b08d4f144d08e2f06b57b9391c73a16360d98de
7
- data.tar.gz: 9ab3472cccbec91a3925fd59265e39fff337fc528bca36d58b2bc1e600c0b4a072fd0d0e0f1db3e898d3ac0afeec9656bec12e456a4d5c9ae5e9658853b1a495
6
+ metadata.gz: f015ceddf27a116bf433006d9992c5f2622cd4f2e3587bdae9f142fce7cbabf778826494cc2b45f2793c1f18cacf054fd08c64024da0c4ad8a666a7f32451dd7
7
+ data.tar.gz: bf5a2c0775e30e310897e209a028b5f8746aafcc25b7b0b6af44af9fc32e7cbed5a1832b663dcde58ecc29adb7a23b2bde828080c320f5dc32bca07570ae5aad
@@ -1,28 +1,47 @@
1
1
  module RSpecUUID
2
2
  module Matchers
3
3
  class UUIDMatcher
4
- def matches?(obj)
5
- return false unless obj.is_a?(String)
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
- obj.match? /^\h{8}-\h{4}-\h{4}-\h{4}-\h{12}$/
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
- "be a UUID"
27
+ @version ? "a UUID v#{@version}" : "a UUID"
13
28
  end
14
29
 
15
30
  def failure_message
16
- "expected a UUID"
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 a UUID"
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
@@ -1,3 +1,3 @@
1
1
  module RSpecUUID
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -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 Faker UUIDs" do
8
+ context "with generated UUIDs" do
9
9
  specify do
10
- 100.times { expect(Faker::Internet.uuid).to be_a_uuid }
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
- it "fails with a useful message" do
22
- expect {
23
- expect(nil).to be_a_uuid
24
- }.to fail_including("expected a UUID")
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
- it "fails with a useful negation message" do
28
- expect {
29
- expect(Faker::Internet.uuid).not_to be_a_uuid
30
- }.to fail_including("did not expect a UUID")
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.1.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: byebug
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: codecov
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: faker
42
+ name: codecov
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="