Skip to content

Commit

Permalink
fix: Bug creating duplicate category leads to crash screen
Browse files Browse the repository at this point in the history
  • Loading branch information
Tony Vincent Yesudas committed Dec 27, 2024
1 parent 77def1d commit 69b8b90
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
1 change: 1 addition & 0 deletions app/controllers/categories_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ def create

redirect_back_or_to categories_path, notice: t(".success")
else
@categories = Current.family.categories.alphabetically.where(parent_id: nil)
render :new, status: :unprocessable_entity
end
end
Expand Down
11 changes: 11 additions & 0 deletions test/controllers/categories_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,17 @@ class CategoriesControllerTest < ActionDispatch::IntegrationTest
assert_equal color, new_category.color
end

test "create fails if name is not unique" do
assert_no_difference "Category.count" do
post categories_url, params: {
category: {
name: categories(:food_and_drink).name,
color: Category::COLORS.sample } }
end

assert_response :unprocessable_entity
end

test "create and assign to transaction" do
color = Category::COLORS.sample

Expand Down
26 changes: 26 additions & 0 deletions test/system/categories_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
require "application_system_test_case"

class CategoriesTest < ApplicationSystemTestCase
setup do
sign_in @user = users(:family_admin)
end

test "can create category" do
visit categories_url
click_link I18n.t("categories.new.new_category")
fill_in "Name", with: "My Shiny New Category"
click_button "Create Category"

visit categories_url
assert_text "My Shiny New Category"
end

test "trying to create a duplicate category fails" do
visit categories_url
click_link I18n.t("categories.new.new_category")
fill_in "Name", with: categories(:food_and_drink).name
click_button "Create Category"

assert_text "Name has already been taken"
end
end

0 comments on commit 69b8b90

Please sign in to comment.