Tests (jetzt 48 grün): - DbContextMappingTests: sichert core_/mod_-Tabellennamen, Position-Composite-Key, TrackedTrader-Key, ClosedTradeRow nicht gemappt, AccountState.OpenPositions ignoriert. - PositionRepositoryTests: Live/Demo-Trennung, Upsert setzt Account+Demo-Flag, Update ohne Duplikat, DeleteLive, DropDemo. - MarketRepositoryTests: GetActive filtert Closed, Upsert-Update, FindByTokenId. - TradeLogRepositoryTests: GetRecent (Sortierung+Limit), Find-Predikat, Guid-Id unique. - MongoExportParserTests: String-Dezimale, null->"", fehlende Felder->Default, AssignedAccountIds-Array, Category-Default, Nicht-Array->leer. Refactor: - Mongo-Export-Parsing aus ConfigMigrator in testbare Klasse PolyTrader.Modules.CopyTrading.ConfigImport.MongoExportParser ausgelagert (ParseAccounts -> Account+Settings, ParseTraders). ConfigMigrator nutzt sie; --migrate-json end-to-end verifiziert (3/3/32). - PolyTrader.App.csproj: tests/** vom Default-Glob ausgeschlossen (App zog sonst die Testdateien mit rein -> doppelte AssemblyInfo/Xunit-Fehler). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
47 lines
1.4 KiB
C#
47 lines
1.4 KiB
C#
using System.Linq;
|
|
using PolyTrader.Core.Persistence.Ef;
|
|
using PolyTrader.Tests.TestSupport;
|
|
using PolyTraderSharp.Models;
|
|
using Xunit;
|
|
|
|
namespace PolyTrader.Tests
|
|
{
|
|
public class MarketRepositoryTests
|
|
{
|
|
private static EfMarketRepository NewRepo() =>
|
|
new(new InMemoryContextFactory<CoreDbContext>(o => new CoreDbContext(o)));
|
|
|
|
[Fact]
|
|
public void GetActive_returns_only_non_closed_markets()
|
|
{
|
|
var repo = NewRepo();
|
|
repo.Upsert(new MarketData { Id = "m1", Closed = false });
|
|
repo.Upsert(new MarketData { Id = "m2", Closed = true });
|
|
|
|
var active = repo.GetActive();
|
|
Assert.Single(active);
|
|
Assert.Equal("m1", active[0].Id);
|
|
}
|
|
|
|
[Fact]
|
|
public void Upsert_updates_existing_market()
|
|
{
|
|
var repo = NewRepo();
|
|
repo.Upsert(new MarketData { Id = "m1", Question = "old" });
|
|
repo.Upsert(new MarketData { Id = "m1", Question = "new" });
|
|
|
|
Assert.Equal("new", repo.GetById("m1")!.Question);
|
|
}
|
|
|
|
[Fact]
|
|
public void FindByTokenId_matches_within_clob_token_ids()
|
|
{
|
|
var repo = NewRepo();
|
|
repo.Upsert(new MarketData { Id = "m1", ClobTokenIds = "[\"abc\",\"def\"]" });
|
|
|
|
Assert.Equal("m1", repo.FindByTokenId("def")!.Id);
|
|
Assert.Null(repo.FindByTokenId("zzz"));
|
|
}
|
|
}
|
|
}
|