using System; using System.Collections.Generic; using DanroJump.Prizes; using DanroJump.Settings; using DanroJump.UI.MainMenu; using NUnit.Framework; using UnityEngine; using UnityEngine.UIElements; namespace DanroJump.Tests.EditMode { public sealed class PrizeLevelsModalWindowTests { [Test] public void AddOrUpdateLevel_SavesPrizeLevelsJson() { var settings = new StubSettingsService(); var window = new PrizeLevelsModalWindow(CreateListRoot(), settings); window.AddOrUpdateLevel(120, PrizeRewardKind.Small); window.AddOrUpdateLevel(240, PrizeRewardKind.Big); var table = PrizeLevelTable.FromJson(settings.GetString(ServiceSettingsKeys.PrizeLevels)); Assert.That(settings.SaveCalls, Is.EqualTo(2)); Assert.That(table.Count, Is.EqualTo(2)); Assert.That(table.ResolveRewardKind(250), Is.EqualTo(PrizeRewardKind.Big)); } [Test] public void AddOrUpdateLevel_ReplacesExistingScore() { var settings = new StubSettingsService(); var window = new PrizeLevelsModalWindow(CreateListRoot(), settings); window.AddOrUpdateLevel(100, PrizeRewardKind.Small); window.AddOrUpdateLevel(100, PrizeRewardKind.None); var table = PrizeLevelTable.FromJson(settings.GetString(ServiceSettingsKeys.PrizeLevels)); Assert.That(table.Count, Is.EqualTo(1)); Assert.That(table.ResolveRewardKind(100), Is.EqualTo(PrizeRewardKind.None)); } [Test] public void Open_BuildsRowsForConfiguredLevels() { var table = new PrizeLevelTable(); table.Upsert(100, PrizeRewardKind.Small); table.Upsert(200, PrizeRewardKind.Big); var settings = new StubSettingsService(table.ToJson()); var root = CreateListRoot(); var window = new PrizeLevelsModalWindow(root, settings); window.Open(); var rowCount = 0; root.Query(className: "prize-level-row").ForEach(_ => rowCount++); Assert.That(rowCount, Is.EqualTo(2)); Assert.That(root.Q