mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-18 20:59:39 +02:00
Encapsulate enrichment actions, add tests
This commit is contained in:
parent
dd605a577e
commit
94a807c3c9
9 changed files with 149 additions and 71 deletions
79
test/models/concerns/enrichable_test.rb
Normal file
79
test/models/concerns/enrichable_test.rb
Normal file
|
@ -0,0 +1,79 @@
|
|||
require "test_helper"
|
||||
|
||||
class EnrichableTest < ActiveSupport::TestCase
|
||||
setup do
|
||||
@enrichable = accounts(:depository)
|
||||
end
|
||||
|
||||
test "can enrich multiple attributes" do
|
||||
assert_difference "DataEnrichment.count", 2 do
|
||||
@enrichable.enrich_attributes({ name: "Updated Checking", balance: 6_000 }, source: "plaid")
|
||||
end
|
||||
|
||||
assert_equal "Updated Checking", @enrichable.name
|
||||
assert_equal 6_000, @enrichable.balance.to_d
|
||||
end
|
||||
|
||||
test "can enrich a single attribute" do
|
||||
assert_difference "DataEnrichment.count", 1 do
|
||||
@enrichable.enrich_attribute(:name, "Single Update", source: "ai")
|
||||
end
|
||||
|
||||
assert_equal "Single Update", @enrichable.name
|
||||
end
|
||||
|
||||
test "can lock an attribute" do
|
||||
refute @enrichable.locked?(:name)
|
||||
|
||||
@enrichable.lock_attr!(:name)
|
||||
assert @enrichable.locked?(:name)
|
||||
end
|
||||
|
||||
test "can unlock an attribute" do
|
||||
@enrichable.lock_attr!(:name)
|
||||
assert @enrichable.locked?(:name)
|
||||
|
||||
@enrichable.unlock_attr!(:name)
|
||||
refute @enrichable.locked?(:name)
|
||||
end
|
||||
|
||||
test "can lock saved attributes" do
|
||||
@enrichable.name = "User Override"
|
||||
@enrichable.balance = 1_234
|
||||
@enrichable.save!
|
||||
|
||||
@enrichable.lock_saved_attributes!
|
||||
|
||||
assert @enrichable.locked?(:name)
|
||||
assert @enrichable.locked?(:balance)
|
||||
end
|
||||
|
||||
test "does not enrich locked attributes" do
|
||||
original_name = @enrichable.name
|
||||
|
||||
@enrichable.lock_attr!(:name)
|
||||
|
||||
assert_no_difference "DataEnrichment.count" do
|
||||
@enrichable.enrich_attribute(:name, "Should Not Change", source: "plaid")
|
||||
end
|
||||
|
||||
assert_equal original_name, @enrichable.reload.name
|
||||
end
|
||||
|
||||
test "enrichable? reflects lock state" do
|
||||
assert @enrichable.enrichable?(:name)
|
||||
|
||||
@enrichable.lock_attr!(:name)
|
||||
|
||||
refute @enrichable.enrichable?(:name)
|
||||
end
|
||||
|
||||
test "enrichable scope includes and excludes records based on lock state" do
|
||||
# Initially, the record should be enrichable for :name
|
||||
assert_includes Account.enrichable(:name), @enrichable
|
||||
|
||||
@enrichable.lock_attr!(:name)
|
||||
|
||||
refute_includes Account.enrichable(:name), @enrichable
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue