3
3
require "test_helper"
4
4
5
5
class TestUUID < Minitest ::Test
6
+ # good enough for testing
7
+ UUID_REGEX = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i
8
+
9
+ GEM_NAME = "sqlite_extensions-uuid"
10
+
6
11
def test_to_path
7
- loaded_specs_stub = {
8
- "sqlite_extensions-uuid" => Struct . new ( :require_path ) . new ( "foo" )
9
- }
10
- Gem . stub ( :loaded_specs , loaded_specs_stub ) do
12
+ when_this_gem_is_loaded require_path : "foo" do
11
13
path = SqliteExtensions ::UUID . to_path
12
14
assert_kind_of String , path
13
15
@@ -16,26 +18,54 @@ def test_to_path
16
18
end
17
19
end
18
20
19
- def test_it_works
20
- require "sqlite3"
21
+ def test_using_load_extension
22
+ when_this_gem_is_loaded do
23
+ db = SQLite3 ::Database . new ":memory:"
24
+ db . enable_load_extension ( true )
25
+ db . load_extension ( SqliteExtensions ::UUID . to_path )
26
+
27
+ result = db . execute ( "select uuid()" )
28
+
29
+ assert_kind_of Array , result
30
+ assert_equal 1 , result . size
31
+ assert_kind_of Array , result . first
32
+ assert_equal 1 , result . first . size
33
+
34
+ uuid = result . first . first
35
+ assert_kind_of String , uuid
36
+
37
+ assert_match UUID_REGEX , uuid
38
+ end
39
+ end
40
+
41
+ def test_passing_extensions_to_new_database
42
+ when_this_gem_is_loaded do
43
+ db = SQLite3 ::Database . new (
44
+ ":memory:" ,
45
+ extensions : [ SqliteExtensions ::UUID . to_path ]
46
+ )
47
+
48
+ result = db . execute ( "select uuid()" )
49
+
50
+ assert_kind_of Array , result
51
+ assert_equal 1 , result . size
52
+ assert_kind_of Array , result . first
53
+ assert_equal 1 , result . first . size
21
54
22
- db = SQLite3 ::Database . new ":memory:"
23
- db . enable_load_extension ( true )
24
- extension_path = File . join ( __dir__ , "../lib/sqlite_extensions/uuid/uuid" )
25
- db . load_extension ( extension_path )
55
+ uuid = result . first . first
56
+ assert_kind_of String , uuid
57
+
58
+ assert_match UUID_REGEX , uuid
59
+ end
60
+ end
26
61
27
- result = db . execute ( "select uuid()" )
28
- assert_kind_of Array , result
29
- assert_equal 1 , result . size
30
- assert_kind_of Array , result . first
31
- assert_equal 1 , result . first . size
62
+ private
32
63
33
- uuid = result . first . first
34
- assert_kind_of String , uuid
64
+ def local_require_path = File . join ( __dir__ , "../lib" )
35
65
36
- assert_match (
37
- /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i ,
38
- uuid
39
- )
66
+ def when_this_gem_is_loaded ( require_path : local_require_path , & block )
67
+ test_gemspec = Struct . new ( :require_path ) . new ( require_path )
68
+ loaded_specs_stub = { GEM_NAME => test_gemspec }
69
+ Gem . stub ( :loaded_specs , loaded_specs_stub , & block )
40
70
end
41
71
end
0 commit comments