using Fluxor; using KoogleApp.Games; using KoogleApp.Games.Training; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using FluentAssertions; using KoogleApp.Store.Game.ThrowPanel; using Moq; namespace Koogle.Tests.GameTraining { public class GameTrainingServiceTest { private readonly ServiceProvider _serviceProvider; private readonly Mock _mockDispatcher; public GameTrainingServiceTest() { var services = new ServiceCollection(); // Deine Services registrieren wie in Program.cs services.AddScoped(); //services.AddSingleton(new ConfigurationBuilder() // .AddInMemoryCollection(new Dictionary // { // ["Setting"] = "TestValue" // }) // .Build()); _serviceProvider = services.BuildServiceProvider(); _mockDispatcher = new Mock(); } [Fact] public void ServiceWorksCorrectly() { // Arrange var service = _serviceProvider.GetRequiredService(); // Act & Assert var result = service.InitGameModel(GetSetup(), _mockDispatcher.Object) as TrainingGameModel; result.Throws.Count.Should().Be(3); } private IGameSetupModel GetSetup() { return new TrainingSetupState() { DayId = 1, ThrowMode = ThrowMode.Reposition, ThrowsPerRound = 3, Participants = new int[] { 1, 2, 3 }, ParticipantsMode = ParticipantsMode.GameLogic, KnownGameType = "Training" }; } } }