Add RSpec tests for app boot and database setup (#73)

This commit is contained in:
l5y
2025-09-16 08:25:13 +02:00
committed by GitHub
parent 02e985d2a8
commit 7399c02be9
3 changed files with 66 additions and 0 deletions
+5
View File
@@ -4,3 +4,8 @@ gem "sinatra", "~> 4.0"
gem "sqlite3", "~> 1.7"
gem "rackup", "~> 2.2"
gem "puma", "~> 7.0"
group :test do
gem "rspec", "~> 3.12"
gem "rack-test", "~> 2.1"
end
+29
View File
@@ -0,0 +1,29 @@
# frozen_string_literal: true
require "spec_helper"
require "sqlite3"
RSpec.describe "Potato Mesh Sinatra app" do
let(:app) { Sinatra::Application }
describe "GET /" do
it "responds successfully" do
get "/"
expect(last_response).to be_ok
end
end
describe "database initialization" do
it "creates the schema when booting" do
expect(File).to exist(DB_PATH)
db = SQLite3::Database.new(DB_PATH, readonly: true)
tables = db.execute("SELECT name FROM sqlite_master WHERE type='table' AND name IN ('nodes','messages')").flatten
expect(tables).to include("nodes")
expect(tables).to include("messages")
ensure
db&.close
end
end
end
+32
View File
@@ -0,0 +1,32 @@
# frozen_string_literal: true
require "tmpdir"
require "fileutils"
ENV["RACK_ENV"] = "test"
SPEC_TMPDIR = Dir.mktmpdir("potato-mesh-spec-")
ENV["MESH_DB"] = File.join(SPEC_TMPDIR, "mesh.db")
require_relative "../app"
require "rack/test"
require "rspec"
RSpec.configure do |config|
config.expect_with :rspec do |expectations|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
end
config.mock_with :rspec do |mocks|
mocks.verify_partial_doubles = true
end
config.shared_context_metadata_behavior = :apply_to_host_groups
config.include Rack::Test::Methods
config.after(:suite) do
FileUtils.remove_entry(SPEC_TMPDIR) if File.directory?(SPEC_TMPDIR)
end
end