Class: Syntropy::Test
- Inherits:
-
Minitest::Test
- Object
- Minitest::Test
- Syntropy::Test
- Defined in:
- lib/syntropy/test.rb
Overview
Test provides a class for testing a Syntropy app, based on Minitest.
Constant Summary collapse
Instance Attribute Summary collapse
-
#app ⇒ Object
readonly
Returns the value of attribute app.
-
#machine ⇒ Object
readonly
Returns the value of attribute machine.
Class Method Summary collapse
-
.env=(env) ⇒ void
Sets the app environment for all Syntropy tests.
Instance Method Summary collapse
-
#env ⇒ Hash
Returns the test environment.
-
#get(path, **headers) ⇒ Syntropy::Request
Makes an HTTP GET request to the test app.
-
#http_request(headers, body = nil) ⇒ Syntropy::Request
Makes an HTTP request to the test app.
-
#load_module(ref, raise_on_missing: true) ⇒ any
Loads and returns a module with the given reference.
-
#post(path, content_type, body, **headers) ⇒ Syntropy::Request
Makes an HTTP POST request to the test app.
-
#post_form(path, data) ⇒ Syntropy::Request
Makes an HTTP POST request to the test app with a “application/x-www-form-urlencoded” content type.
-
#post_json(path, data) ⇒ Syntropy::Request
Makes an HTTP POST request to the test app with a “application/json” content type.
-
#setup ⇒ void
Sets up a test instance.
-
#teardown ⇒ void
Cleans up a test instance.
Instance Attribute Details
#app ⇒ Object (readonly)
Returns the value of attribute app.
22 23 24 |
# File 'lib/syntropy/test.rb', line 22 def app @app end |
#machine ⇒ Object (readonly)
Returns the value of attribute machine.
22 23 24 |
# File 'lib/syntropy/test.rb', line 22 def machine @machine end |
Class Method Details
.env=(env) ⇒ void
This method returns an undefined value.
Sets the app environment for all Syntropy tests.
18 19 20 |
# File 'lib/syntropy/test.rb', line 18 def self.env=(env) @@env = env end |
Instance Method Details
#env ⇒ Hash
Returns the test environment.
27 28 29 |
# File 'lib/syntropy/test.rb', line 27 def env @@env end |
#get(path, **headers) ⇒ Syntropy::Request
Makes an HTTP GET request to the test app.
53 54 55 56 57 58 59 60 |
# File 'lib/syntropy/test.rb', line 53 def get(path, **headers) http_request( headers.merge( ':method' => 'GET', ':path' => path ) ) end |
#http_request(headers, body = nil) ⇒ Syntropy::Request
Makes an HTTP request to the test app.
44 45 46 |
# File 'lib/syntropy/test.rb', line 44 def http_request(headers, body = nil) @test_harness.request(headers, body) end |
#load_module(ref, raise_on_missing: true) ⇒ any
Loads and returns a module with the given reference.
35 36 37 |
# File 'lib/syntropy/test.rb', line 35 def load_module(ref, raise_on_missing: true) app.module_loader.load(ref, raise_on_missing:) end |
#post(path, content_type, body, **headers) ⇒ Syntropy::Request
Makes an HTTP POST request to the test app.
69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/syntropy/test.rb', line 69 def post(path, content_type, body, **headers) headers = headers.merge('content-type' => content_type) if content_type http_request( headers.merge( { ':method' => 'POST', ':path' => path } ), body ) end |
#post_form(path, data) ⇒ Syntropy::Request
Makes an HTTP POST request to the test app with a “application/x-www-form-urlencoded” content type. The given data is converted to URL Encoded form format and sent as the request body.
100 101 102 |
# File 'lib/syntropy/test.rb', line 100 def post_form(path, data, **) post(path, 'application/x-www-form-urlencoded', URI.encode_www_form(data), **) end |
#post_json(path, data) ⇒ Syntropy::Request
Makes an HTTP POST request to the test app with a “application/json” content type. The given object is converted to JSON and sent as the request body.
89 90 91 |
# File 'lib/syntropy/test.rb', line 89 def post_json(path, data, **) post(path, 'application/json', JSON.dump(data), **) end |
#setup ⇒ void
This method returns an undefined value.
Sets up a test instance.
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/syntropy/test.rb', line 107 def setup raise 'Environment not set' if !@@env Syntropy.load_config(@@env) @machine = UM.new @app = Syntropy::App.new( **@@env.merge( machine: @machine, test_mode: true ) ) @test_harness = Syntropy::TestHarness.new(@app) @db = load_module('/_lib/database', raise_on_missing: false) @db&.migrate! end |
#teardown ⇒ void
This method returns an undefined value.
Cleans up a test instance.
128 129 130 131 132 |
# File 'lib/syntropy/test.rb', line 128 def teardown @machine = nil @app = nil @test_harness = nil end |