mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
132 lines
4.0 KiB
Ruby
132 lines
4.0 KiB
Ruby
require "spec_helper"
|
|
|
|
feature "Managing users" do
|
|
include AuthenticationWorkflow
|
|
include OpenFoodNetwork::EmailHelper
|
|
|
|
context "as super-admin" do
|
|
before do
|
|
setup_email
|
|
quick_login_as_admin
|
|
end
|
|
|
|
context "from the index page" do
|
|
before do
|
|
create(:user, email: "a@example.com")
|
|
create(:user, email: "b@example.com")
|
|
|
|
visit spree.admin_dashboard_path
|
|
click_link "Users"
|
|
end
|
|
|
|
context "users index page with sorting" do
|
|
before(:each) do
|
|
click_link "users_email_title"
|
|
end
|
|
|
|
it "should list users with order email asc" do
|
|
expect(page).to have_css('table#listing_users')
|
|
within("table#listing_users") do
|
|
expect(page).to have_content("a@example.com")
|
|
expect(page).to have_content("b@example.com")
|
|
end
|
|
end
|
|
|
|
it "should list users with order email desc" do
|
|
click_link "users_email_title"
|
|
within("table#listing_users") do
|
|
expect(page).to have_content("a@example.com")
|
|
expect(page).to have_content("b@example.com")
|
|
end
|
|
end
|
|
end
|
|
|
|
context "searching users" do
|
|
it "should display the correct results for a user search" do
|
|
fill_in "q_email_cont", with: "a@example"
|
|
click_button "Search"
|
|
within("table#listing_users") do
|
|
expect(page).to have_content("a@example")
|
|
expect(page).not_to have_content("b@example")
|
|
end
|
|
end
|
|
end
|
|
|
|
context "editing users" do
|
|
before(:each) do
|
|
click_link("a@example.com")
|
|
end
|
|
|
|
it "should allow editing the user password" do
|
|
fill_in "user_password", with: "welcome"
|
|
fill_in "user_password_confirmation", with: "welcome"
|
|
click_button "Update"
|
|
|
|
expect(page).to have_content("Account updated")
|
|
end
|
|
|
|
it "should let me edit the user email" do
|
|
fill_in "Email", with: "newemail@example.org"
|
|
click_button "Update"
|
|
|
|
expect(page).to have_content("The account will be updated once the new email is confirmed.")
|
|
end
|
|
|
|
it "should allow to generate, regenarate and clear the user api key", js: true do
|
|
user = Spree::User.find_by_email("a@example.com")
|
|
expect(page).to have_content "NO KEY"
|
|
|
|
click_button "Generate API key"
|
|
first_user_api_key = user.reload.spree_api_key
|
|
expect(page).to have_content first_user_api_key
|
|
|
|
click_button "Regenerate Key"
|
|
second_user_api_key = user.reload.spree_api_key
|
|
expect(page).to have_content second_user_api_key
|
|
expect(second_user_api_key).not_to eq first_user_api_key
|
|
|
|
click_button "Clear key"
|
|
expect(page).to have_content "NO KEY"
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "creating a user" do
|
|
it "shows no confirmation message to start with" do
|
|
visit spree.new_admin_user_path
|
|
expect(page).to have_no_text "Email confirmation is pending"
|
|
end
|
|
|
|
it "confirms successful creation" do
|
|
visit spree.new_admin_user_path
|
|
fill_in "Email", with: "user1@example.org"
|
|
fill_in "Password", with: "user1Secret"
|
|
fill_in "Confirm Password", with: "user1Secret"
|
|
expect do
|
|
click_button "Create"
|
|
end.to change { Spree::User.count }.by 1
|
|
expect(page).to have_text "Created Successfully"
|
|
expect(page).to have_text "Email confirmation is pending"
|
|
end
|
|
end
|
|
|
|
describe "resending confirmation email", js: true do
|
|
let(:user) { create :user, confirmed_at: nil }
|
|
|
|
around do |example|
|
|
performing_deliveries { example.run }
|
|
end
|
|
|
|
it "displays success" do
|
|
visit spree.edit_admin_user_path user
|
|
|
|
expect do
|
|
# The `a` element doesn't have an href, so we can't use click_link.
|
|
find("a", text: "Resend").click
|
|
expect(page).to have_text "Resend done"
|
|
end.to send_confirmation_instructions
|
|
end
|
|
end
|
|
end
|
|
end
|