33require "test_helper"
44
55class 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+
611 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
1113 path = SqliteExtensions ::UUID . to_path
1214 assert_kind_of String , path
1315
@@ -16,26 +18,54 @@ def test_to_path
1618 end
1719 end
1820
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
2154
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
2661
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
3263
33- uuid = result . first . first
34- assert_kind_of String , uuid
64+ def local_require_path = File . join ( __dir__ , "../lib" )
3565
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 )
4070 end
4171end
0 commit comments