diff --git a/Gemfile b/Gemfile index 914453f..26eab2a 100644 --- a/Gemfile +++ b/Gemfile @@ -22,4 +22,5 @@ end group :test do gem 'rspec' gem 'rack-test' + gem 'database_cleaner-sequel' end diff --git a/Gemfile.lock b/Gemfile.lock index eff2464..050ccb5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,6 +4,10 @@ GEM ast (2.4.3) base64 (0.3.0) bigdecimal (3.2.2) + database_cleaner-core (2.0.1) + database_cleaner-sequel (2.0.2) + database_cleaner-core (~> 2.0.0) + sequel diff-lcs (1.6.2) ffi (1.17.2-aarch64-linux-gnu) ffi (1.17.2-aarch64-linux-musl) @@ -129,6 +133,7 @@ PLATFORMS x86_64-linux-musl DEPENDENCIES + database_cleaner-sequel logger puma (~> 6.6) rack-test diff --git a/Rakefile b/Rakefile index 2b4fe1e..3060dcc 100644 --- a/Rakefile +++ b/Rakefile @@ -29,6 +29,7 @@ end namespace :test do task :unit do + ENV['RACK_ENV'] = 'testing' system("rspec") end diff --git a/spec/models/benchmark_model_spec.rb b/spec/models/benchmark_model_spec.rb new file mode 100644 index 0000000..df8ebe7 --- /dev/null +++ b/spec/models/benchmark_model_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require_relative '../spec_helper' + +RSpec.describe(Benchmark) do + describe 'Benchmark Creation' do + it 'Benchmark creation updates model count.' do + expect{ Benchmark.create(name: 'Test Benchmark', scoring: 'fps') }.to(change { Benchmark.count }.by(1)) + end + end + + describe 'Benchmark Read' do + before { Benchmark.create(name: 'Test Benchmark', scoring: 'fps') } + + it 'Benchmark model has name.' do + bench = Benchmark.first() + expect(bench.name).to(eq('Test Benchmark')) + end + + it 'Benchmark model has scoring.' do + bench = Benchmark.first() + expect(bench.scoring).to(eq('fps')) + end + end +end diff --git a/spec/models/hardware_model_spec.rb b/spec/models/hardware_model_spec.rb new file mode 100644 index 0000000..4681a22 --- /dev/null +++ b/spec/models/hardware_model_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require_relative '../spec_helper' + +RSpec.describe(Hardware) do + describe 'Hardware Creation' do + it 'Hardware creation updates model count.' do + expect{ Hardware.create(name: 'Test Hardware', type: 'gpu') }.to(change { Hardware.count }.by(1)) + end + end + + describe 'Hardware Read' do + before { Hardware.create(name: 'Test Hardware', type: 'gpu') } + + it 'Hardware model has name.' do + hardware = Hardware.first() + expect(hardware.name).to(eq('Test Hardware')) + end + + it 'Hardware model has scoring.' do + hardware = Hardware.first() + expect(hardware.type).to(eq('gpu')) + end + end +end diff --git a/spec/models/test_model_spec.rb b/spec/models/test_model_spec.rb new file mode 100644 index 0000000..12d9ec9 --- /dev/null +++ b/spec/models/test_model_spec.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require_relative '../spec_helper' + +RSpec.describe(Test) do + describe 'Test Creation' do + it 'Test creation updates model count.' do + expect{ Test.create(name: 'Test Test') }.to(change { Test.count }.by(1)) + end + end + + describe 'Test Read' do + before do + Test.create(name: 'Test Test') + end + + it 'Test model has name.' do + tst = Test.first() + expect(tst.name).to(eq('Test Test')) + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 368e68a..7252aa4 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -5,6 +5,7 @@ ENV['APP_ENV'] = 'test' require_relative '../src/server' require 'rspec' require 'rack/test' +require 'database_cleaner/sequel' # setting this here so all redirect tests can reference the same base URL BASE_URL = 'http://example.org' @@ -21,4 +22,15 @@ end RSpec.configure do |config| config.include(RSpecMixin) + + config.before(:suite) do + DatabaseCleaner.strategy = :truncation + DatabaseCleaner.clean_with(:truncation) + end + + config.around(:each) do |suite| + DatabaseCleaner.cleaning do + suite.run + end + end end