feat: unify token message composition across sources

Remove alpha-first early return and build one rich message from all
available sources (spot/future/alpha) with conditional rows.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-04-26 17:19:59 +07:00
parent 2f875032f6
commit 88de029e14
2 changed files with 136 additions and 25 deletions
@@ -0,0 +1,42 @@
package commands
import "testing"
func TestBuildRichTokenMessageInput_AllSources(t *testing.T) {
in := buildRichTokenMessageInput(buildRichTokenMessageArgs{
Token: "ETH",
SpotPrice: 3245,
HasSpot: true,
FuturePrice: 3251,
FundingRate: 0.000123,
FundingTimeMs: 1740000000000,
HasFuture: true,
AlphaPrice: 3248,
HasAlpha: true,
Alpha24h: -3.21,
HasAlpha24h: true,
MarginAPRPercent: 7.665,
HasMarginAPR: true,
})
if !in.HasSpot || !in.HasFuture || !in.HasAlpha || !in.HasAlpha24h || !in.HasMarginAPR {
t.Fatalf("expected all source flags true: %+v", in)
}
}
func TestBuildRichTokenMessageInput_OnlyAlpha(t *testing.T) {
in := buildRichTokenMessageInput(buildRichTokenMessageArgs{
Token: "ABC",
HasAlpha: true,
AlphaPrice: 0.1234,
HasAlpha24h: true,
Alpha24h: 12.4,
})
if !in.HasAlpha || !in.HasAlpha24h {
t.Fatalf("expected alpha flags true: %+v", in)
}
if in.HasSpot || in.HasFuture {
t.Fatalf("did not expect spot/future flags true: %+v", in)
}
}