Files
sure/test/jobs/sync_hourly_job_test.rb
Ethan 3b4ab735b0 Add (beta) CoinStats Crypto Wallet Integration with Balance and Transaction Syncing (#512)
* Feat(CoinStats): Scaffold implementation, not yet functional

* Feat(CoinStats): Implement crypto wallet balance and transactions

* Feat(CoinStats): Add tests, Minor improvements

* Feat(CoinStats): Utilize bulk fetch API endpoints

* Feat(CoinStats): Migrate strings to i8n

* Feat(CoinStats): Fix error handling in wallet link modal

* Feat(CoinStats): Implement hourly provider sync job

* Feat(CoinStats): Generate docstrings

* Fix(CoinStats): Validate API Key on provider update

* Fix(Providers): Safely handle race condition in merchance creation

* Fix(CoinStats): Don't catch system signals in account processor

* Fix(CoinStats): Preload before iterating accounts

* Fix(CoinStats): Add no opener / referrer to API dashboard link

* Fix(CoinStats): Use strict matching for symbols

* Fix(CoinStats): Remove dead code in transactions importer

* Fix(CoinStats): Avoid transaction fallback ID collisions

* Fix(CoinStats): Improve Blockchains fetch error handling

* Fix(CoinStats): Enforce NOT NULL constraint for API Key schema

* Fix(CoinStats): Migrate sync status strings to i8n

* Fix(CoinStats): Use class name rather than hardcoded string

* Fix(CoinStats): Use account currency rather than hardcoded USD

* Fix(CoinStats): Migrate from standalone to Provider class

* Fix(CoinStats): Fix test failures due to string changes
2026-01-07 15:59:04 +01:00

34 lines
980 B
Ruby

require "test_helper"
class SyncHourlyJobTest < ActiveJob::TestCase
test "syncs all active items for each hourly syncable class" do
mock_item = mock("coinstats_item")
mock_item.expects(:sync_later).once
mock_relation = mock("active_relation")
mock_relation.stubs(:find_each).yields(mock_item)
CoinstatsItem.expects(:active).returns(mock_relation)
SyncHourlyJob.perform_now
end
test "continues syncing other items when one fails" do
failing_item = mock("failing_item")
failing_item.expects(:sync_later).raises(StandardError.new("Test error"))
failing_item.stubs(:id).returns(1)
success_item = mock("success_item")
success_item.expects(:sync_later).once
mock_relation = mock("active_relation")
mock_relation.stubs(:find_each).multiple_yields([ failing_item ], [ success_item ])
CoinstatsItem.expects(:active).returns(mock_relation)
assert_nothing_raised do
SyncHourlyJob.perform_now
end
end
end