Module: Spikard::Testing
- Defined in:
- lib/spikard/testing.rb,
lib/spikard/response.rb
Overview
Testing helpers that wrap the native Ruby extension.
Defined Under Namespace
Classes: InlineSseEvent, Response, SseEvent, SseStream, TestClient, WebSocketMessage, WebSocketTestConnection
Class Method Summary
collapse
Class Method Details
.build_native_test_client(app, config) ⇒ Object
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/spikard/testing.rb', line 36
def build_native_test_client(app, config)
routes_json = app.normalized_routes_json
handlers = app.handler_map.transform_keys(&:to_sym)
ws_handlers = app.websocket_handlers || {}
sse_producers = app.sse_producers || {}
hooks = app.instance_variable_get(:@native_hooks)
dependencies = app.dependencies || {}
payload = { hooks: hooks, dependencies: dependencies }
Spikard::Native::TestClient.new(routes_json, handlers, config, ws_handlers, sse_producers, payload)
end
|
.create_test_client(app, config: nil) ⇒ Object
11
12
13
14
15
16
17
18
|
# File 'lib/spikard/testing.rb', line 11
def create_test_client(app, config: nil)
trace('create_test_client:start')
ensure_native_test_client!
config = resolve_test_config(app, config)
native = build_native_test_client(app, config)
trace('create_test_client:done')
TestClient.new(native)
end
|
.ensure_native_test_client! ⇒ Object
20
21
22
23
24
|
# File 'lib/spikard/testing.rb', line 20
def ensure_native_test_client!
return if defined?(Spikard::Native::TestClient)
raise LoadError, 'Spikard native test client is not available. Build the native extension before running tests.'
end
|
.resolve_test_config(app, config) ⇒ Object
26
27
28
29
30
31
32
33
34
|
# File 'lib/spikard/testing.rb', line 26
def resolve_test_config(app, config)
return config if config
if app.instance_variable_defined?(:@__spikard_test_config)
return app.instance_variable_get(:@__spikard_test_config)
end
Spikard::ServerConfig.new
end
|
.trace(message) ⇒ Object
290
291
292
293
294
|
# File 'lib/spikard/testing.rb', line 290
def trace(message)
return unless ENV['SPIKARD_RB_TEST_TRACE'] == '1'
warn("[spikard-rb-test] #{message}")
end
|