mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-18 20:59:39 +02:00
79 lines
2 KiB
Ruby
79 lines
2 KiB
Ruby
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
|