From ec2bf45a6edf0bdbf4392511007ed2a6e218bb1e Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Thu, 31 Jul 2025 14:06:08 -0400 Subject: [PATCH] Fixed the test edit page --- src/models/test.rb | 4 ++++ src/routes/test.rb | 18 +++++++++++++++++- views/test/edit.erb | 4 ++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/models/test.rb b/src/models/test.rb index e2862e2..ccc92af 100644 --- a/src/models/test.rb +++ b/src/models/test.rb @@ -7,4 +7,8 @@ class Test < Sequel::Model many_to_one :hardware many_to_many :benchmarks + def has_benchmark(benchmark_id) + return benchmarks_dataset.where(Sequel[:benchmarks][:id] => benchmark_id).any? + end + end diff --git a/src/routes/test.rb b/src/routes/test.rb index 8700697..ce0a169 100644 --- a/src/routes/test.rb +++ b/src/routes/test.rb @@ -65,9 +65,25 @@ class GameData < Sinatra::Base tst.update( name: params[:test_name], - type: params[:test_type] + hardware_id: params[:test_hardware], + description: params[:test_description] ) + # create an array of the selected benchmarks + selected_benchmarks = Array(params[:test_benchmarks]) + # remove benchmarks no longer associated with the test + tst.benchmarks.each do |b| + if not selected_benchmarks.include?(b) + tst.remove_benchmark(b) + end + end + # associate the benchmarks to the test + selected_benchmarks.each do |b| + if not tst.has_benchmark(b) + tst.add_benchmark(b) + end + end + redirect "/test/#{tst.id}" end diff --git a/views/test/edit.erb b/views/test/edit.erb index db3395d..59502e1 100644 --- a/views/test/edit.erb +++ b/views/test/edit.erb @@ -28,7 +28,7 @@ @@ -41,7 +41,7 @@
- +