Reapply "Make sure new card drafts are refreshed when reused"
This reverts commit 045ddf78f3.
This commit is contained in:
@@ -12,7 +12,7 @@ class CardsController < ApplicationController
|
||||
def create
|
||||
respond_to do |format|
|
||||
format.html do
|
||||
card = @board.cards.find_or_create_by!(creator: Current.user, status: "drafted")
|
||||
card = Current.user.draft_new_card_at(@board)
|
||||
redirect_to card
|
||||
end
|
||||
|
||||
|
||||
@@ -11,6 +11,12 @@ module User::Accessor
|
||||
after_create_commit :grant_access_to_boards, unless: :system?
|
||||
end
|
||||
|
||||
def draft_new_card_at(board)
|
||||
board.cards.find_or_initialize_by(creator: self, status: "drafted").tap do |card|
|
||||
card.update!(created_at: Time.current, updated_at: Time.current, last_active_at: Time.current)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def grant_access_to_boards
|
||||
Access.insert_all account.boards.all_access.pluck(:id).collect { |board_id| { id: ActiveRecord::Type::Uuid.generate, board_id: board_id, user_id: id, account_id: account.id } }
|
||||
|
||||
@@ -12,4 +12,36 @@ class User::AccessorTest < ActiveSupport::TestCase
|
||||
system_user = User.create!(account: accounts("37s"), role: "system", name: "Test System User")
|
||||
assert_empty system_user.boards
|
||||
end
|
||||
|
||||
test "creating a new card draft sets current timestamps" do
|
||||
user = users(:david)
|
||||
board = boards(:writebook)
|
||||
|
||||
freeze_time do
|
||||
card = user.draft_new_card_at(board)
|
||||
|
||||
assert card.persisted?
|
||||
assert card.drafted?
|
||||
assert_equal user, card.creator
|
||||
assert_equal board, card.board
|
||||
assert_equal Time.current, card.created_at
|
||||
assert_equal Time.current, card.updated_at
|
||||
assert_equal Time.current, card.last_active_at
|
||||
end
|
||||
end
|
||||
|
||||
test "reusing an existing card draft refreshes timestamps" do
|
||||
existing_draft = cards(:unfinished_thoughts)
|
||||
user = existing_draft.creator
|
||||
board = existing_draft.board
|
||||
|
||||
freeze_time do
|
||||
card = user.draft_new_card_at(board)
|
||||
|
||||
assert_equal existing_draft, card
|
||||
assert_equal Time.current, card.created_at
|
||||
assert_equal Time.current, card.updated_at
|
||||
assert_equal Time.current, card.last_active_at
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user