# frozen_string_literal: true
require "json"
require "rack/test"
RSpec.describe "Web / Welcome view", :app_integration do
include Rack::Test::Methods
let(:app) { Hanami.app }
before do
with_directory(@dir = make_tmp_directory) do
write "config/app.rb", <<~RUBY
require "hanami"
module TestApp
class App < Hanami::App
config.logger.stream = File::NULL
end
end
RUBY
write "config/routes.rb", <<~RUBY
module TestApp
class Routes < Hanami::Routes
end
end
RUBY
before_prepare if respond_to?(:before_prepare)
require "hanami/prepare"
end
end
context "no routes defined" do
it "renders the welcome page" do
get "/"
body = last_response.body.strip
expect(body).to include "
Welcome to Hanami
"
expect(body).to include "Hanami version: #{Hanami::VERSION}"
expect(body).to include "Ruby version: #{RUBY_DESCRIPTION}"
expect(last_response.status).to eq 200
end
end
context "routes defined" do
def before_prepare
write "config/routes.rb", <<~RUBY
module TestApp
class Routes < Hanami::Routes
root to: -> * { [200, {}, "Hello from a route"] }
end
end
RUBY
end
it "does not render the welcome page" do
get "/"
expect(last_response.body).to eq "Hello from a route"
expect(last_response.status).to eq 200
end
end
context "non-development env" do
def before_prepare
@hanami_env = ENV["HANAMI_ENV"]
ENV["HANAMI_ENV"] = "production"
end
after do
ENV["HANAMI_ENV"] = @hanami_env
end
it "does not render the welcome page" do
get "/"
expect(last_response.body).to eq "Not Found"
expect(last_response.status).to eq 404
end
end
end