Skip to main content
Version: v2.0

Testing

Backend​

Rhino uses minitest for all testing on the backend. The tests are located in the test directory. By default the tests will run with parallel workers. Set the PARALLEL_WORKERS environment variable to 1 to run the tests in serial.

Read more on testing in Rails.

Running tests​

All tests can be run with the following command:

rails test

run a single test file:

rails test test/models/user_test.rb

run a single test (:5 indicates the line number the test starts on)

rails test test/models/user_test.rb:5

Debugging tests​

The debugger gem is included in Rhino. To use it, add the following to your test:

require "test_helper"

class CurrencyTest < ActiveSupport::TestCase
test "currency should be created" do
debugger
assert Currency.new(name: "currency", code: "code").valid?
end
end

Then run the tests with the following command so that they do not run in parallel:

PARALLEL_WORKERS=1 rails test test/models/user_test.rb

Mock third-party APIs​

The webmock gem is included in Rhino. To use it, and mock third-party APIs add the following to your test:

require "test_helper"
require "webmock/minitest"

class CurrencyTest < ActiveSupport::TestCase
test "currency should be created" do
stub_request(:get, "https://api.example.com/customer-id/")
.to_return(status: 200, body: { id: 1 }.to_json, headers: {})
uri = URI("https://api.example.com/customer-id/")
response = Net::HTTP.get_response(uri)
data = JSON.parse(response.body)
assert_equal data["id"], 1
end
end

Read more on webmock docs.

Frontend​

Rhino uses Vitest for unit and component testing on the frontend. The tests are located in the src/__tests__ directory.

Running tests​

All tests can be run with the following command:

npm run test

E2E Testing​

Rhino uses Cypress for E2E testing. The tests are located in the cypress/integration directory. Cypress can be loaded with the following command:

npm run cypress:open

or all tests can be executed on the command line with:

npm run cypress:run