Files
game-data/spec/controllers/benchmark_controller_spec.rb
Gregory Ballantine 8c5f510c70
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Added some more unit tests
2025-08-20 10:34:41 -04:00

118 lines
3.5 KiB
Ruby

# frozen_string_literal: true
require_relative '../spec_helper'
require_relative '../../src/models/benchmark'
RSpec.describe(BenchmarkController) do
# GET /benchmark - redirects to /benchmark/list
describe 'GET /benchmark' do
before { get '/benchmark' }
it 'Benchmark base route is a redirect.' do
expect(last_response).to(be_redirect)
end
it 'Benchmark base route is an HTML response.' do
expect(last_response['Content-Type']).to(include('text/html'))
end
it 'Benchmark base route Location header points to /benchmark/list' do
expect(last_response['Location']).to(eq("#{BASE_URL}/benchmark/list"))
end
end
# GET /benchmark/list - displays a table of benchmarks
describe 'GET /benchmark/list' do
before { get '/benchmark/list' }
it 'Benchmark list page returns 200.' do
expect(last_response).to(be_ok)
end
it 'Benchmark list page is an HTML response.' do
expect(last_response['Content-Type']).to(include('text/html'))
end
it "Benchmark list page contains 'List of benchmarks' on page." do
expect(last_response.body).to(include('List of benchmarks'))
end
end
# GET /benchmark/add - form for adding benchmark
describe 'GET /benchmark/add' do
before { get '/benchmark/add' }
it 'Benchmark add page returns 200.' do
expect(last_response).to(be_ok)
end
it 'Benchmark add page is an HTML response.' do
expect(last_response['Content-Type']).to(include('text/html'))
end
it "Benchmark add page contains 'Add new benchmark' on page." do
expect(last_response.body).to(include('Add new benchmark'))
end
end
# POST /benchmark/add - backend for adding a benchmark
describe 'POST /benchmark/add' do
before do
request_data = {
benchmark_name: 'Test Benchmark',
benchmark_scoring: 'fps',
benchmark_description: 'Benchmark for testing'
}
post '/benchmark/add', request_data
end
it 'Benchmark add POST route is a redirect.' do
expect(last_response).to(be_redirect)
end
it 'Benchmark add POST route is an HTML response.' do
expect(last_response['Content-Type']).to(include('text/html'))
end
it 'Benchmark add POST route Location header points to /benchmark/1' do
expect(last_response['Location']).to(eq("#{BASE_URL}/benchmark/1"))
end
it 'Benchmark add POST route creates new Benchmark.' do
expect(Benchmark.count).to(eq(1))
end
it 'Benchmark add POST route created benchmark has name.' do
expect(Benchmark.first.name).to(eq('Test Benchmark'))
end
it 'Benchmark add POST route created benchmark has scoring type.' do
expect(Benchmark.first.scoring).to(eq('fps'))
end
it 'Benchmark add POST route created benchmark has description.' do
expect(Benchmark.first.description).to(eq('Benchmark for testing'))
end
end
# GET /benchmark/:benchmark_id - page for viewing a benchmark model
describe 'GET /benchmark/:benchmark_id' do
before do
@benchmark = Benchmark.create(name: 'Test Benchmark', scoring: 'fps')
get "/benchmark/#{@benchmark.id}"
end
it 'Benchmark view page returns 200.' do
expect(last_response).to(be_ok)
end
it 'Benchmark view page is an HTML response' do
expect(last_response['Content-Type']).to(include('text/html'))
end
it 'Benchmark view page contains "Add new benchmark" on page.' do
expect(last_response.body).to(include("#{@benchmark.name}"))
end
end
end