Files
redux-scraper/spec/controllers/log_entries_controller_spec.rb
2025-02-26 00:34:40 +00:00

78 lines
2.2 KiB
Ruby

# typed: false
require "rails_helper"
RSpec.describe LogEntriesController, type: :controller do
render_views
let(:user) { create(:user, :admin) }
context "when user is not signed in" do
describe "GET #index" do
it "redirects to sign in" do
get :index, params: { filter: "example.com/test" }
expect(response).to redirect_to(new_user_session_path)
end
end
describe "GET #stats" do
it "redirects to sign in" do
get :stats, params: { seconds: 3600 }
expect(response).to redirect_to(new_user_session_path)
end
end
describe "GET #show" do
it "redirects to sign in" do
get :show, params: { id: 1 }
expect(response).to redirect_to(new_user_session_path)
end
end
end
context "when user is signed in" do
before { sign_in user }
describe "GET #index" do
it "renders the index template with filtered log entries" do
get :index, params: { filter: "example.com/test" }
expect(response).to be_successful
expect(response).to render_template(:index)
end
it "shows existing log entries matching the filter" do
log_entry =
create(
:http_log_entry,
uri_host: "example.com",
uri_path: "/test",
uri_scheme: "https",
)
get :index, params: { filter: "example.com/test" }
expect(response).to be_successful
expect(assigns(:log_entries)).to include(log_entry)
end
end
describe "GET #stats" do
it "renders the stats template with time window data" do
get :stats, params: { seconds: 3600 }
expect(response).to be_successful
expect(response).to render_template(:stats)
expect(assigns(:time_window)).to eq 3600.seconds
end
end
describe "GET #show" do
let(:log_entry) { create(:http_log_entry) }
it "renders the show template with the requested log entry" do
get :show, params: { id: log_entry.id }
expect(response).to be_successful
expect(response).to render_template(:show)
expect(assigns(:log_entry)).to eq(log_entry)
end
end
end
end