97 lines
2.2 KiB
Ruby
97 lines
2.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative 'base_controller'
|
|
require_relative '../models/benchmark'
|
|
require_relative '../models/hardware'
|
|
require_relative '../models/test'
|
|
|
|
# /test routes
|
|
class TestController < BaseController
|
|
|
|
get '/test' do
|
|
redirect('/test/list')
|
|
end
|
|
|
|
get '/test/list' do
|
|
tests = Test.reverse(:updated_at).limit(10).all()
|
|
|
|
erb :'test/index', locals: {
|
|
title: 'List of Tests',
|
|
tests: tests
|
|
}
|
|
end
|
|
|
|
get '/test/add' do
|
|
hardware = Hardware.order(:name).all()
|
|
benchmarks = Benchmark.order(:name).all()
|
|
|
|
erb :'test/add', locals: {
|
|
title: 'Add Test',
|
|
hardware: hardware,
|
|
benchmarks: benchmarks
|
|
}
|
|
end
|
|
post '/test/add' do
|
|
tst = Test.create(
|
|
name: params[:test_name],
|
|
hardware_id: params[:test_hardware],
|
|
description: params[:test_description]
|
|
)
|
|
|
|
# create an array of the selected benchmarks
|
|
benchmarks = Array(params[:test_benchmarks])
|
|
# associate the benchmarks to the test
|
|
benchmarks.each do |b|
|
|
tst.add_benchmark(b)
|
|
end
|
|
|
|
redirect "/test/#{tst.id}"
|
|
end
|
|
|
|
get '/test/:test_id' do
|
|
tst = Test.where(id: params[:test_id]).first()
|
|
erb :'test/view', locals: {
|
|
title: tst.name,
|
|
test: tst
|
|
}
|
|
end
|
|
|
|
get '/test/:test_id/edit' do
|
|
tst = Test.where(id: params[:test_id]).first()
|
|
hardware = Hardware.order(:name).all()
|
|
benchmarks = Benchmark.order(:name).all()
|
|
|
|
erb :'test/edit', locals: {
|
|
title: "Editing: #{tst.name}",
|
|
test: tst,
|
|
hardware: hardware,
|
|
benchmarks: benchmarks
|
|
}
|
|
end
|
|
|
|
post '/test/:test_id/edit' do
|
|
tst = Test.where(id: params[:test_id]).first()
|
|
|
|
tst.update(
|
|
name: params[:test_name],
|
|
hardware_id: params[:test_hardware],
|
|
description: params[:test_description]
|
|
)
|
|
|
|
selected_benchmarks = Array(params[:test_benchmarks])
|
|
|
|
# remove benchmarks no longer associated with the test
|
|
tst.benchmarks.dup.each do |b|
|
|
tst.remove_benchmark(b.id) unless selected_benchmarks.include?(b.id)
|
|
end
|
|
|
|
# associate the benchmarks to the test
|
|
selected_benchmarks.each do |b|
|
|
tst.add_benchmark(b) unless tst.benchmark?(b)
|
|
end
|
|
|
|
redirect "/test/#{tst.id}"
|
|
end
|
|
|
|
end
|