mirror of
https://github.com/we-promise/sure.git
synced 2026-08-05 16:42:18 +00:00
* Add support for trading212 integration in investments sync * Respect Trading 212 history rate limits * Replace hex colors with design tokens * Changed withdrawal to withdraw * Address PR review feedback for Trading 212 integration - Replace all Rails.logger calls with DebugLogEntry.capture across syncer, importer, processor, provider, controller, and unlinking - Fix destroy action to surface unlink errors via DebugLogEntry - Replace hardcoded 'GBP' currency fallback with Current.family.currency - Replace hardcoded English status strings in Syncer with i18n - Add config/initializers/trading212.rb with DEBUG_RAW ENV toggle - Add comprehensive test coverage: item, account, data_helpers, holdings_processor, activities_processor, importer, syncer, and controller tests - Rewrite syncer and controller tests to match actual interfaces * Fix tests and bugs found during local test execution - Fix standard_ticker: empty string caused nil.upcase via [].first - Fix parse_date: DateTime < Date, so when Date caught DateTime first - Fix ActivitiesProcessor/HoldingsProcessor: missing instruments_map in DataHelpers caused NameError when processing dividends - Fix test: security fixture ticker collision with test data - Fix test: sync_status_summary i18n matching in assertions - Fix test: trading212_provider ConfigurationError test path - Fix test: controller invalid params needs Turbo-Frame header - Fix test: syncer test uses stubs instead of strict expects 116 tests, 257 assertions, 0 failures, 0 errors * Keep raw provider response bodies out of exception messages. * Fix Secrets leak into page HTML, prevents the API key/secret from appearing in the HTML source while keeping the "leave blank to keep existing" UX. * Address review findings: env gate, sync test, uniqueness test, destroy flow - Gate TRADING212_DEBUG_RAW behind Rails.env.local? so staging/production cannot accidentally enable raw payload logging - Assert SyncJob enqueue in sync controller test, not just redirect - Fix cross-item uniqueness test to actually use two different items - Remove rescue in destroy so unlink failures stop the flow (matching Brex/Akahu pattern) instead of proceeding to destroy_later silently * Add Trading212 tables to db/schema.rb for CI test database CI runs db:test:prepare which loads db/schema.rb, not migrations. Without these table definitions, fixture loading fails with PG::UndefinedTable: relation "trading212_accounts" does not exist. * Removed lint complaint * Register Trading212 in ProviderConnectionStatus::PROVIDERS Fixes CI failure: test_provider_registry_covers_syncable_family_provider_item_associations * Fixed bad merge --------- Signed-off-by: jdcdp <47483528+jdcdp@users.noreply.github.com> Co-authored-by: jdcdp <jdcdp@cdm4.net>
40 lines
2.0 KiB
Plaintext
40 lines
2.0 KiB
Plaintext
<%= turbo_frame_tag "modal" do %>
|
|
<%= render DS::Dialog.new do |dialog| %>
|
|
<% dialog.with_header(title: t(".title")) %>
|
|
|
|
<% dialog.with_body do %>
|
|
<% if @available_trading212_accounts.blank? %>
|
|
<div class="p-4 text-sm text-secondary">
|
|
<p class="mb-2"><%= t(".no_accounts_available") %></p>
|
|
<ul class="list-disc list-inside space-y-1">
|
|
<li><%= t(".run_sync_hint") %></li>
|
|
<li><%= t(".wait_for_sync") %></li>
|
|
</ul>
|
|
</div>
|
|
<% else %>
|
|
<%= form_with url: link_existing_account_trading212_items_path, method: :post, data: { turbo_frame: "_top" }, class: "space-y-4" do %>
|
|
<%= hidden_field_tag :account_id, @account.id %>
|
|
<div class="space-y-2 max-h-64 overflow-auto">
|
|
<% @available_trading212_accounts.each do |t212_account| %>
|
|
<label class="flex items-center gap-3 p-2 rounded border border-secondary hover:border-primary cursor-pointer">
|
|
<%= radio_button_tag :trading212_account_id, t212_account.id, false %>
|
|
<div class="flex flex-col">
|
|
<span class="text-sm text-primary font-medium"><%= t212_account.name.presence || t212_account.trading212_account_id %></span>
|
|
<span class="text-xs text-secondary">
|
|
<%= t212_account.currency %> • <%= t(".balance") %>: <%= number_to_currency((t212_account.current_balance || 0), unit: Money::Currency.new(t212_account.currency.presence || Current.family.currency).symbol) %>
|
|
</span>
|
|
</div>
|
|
</label>
|
|
<% end %>
|
|
</div>
|
|
|
|
<div class="flex items-center justify-end gap-2">
|
|
<%= render DS::Button.new(text: t(".link"), variant: :primary, icon: "link-2", type: :submit) %>
|
|
<%= render DS::Link.new(text: t(".cancel"), variant: :secondary, href: accounts_path, data: { turbo_frame: "_top" }) %>
|
|
</div>
|
|
<% end %>
|
|
<% end %>
|
|
<% end %>
|
|
<% end %>
|
|
<% end %>
|