Files
eminuxandCursor 29c8afb94d Admin analytics: heatmap per device, anteprima staff e analisi costi.
Separa heatmap mobile/desktop, opt-out analytics per operatori, dashboard costi con KPI e trend mensili.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 19:25:38 +02:00

75 lines
2.3 KiB
Ruby

# frozen_string_literal: true
require "rails_helper"
RSpec.describe "Admin analytics", type: :request do
let!(:admin) { AdminAccount.create!(username: "ops-analytics", password: "Password123") }
before do
post admin_login_path, params: { username: admin.username, password: "Password123" }
AnalyticsPageStat.create!(
day: Time.zone.today,
page_path: "/prezzi",
device: "desktop",
pageview_count: 12,
scroll_samples: 10,
scroll_sum_pct: 600,
max_scroll_pct: 90
)
AnalyticsPageCell.create!(
day: Time.zone.today,
page_path: "/prezzi",
device: "desktop",
cell_x: 10,
cell_y: 15,
click_count: 4,
move_count: 40
)
end
it "mostra l'elenco pagine" do
get admin_analytics_path
expect(response).to have_http_status(:ok)
expect(response.body).to include("/prezzi")
expect(response.body).to include("12")
expect(response.body).to include("40")
end
it "mostra la heatmap di una pagina con tab dispositivo" do
get admin_analytics_page_path, params: { page_path: "/prezzi" }
expect(response).to have_http_status(:ok)
expect(response.body).to include("admin-heatmap")
expect(response.body).to include("/prezzi")
expect(response.body).to include("is-active")
expect(response.body).to include(I18n.t("admin.analytics.devices.desktop"))
end
it "mostra solo i punti del dispositivo selezionato" do
AnalyticsPageCell.create!(
day: Time.zone.today,
page_path: "/prezzi",
device: "mobile",
cell_x: 5,
cell_y: 8,
click_count: 9,
move_count: 0
)
get admin_analytics_page_path, params: { page_path: "/prezzi", device: "mobile", layer: "click" }
expect(response).to have_http_status(:ok)
expect(response.body).to include("x&quot;:5")
expect(response.body).to include("c&quot;:9")
expect(response.body).not_to include("x&quot;:10")
end
it "attiva e disattiva l'anteprima staff" do
post admin_analytics_preview_path, params: { return_to: "/" }
expect(response).to redirect_to("/")
expect(response.cookies[Analytics::Suppress::COOKIE_NAME]).to eq("1")
delete admin_analytics_preview_path
expect(response).to redirect_to(admin_analytics_path)
expect(response.cookies[Analytics::Suppress::COOKIE_NAME]).to be_nil
end
end