From 9efe94a2774ead7c65ca1d13017c2ae6d35d79cd Mon Sep 17 00:00:00 2001 From: Jose Farias Date: Wed, 6 Nov 2024 18:09:55 -0600 Subject: [PATCH] idempotent_create -> persist --- app/controllers/filters_controller.rb | 2 +- app/models/filter.rb | 4 ++-- test/models/filter_test.rb | 9 ++++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/controllers/filters_controller.rb b/app/controllers/filters_controller.rb index 9d9964e52..ba3c2d94a 100644 --- a/app/controllers/filters_controller.rb +++ b/app/controllers/filters_controller.rb @@ -2,7 +2,7 @@ class FiltersController < ApplicationController before_action :set_filter, :remember_params, only: :destroy def create - @filter = Current.user.filters.idempotent_create!(filter_params).tap(&:touch) + @filter = Current.user.filters.persist! filter_params redirect_to bubbles_path(@filter.to_params) end diff --git a/app/models/filter.rb b/app/models/filter.rb index b93965ac2..63d0555ab 100644 --- a/app/models/filter.rb +++ b/app/models/filter.rb @@ -5,12 +5,12 @@ class Filter < ApplicationRecord has_one :account, through: :creator class << self - def idempotent_create!(attrs) + def persist!(attrs) filter = new(attrs) filter.save! filter rescue ActiveRecord::RecordNotUnique - find_by! params: filter.params # possible thanks to denormalized params + find_by!(params: filter.params).tap(&:touch) # possible thanks to denormalized params end end diff --git a/test/models/filter_test.rb b/test/models/filter_test.rb index f66466235..ec29c99ae 100644 --- a/test/models/filter_test.rb +++ b/test/models/filter_test.rb @@ -1,10 +1,13 @@ require "test_helper" class FilterTest < ActiveSupport::TestCase - test "idempotent creation" do + test "persistence" do assert_difference "Filter.count", +1 do - filter = users(:david).filters.idempotent_create!(indexed_by: "most_boosted") - assert_equal filter, users(:david).filters.idempotent_create!(indexed_by: "most_boosted") + filter = users(:david).filters.persist!(indexed_by: "most_boosted") + + assert_changes "filter.reload.updated_at" do + assert_equal filter, users(:david).filters.persist!(indexed_by: "most_boosted") + end end end