# frozen_string_literal: true # /test routes class GameData < Sinatra::Base get '/test' 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/:hardware_id/edit' do hardware = Hardware.where(id: params[:hardware_id]).first() erb :'test/edit', locals: { title: "Editing: #{hardware.name}", hardware: hardware } end post '/test/:hardware_id/edit' do hardware = Hardware.where(id: params[:hardware_id]).first() hardware.update( name: params[:hardware_name], type: params[:hardware_type] ) redirect "/hardware/#{hardware.id}" end end