Skip to content

Commit ba929e4

Browse files
committed
cleanup tests
1 parent 56de455 commit ba929e4

File tree

3 files changed

+55
-22
lines changed

3 files changed

+55
-22
lines changed

sqlite_extensions-uuid.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Gem::Specification.new do |spec|
66
spec.authors = ["Mark Delk"]
77
spec.email = ["[email protected]"]
88

9-
spec.summary = "Sqlite's uuid extension"
9+
spec.summary = "SQLite's UUID v4 extension, packaged as a gem"
1010
spec.homepage = "https://github.com/jethrodaniel/sqlite_extensions-uuid"
1111
spec.license = "MIT"
1212
spec.required_ruby_version = ">= 3.0.0"

test/test_helper.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,7 @@
33
$LOAD_PATH.unshift File.expand_path("../lib", __dir__)
44
require "sqlite_extensions/uuid"
55

6+
# NOTE: loading `sqlite3` isn't required by our gem, but we need it for tests.
7+
require "sqlite3"
8+
69
require "minitest/autorun"

test/test_uuid.rb

Lines changed: 51 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
require "test_helper"
44

55
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+
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
4171
end

0 commit comments

Comments
 (0)