public void SkipSystem_With_System_Not_In_Expedition_Does_Nothing() { TestCommunicator communicator = CreateCommunicator(); Navigator navigator = CreateNavigator(); PlayerStatusRepository playerStatus = CreatePlayerStatusRepository(); var skipSystemPhrases = TestPhraseBuilder.Build <SkipSystemPhrases>(); var scansRemainingPhrases = TestPhraseBuilder.Build <ScansRemainingPhrases>(); SkipSystemCommand sut = new SkipSystemCommand(communicator, navigator, playerStatus, skipSystemPhrases, scansRemainingPhrases); Celestial celestial = Build.A.Celestial.ThatHasNotBeenScanned(); StarSystem firstSystem = Build.A.StarSystem.WithCelestials(celestial, celestial, celestial); StarSystem nextSystem = Build.A.StarSystem.WithCelestials(celestial, celestial, celestial); List <StarSystem> systems = Build.Many.StarSystems(firstSystem, nextSystem); navigator.PlanExpedition(systems); playerStatus.SetLocation("Test"); TestEvent testEvent = Build.An.Event.WithEvent(sut.SupportedCommand); sut.Handle(testEvent); List <StarSystem> storedSystems = navigator.GetAllExpeditionSystems(); storedSystems.All(s => s.Scanned == false).Should().BeTrue(); storedSystems.SelectMany(s => s.Celestials).All(s => s.Scanned == false).Should().BeTrue(); navigator.GetNextSystem().ShouldBeEquivalentTo(firstSystem); }
public void RescanSystem_With_System_In_Expedition_Marks_System_As_Unscanned() { TestCommunicator communicator = CreateCommunicator(); Navigator navigator = CreateNavigator(); PlayerStatusRepository playerStatus = CreatePlayerStatusRepository(); var rescanSystemPhrases = TestPhraseBuilder.Build <RescanSystemPhrases>(); var scansRemainingPhrases = TestPhraseBuilder.Build <ScansRemainingPhrases>(); RescanSystemCommand sut = new RescanSystemCommand(communicator, navigator, playerStatus, rescanSystemPhrases, scansRemainingPhrases); Celestial scannedCelestial = Build.A.Celestial.ThatHasBeenScanned(); Celestial unscannedCelestial = Build.A.Celestial.ThatHasNotBeenScanned(); StarSystem firstSystem = Build.A.StarSystem.WithCelestials(scannedCelestial, scannedCelestial, scannedCelestial); StarSystem nextSystem = Build.A.StarSystem.WithCelestials(unscannedCelestial, unscannedCelestial, unscannedCelestial); List <StarSystem> systems = Build.Many.StarSystems(firstSystem); navigator.PlanExpedition(systems); playerStatus.SetLocation(firstSystem.Name); TestEvent testEvent = Build.An.Event.WithEvent(sut.SupportedCommand); sut.Handle(testEvent); List <StarSystem> storedSystems = navigator.GetAllExpeditionSystems(); storedSystems.All(s => s.Scanned == false).Should().BeTrue(); storedSystems.SelectMany(s => s.Celestials).All(s => s.Scanned == false).Should().BeTrue(); navigator.GetNextSystem().Name.ShouldBeEquivalentTo(firstSystem.Name); communicator.MessagesCommunicated.Single().Should().Be(rescanSystemPhrases.SystemUnscanned.Single()); }
public void SkipSystem_With_System_In_Expedition_Marks_System_As_Scanned() { TestCommunicator communicator = CreateCommunicator(); Navigator navigator = CreateNavigator(); PlayerStatusRepository playerStatus = CreatePlayerStatusRepository(); var skipSystemPhrases = TestPhraseBuilder.Build <SkipSystemPhrases>(); var scansRemainingPhrases = TestPhraseBuilder.Build <ScansRemainingPhrases>(); SkipSystemCommand sut = new SkipSystemCommand(communicator, navigator, playerStatus, skipSystemPhrases, scansRemainingPhrases); Celestial celestial = Build.A.Celestial.ThatHasNotBeenScanned(); StarSystem currentSystem = Build.A.StarSystem.WithCelestials(celestial, celestial, celestial); StarSystem nextSystem = Build.A.StarSystem.WithCelestials(celestial, celestial, celestial); List <StarSystem> systems = Build.Many.StarSystems(currentSystem, nextSystem); navigator.PlanExpedition(systems); playerStatus.SetLocation(currentSystem.Name); TestEvent testEvent = Build.An.Event.WithEvent(sut.SupportedCommand); sut.Handle(testEvent); StarSystem storedSystem = navigator.GetSystem(currentSystem.Name); storedSystem.Scanned.Should().BeTrue(); storedSystem.Celestials.All(c => c.Scanned).Should().BeTrue(); navigator.GetNextSystem().ShouldBeEquivalentTo(nextSystem); }
public void ScanEvent_WithCelestialsRemaining_ShouldUpdateDataStore() { TestPhraseBuilder.Build <CelestialScanPhrases>(); IDataStore <StarSystemDocument> dataStore = CreateDataStore(); Navigator navigator = CreateNavigator(dataStore); PlayerStatusRepository playerStatus = CreatePlayerStatusRepository(); CelestialScanCommand sut = CreateSut(navigator, playerStatus, _phrases); Celestial celestial = Build.A.Celestial; Celestial nextCelestial = Build.A.Celestial; StarSystem currentSystem = Build.A.StarSystem.WithCelestials(celestial, nextCelestial); List <StarSystem> starSystems = Build.Many.StarSystems(currentSystem); navigator.PlanExpedition(starSystems); playerStatus.SetLocation(currentSystem.Name); TestEvent testEvent = Build.An.Event.WithEvent(sut.SupportedCommand) .WithPayload(_payloadKey, celestial.Name); sut.Handle(testEvent); dataStore.FindOne(s => s.Name == currentSystem.Name).Celestials.Single(c => c.Name == celestial.Name).Scanned.Should().BeTrue(); dataStore.FindOne(s => s.Celestials.Any(c => c.Scanned == false)).Name.Should().Be(currentSystem.Name); }
public ScansRemainingCommandTests() { _communicator = CreateCommunicator(); _navigator = CreateNavigator(); _playerStatus = CreatePlayerStatusRepository(); _scansRemainingPhrases = TestPhraseBuilder.Build <ScansRemainingPhrases>(); _sut = new ScansRemainingCommand(_communicator, _navigator, _playerStatus, _scansRemainingPhrases); }
public NextScanCommandTests() { _phrases = TestPhraseBuilder.Build <NextScanPhrases>(); _communicator = CreateCommunicator(); _playerStatus = CreatePlayerStatusRepository(); _navigator = CreateNavigator(); _sut = new NextScanCommand(_communicator, _navigator, _playerStatus, _phrases); _testEvent = Build.An.Event.WithEvent(_sut.SupportedCommand); }
public void GameLoad_Should_StoreFuelCapacity() { TestCommunicator communicator = CreateCommunicator(); DockSRVPhrases phrases = TestPhraseBuilder.Build <DockSRVPhrases>(); DockSRVCommand sut = new DockSRVCommand(communicator, phrases); TestEvent loadEvent = Build.An.Event.WithEvent("DockSRV"); sut.Handle(loadEvent); communicator.MessagesCommunicated.Single().Should().Be(phrases.Phrases.Single()); }
public void DockSRV_Command_Should_Not_Communicate_Phrase_When_Disabled() { var preferences = new Preferences() { EnableSRVCommands = false }; TestCommunicator communicator = CreateCommunicator(); DockSRVPhrases phrases = TestPhraseBuilder.Build <DockSRVPhrases>(); DockSRVCommand sut = new DockSRVCommand(communicator, phrases, preferences); TestEvent loadEvent = Build.An.Event.WithEvent("DockSRV"); sut.Handle(loadEvent); communicator.MessagesCommunicated.Single().Should().BeEmpty(); }
public void GameLoad_Should_StoreFuelCapacity() { TestCommunicator communicator = CreateCommunicator(); PlayerStatusRepository repository = CreatePlayerStatusRepository(); GameLoadPhrases phrases = TestPhraseBuilder.Build <GameLoadPhrases>(); GameLoadCommand sut = new GameLoadCommand(communicator, repository, phrases); double fuelCapacity = 100; TestEvent loadEvent = Build.An.Event.WithEvent("LoadGame").WithPayload("FuelCapacity", fuelCapacity); sut.Handle(loadEvent); repository.FuelCapacity.Should().Be(fuelCapacity); communicator.MessagesCommunicated.Single().Should().Be(phrases.Generic.Single()); }
public void ProgressCommand_Communicates_Progress() { TestCommunicator communicator = CreateCommunicator(); Navigator navigator = CreateNavigator(); PlayerStatusRepository playerStatus = CreatePlayerStatusRepository(); ProgressPhrases phrases = TestPhraseBuilder.Build <ProgressPhrases>(); ProgressCommand sut = new ProgressCommand(communicator, navigator, playerStatus, phrases); Celestial celestial = Build.A.Celestial; List <StarSystem> systems = Build.A.StarSystem.WithCelestials(celestial).InAList(); navigator.PlanExpedition(systems); TestEvent testEvent = Build.An.Event.WithEvent(sut.SupportedCommand); sut.Handle(testEvent); communicator.MessagesCommunicated[0].Should().Be(phrases.Progress.Single()); communicator.MessagesCommunicated[1].Should().Be(phrases.SystemsScanned.Single()); communicator.MessagesCommunicated[2].Should().Be(phrases.CreditsEarned.Single()); }
public void RescanSystem_With_System_Not_In_Expedition_Does_Nothing() { TestCommunicator communicator = CreateCommunicator(); Navigator navigator = CreateNavigator(); PlayerStatusRepository playerStatus = CreatePlayerStatusRepository(); var rescanSystemPhrases = TestPhraseBuilder.Build <RescanSystemPhrases>(); var scansRemainingPhrases = TestPhraseBuilder.Build <ScansRemainingPhrases>(); RescanSystemCommand sut = new RescanSystemCommand(communicator, navigator, playerStatus, rescanSystemPhrases, scansRemainingPhrases); Celestial celestial = Build.A.Celestial.ThatHasBeenScanned(); List <StarSystem> systems = Build.A.StarSystem.WithCelestial(celestial).InAList(); navigator.PlanExpedition(systems); playerStatus.SetLocation("Test"); TestEvent testEvent = Build.An.Event.WithEvent(sut.SupportedCommand); sut.Handle(testEvent); navigator.GetAllExpeditionSystems().ShouldAllBeEquivalentTo(systems); communicator.MessagesCommunicated.Single().Should().Be(scansRemainingPhrases.SkipSystem.Single()); }
public void GetNextSystem_Gets_Original_Destination_After_Expedition_Is_Done() { TestCommunicator communicator = CreateCommunicator(); Navigator navigator = CreateNavigator(); TestGalaxyMap galaxyMap = new TestGalaxyMap(); PlayerStatusRepository repo = CreatePlayerStatusRepository(); FindNextSystemCommand sut = new FindNextSystemCommand(communicator, navigator, galaxyMap, TestPhraseBuilder.Build <FindNextSystemPhrases>(), repo); string originalDestination = "OriginalDestination"; repo.SetDestination(originalDestination); TestEvent testEvent = Build.An.Event.WithEvent(sut.SupportedCommand); Celestial celestial = Build.A.Celestial.ThatHasBeenTotallyScanned(); StarSystem system = Build.A.StarSystem.WithCelestial(celestial); navigator.PlanExpedition(new[] { system }); sut.Handle(testEvent); galaxyMap.Systems.Single().Should().Be(originalDestination); }
public void GetNextSystem_Communicates_NextSystem() { TestCommunicator communicator = CreateCommunicator(); Navigator navigator = CreateNavigator(); TestGalaxyMap galaxyMap = new TestGalaxyMap(); FindNextSystemCommand sut = new FindNextSystemCommand(communicator, navigator, galaxyMap, TestPhraseBuilder.Build <FindNextSystemPhrases>(), CreatePlayerStatusRepository()); TestEvent testEvent = Build.An.Event.WithEvent(sut.SupportedCommand); Celestial celestial = Build.A.Celestial.ThatHasNotBeenScanned(); StarSystem system = Build.A.StarSystem.WithCelestial(celestial); navigator.PlanExpedition(new[] { system }); sut.Handle(testEvent); galaxyMap.Systems.Single().Should().Be(system.Name); }
protected T CreatePhrases <T>() where T : class, new() => TestPhraseBuilder.Build <T>();