Fix tests after the removal of memberships

This commit is contained in:
Stanko K.R.
2025-11-13 16:58:17 +01:00
committed by Mike Dalessio
parent 8fa9566c07
commit 34d83aaa7c
27 changed files with 84 additions and 360 deletions
+1 -1
View File
@@ -77,7 +77,7 @@ class BoardsControllerTest < ActionDispatch::IntegrationTest
end
test "update all access" do
board = Current.set(session: sessions(:kevin)) do
board = Current.set(account: accounts("37s"), session: sessions(:kevin), user: users(:kevin)) do
Board.create! name: "New board", all_access: false
end
assert_equal [ users(:kevin) ], board.users
@@ -36,7 +36,7 @@ class JoinCodesControllerTest < ActionDispatch::IntegrationTest
test "create" do
untenanted do
assert_difference -> { Identity.count }, 1 do
assert_difference -> { Membership.count }, 1 do
assert_difference -> { User.count }, 1 do
post join_path(tenant: @tenant, code: @join_code.code), params: { email_address: "new_user@example.com" }
end
end
@@ -52,7 +52,7 @@ class JoinCodesControllerTest < ActionDispatch::IntegrationTest
untenanted do
assert_no_difference -> { Identity.count } do
assert_no_difference -> { Membership.count } do
assert_no_difference -> { User.count } do
post join_path(tenant: @tenant, code: @join_code.code), params: { email_address: identity.email_address }
end
end
@@ -1,42 +0,0 @@
require "test_helper"
class Memberships::EmailAddresses::ConfirmationsControllerTest < ActionDispatch::IntegrationTest
test "show" do
untenanted do
membership = memberships(:kevin_in_37signals)
get email_address_confirmation_path(
membership_id: membership.id,
email_address_token: "dummy_token"
)
assert_response :success
end
end
test "create" do
untenanted do
membership = memberships(:kevin_in_37signals)
old_identity = membership.identity
new_email = "updated@example.com"
# Generate a real token
token = membership.send(:generate_email_address_change_token, to: new_email)
assert_difference -> { Identity.count }, 1 do
post email_address_confirmation_path(
membership_id: membership.id,
email_address_token: token
),
params: { email_address_token: token }
end
membership.reload
assert_equal new_email, membership.identity.email_address
assert_not_equal old_identity.id, membership.identity_id
assert cookies[:session_token].present?, "Should have started new session"
assert_redirected_to edit_user_url(script_name: "/#{membership.tenant}", id: membership.user)
end
end
end
@@ -1,43 +0,0 @@
require "test_helper"
class Memberships::EmailAddressesControllerTest < ActionDispatch::IntegrationTest
test "new" do
untenanted do
sign_in_as :kevin
membership = memberships(:kevin_in_37signals)
get new_email_address_path(membership_id: membership.id)
assert_response :success
end
end
test "create" do
untenanted do
sign_in_as :kevin
membership = memberships(:kevin_in_37signals)
assert_enqueued_emails 1 do
post email_addresses_path(membership_id: membership.id),
params: { email_address: "newemail@example.com" }
end
assert_response :success
end
end
test "create with an email for someone already in the account" do
untenanted do
sign_in_as :kevin
membership = memberships(:kevin_in_37signals)
post email_addresses_path(membership_id: membership.id),
params: { email_address: identities(:david).email_address }
assert_redirected_to new_email_address_path
assert_equal "You already have a user in this account with that email address", flash[:alert]
end
end
end
@@ -7,7 +7,7 @@ class Sessions::MenusControllerTest < ActionDispatch::IntegrationTest
test "show with no memberships" do
sign_in_as @identity
@identity.memberships.delete_all
@identity.users.delete_all
untenanted do
get session_menu_url
@@ -18,22 +18,25 @@ class Sessions::MenusControllerTest < ActionDispatch::IntegrationTest
test "show with exactly one membership" do
sign_in_as @identity
@identity.memberships.delete_all
@identity.memberships.create(tenant: "37signals")
@identity.users.delete_all
account = Account.create!(external_account_id: 9999991, name: "Test Account")
@identity.users.create!(account: account, name: "Kevin")
untenanted do
get session_menu_url
end
assert_response :redirect
assert_redirected_to root_url(script_name: "/37signals")
assert_redirected_to root_url(script_name: "/9999991")
end
test "show with multiple memeberships" do
sign_in_as @identity
@identity.memberships.delete_all
@identity.memberships.create(tenant: "37signals")
@identity.memberships.create(tenant: "acme")
@identity.users.delete_all
account1 = Account.create!(external_account_id: 9999992, name: "37signals")
account2 = Account.create!(external_account_id: 9999993, name: "Acme")
@identity.users.create!(account: account1, name: "Kevin")
@identity.users.create!(account: account2, name: "Kevin")
untenanted do
get session_menu_url
@@ -42,28 +45,4 @@ class Sessions::MenusControllerTest < ActionDispatch::IntegrationTest
assert_response :success
end
test "show renders as a menu section" do
sign_in_as @identity
@identity.memberships.delete_all
@identity.memberships.create(tenant: "37signals")
@identity.memberships.create(tenant: "acme")
untenanted do
get session_menu_url menu_section: true
end
assert_response :success
end
test "show doesn't redirect when rendered as a menu section" do
sign_in_as @identity
@identity.memberships.delete_all
@identity.memberships.create(tenant: "37signals")
untenanted do
get session_menu_url menu_section: true
end
assert_response :success
end
end
+4 -2
View File
@@ -26,7 +26,8 @@ class ApplicationHelperTest < ActionView::TestCase
test "page_title_tag on tenanted page when user has multiple memberships" do
Current.session = sessions(:david)
identities(:david).memberships.create!(tenant: "dangling-tenant")
other_account = Account.create!(external_account_id: "dangling-tenant", name: "Other Account")
identities(:david).users.create!(account: other_account, name: "David")
assert_select parse(page_title_tag), "title", text: "37signals | Fizzy"
end
@@ -40,7 +41,8 @@ class ApplicationHelperTest < ActionView::TestCase
test "page_title_tag on tenanted page with a page title when user has multiple memberships" do
Current.session = sessions(:david)
identities(:david).memberships.create!(tenant: "dangling-tenant")
other_account = Account.create!(external_account_id: "dangling-tenant", name: "Other Account")
identities(:david).users.create!(account: other_account, name: "David")
@page_title = "Holodeck"
assert_select parse(page_title_tag), "title", text: "Holodeck | 37signals | Fizzy"
+2 -3
View File
@@ -14,11 +14,10 @@ class AccountTest < ActiveSupport::TestCase
test ".create_with_admin_user creates a new local account" do
identity = identities(:david)
membership = identity.memberships.create!(tenant: ActiveRecord::FixtureSet.identify("account-create-with-admin-user-test"))
account = nil
assert_changes -> { Account.count }, +1 do
assert_changes -> { User.count }, +1 do
assert_changes -> { User.count }, +2 do
account = Account.create_with_admin_user(
account: {
external_account_id: ActiveRecord::FixtureSet.identify("account-create-with-admin-user-test"),
@@ -26,7 +25,7 @@ class AccountTest < ActiveSupport::TestCase
},
owner: {
name: "David",
membership: membership
identity: identity
}
)
end
+2 -2
View File
@@ -15,14 +15,14 @@ class Board::AccessibleTest < ActiveSupport::TestCase
end
test "grants access to everyone after creation" do
board = Current.set(session: sessions(:david)) do
board = Current.set(session: sessions(:david), user: users(:david)) do
Board.create! name: "New board", all_access: true
end
assert_equal accounts("37s").users.active.sort, board.users.sort
end
test "grants access to everyone after update" do
board = Current.set(session: sessions(:david)) do
board = Current.set(session: sessions(:david), user: users(:david)) do
Board.create! name: "New board"
end
assert_equal [ users(:david) ], board.users
+1 -1
View File
@@ -7,7 +7,7 @@ class FilterTest < ActiveSupport::TestCase
test "cards" do
Current.set session: sessions(:david) do
@new_board = Board.create! name: "Inaccessible Board"
@new_board = Board.create! name: "Inaccessible Board", creator: users(:david)
@new_card = @new_board.cards.create!(status: "published")
cards(:layout).comments.create!(body: "I hate haggis")
+4 -6
View File
@@ -23,15 +23,13 @@ class IdentityTest < ActiveSupport::TestCase
identity = identities(:david)
account = accounts(:initech)
assert_difference [ "Membership.count", "User.count" ], 1 do
assert_difference "User.count", 1 do
identity.join(account)
end
membership = identity.memberships.order(created_at: :desc).first
assert_equal account.external_account_id.to_s, membership.tenant
user = account.users.order(created_at: :desc).first
assert_equal membership, user.membership
user = account.users.find_by(identity: identity)
assert_not_nil user
assert_equal identity, user.identity
assert_equal identity.email_address, user.name
end
end
@@ -1,59 +0,0 @@
require "test_helper"
class Membership::EmailAddressChangeableTest < ActiveSupport::TestCase
include ActionMailer::TestHelper
setup do
@identity = identities(:kevin)
@tenant = accounts("37s").external_account_id
@membership = @identity.memberships.find_by!(tenant: @tenant)
@new_email = "newart@example.com"
end
test "send_email_address_change_confirmation" do
assert_emails 1 do
@membership.send_email_address_change_confirmation(@new_email)
end
end
test "change_email_address" do
old_identity = @identity
assert_difference -> { Identity.count }, +1 do
@membership.change_email_address(@new_email)
end
assert_equal @new_email, @membership.reload.identity.email_address
assert_not old_identity.reload.memberships.exists?(id: @membership.id)
assert_equal @new_email, @membership.reload.identity.email_address
# Make sure that a prior membership doesn't exist
identities(:david).memberships.where(tenant: @tenant).delete_all
assert_no_difference -> { Identity.count } do
@membership.change_email_address(identities(:david).email_address)
end
assert_equal identities(:david).email_address, @membership.reload.identity.email_address
end
test "change_email_address_using_token" do
token = @membership.send(:generate_email_address_change_token, to: @new_email)
Membership.change_email_address_using_token(token)
assert_equal @new_email, @membership.reload.identity.email_address
end
test "change_email_address_using_token with invalid token" do
assert_raises(ArgumentError, match: /invalid/) do
Membership.change_email_address_using_token("invalid_token")
end
token = @membership.send(:generate_email_address_change_token, to: @new_email)
@identity.update!(email_address: "different@example.com")
assert_raises(ArgumentError, match: /different email address/) do
Membership.change_email_address_using_token(token)
end
end
end
-18
View File
@@ -1,18 +0,0 @@
require "test_helper"
class MembershipTest < ActiveSupport::TestCase
test "change_email_address" do
tenant = accounts("37s").external_account_id
old_identity = identities(:kevin)
new_email = "kevin.new@37signals.com"
assert_difference -> { Identity.count }, 1 do
Membership.change_email_address(from: old_identity.email_address, to: new_email, tenant: tenant)
end
new_identity = Identity.find_by(email_address: new_email)
assert new_identity
assert new_identity.memberships.exists?(tenant: tenant)
assert_not old_identity.reload.memberships.exists?(tenant: tenant)
end
end
+2 -2
View File
@@ -2,14 +2,14 @@ require "test_helper"
class User::AccessorTest < ActiveSupport::TestCase
test "new users get added to all_access boards on creation" do
user = User.create!(name: "Jorge")
user = User.create!(account: accounts("37s"), name: "Jorge")
assert_includes user.boards, boards(:writebook)
assert_equal user.account.boards.all_access.count, user.boards.count
end
test "system user does not get added to boards on creation" do
system_user = User.create!(role: "system", name: "Test System User")
system_user = User.create!(account: accounts("37s"), role: "system", name: "Test System User")
assert_empty system_user.boards
end
end
+1 -1
View File
@@ -2,7 +2,7 @@ require "test_helper"
class User::ConfigurableTest < ActiveSupport::TestCase
test "should create settings for new users" do
user = User.create! name: "Some new user"
user = User.create! account: accounts("37s"), name: "Some new user"
assert user.settings.present?
end
end
+6 -2
View File
@@ -2,18 +2,22 @@ require "test_helper"
class UserTest < ActiveSupport::TestCase
test "create" do
user = User.create! \
user = User.create!(
account: accounts("37s"),
role: "member",
name: "Victor Cooper"
)
assert_equal [ boards(:writebook) ], user.boards
assert user.settings.present?
end
test "creation gives access to all_access boards" do
user = User.create! \
user = User.create!(
account: accounts("37s"),
role: "member",
name: "Victor Cooper"
)
assert_equal [ boards(:writebook) ], user.boards
end