60 lines
2.1 KiB
Ruby
60 lines
2.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe "Reports", type: :system, js: true do
|
|
fab!(:group) { Fabricate(:group, name: "group") }
|
|
fab!(:user) { Fabricate(:admin) }
|
|
fab!(:group_user) { Fabricate(:group_user, user: user, group: group) }
|
|
fab!(:query_1) do
|
|
Fabricate(
|
|
:query,
|
|
name: "My First Query",
|
|
description: "This is the description of my 1st query.",
|
|
sql: "SELECT * FROM users limit 1",
|
|
user: user,
|
|
)
|
|
end
|
|
fab!(:query_2) do
|
|
Fabricate(
|
|
:query,
|
|
name: "My Second Query",
|
|
description: "This is my 2nd query's description.",
|
|
sql: "SELECT * FROM users limit 1",
|
|
user: user,
|
|
)
|
|
end
|
|
fab!(:query_group_1) { Fabricate(:query_group, query: query_1, group: group) }
|
|
fab!(:query_group_2) { Fabricate(:query_group, query: query_2, group: group) }
|
|
|
|
before { SiteSetting.data_explorer_enabled = true }
|
|
|
|
it "allows user to switch between reports" do
|
|
sign_in(user)
|
|
visit("/g/group/reports/#{query_2.id}")
|
|
expect(find(".user-content h1")).to have_content("My Second Query")
|
|
expect(page).not_to have_css(".query-results .result-header")
|
|
find(".query-run .btn-primary").click
|
|
expect(page).to have_css(".query-results .result-header")
|
|
|
|
find(".group-reports-nav-item-outlet a").click
|
|
all(".group-reports a ").last.click
|
|
expect(find(".user-content h1")).to have_content("My Second Query")
|
|
expect(page).not_to have_css(".query-results .result-header")
|
|
find(".query-run .btn-primary").click
|
|
expect(page).to have_css(".query-results .result-header")
|
|
end
|
|
|
|
it "allows user to run a report with a JSON column and open a fullscreen code viewer" do
|
|
Fabricate(:reviewable_queued_post)
|
|
sql = <<~SQL
|
|
SELECT id, payload FROM reviewables LIMIT 10
|
|
SQL
|
|
json_query = DiscourseDataExplorer::Query.create!(name: "some query", sql: sql)
|
|
sign_in(user)
|
|
visit("/g/group/reports/#{json_query.id}")
|
|
find(".query-run .btn-primary").click
|
|
expect(page).to have_css(".query-results .result-json")
|
|
first(".query-results .result-json .btn.result-json-button").click
|
|
expect(page).to have_css(".fullscreen-code-modal")
|
|
end
|
|
end
|