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);
        }
        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);
        }