public void FullShortGameTest()
        {
            var mockCircleRepository = new MockCircleRepository();
            var mockGameRepository   = new MockGameRepository();
            var mockPhraseRepository = new MockPhraseRepository();
            var mockRandomProvider   = new MockRandomProvider();

            mockCircleRepository.Circle = GetCircle();
            mockPhraseRepository.Phrase = "Short Game Test";
            const int indexOneThousand = 7;

            mockRandomProvider.Values.Add((0, 13), indexOneThousand);
            var startNewGamePresenter  = new Presenter <StartNewGame.ResponseModel>();
            var startNewGameInteractor = new StartNewGame(mockPhraseRepository, mockGameRepository);

            startNewGameInteractor.HandleRequest(new StartNewGame.RequestModel()
            {
                PlayerNames = new string[]
                {
                    "Alice", "Bob", "Charlie"
                }
            }, startNewGamePresenter);
            var spinCirclePresenter  = new Presenter <SpinCircle.ResponseModel>();
            var spinCircleInteractor = new SpinCircle(mockGameRepository, mockCircleRepository, mockRandomProvider);

            spinCircleInteractor.HandleRequest(new SpinCircle.RequestModel()
            {
                GameIdentifier = startNewGamePresenter.ResponseModel.GameIdentifier
            }, spinCirclePresenter);
            var pickLetterPresenter  = new Presenter <PickLetter.ResponseModel>();
            var pickLetterInteractor = new PickLetter(mockGameRepository);

            pickLetterInteractor.HandleRequest(new PickLetter.RequestModel()
            {
                GameIdentifier = startNewGamePresenter.ResponseModel.GameIdentifier,
                Letter         = 'e'
            }, pickLetterPresenter);
            var guessPhrasePresenter  = new Presenter <GuessPhrase.ResponseModel>();
            var guessPhraseInteractor = new GuessPhrase(mockGameRepository);

            guessPhraseInteractor.HandleRequest(new GuessPhrase.RequestModel()
            {
                GameIdentifier = startNewGamePresenter.ResponseModel.GameIdentifier,
                Guess          = "Short Game Test"
            }, guessPhrasePresenter);
            Assert.Equal("Short Game Test", guessPhrasePresenter.ResponseModel.Phrase);
            Assert.Equal("Alice", guessPhrasePresenter.ResponseModel.CurrentPlayerName);
            Assert.Equal(2000, guessPhrasePresenter.ResponseModel.Reward);
            Assert.True(mockGameRepository.Games.Single().Value.IsOver);
        }
        public void StartsNewGameCorrectly()
        {
            var mockPhraseRepository = new MockPhraseRepository();
            var mockGameRepository   = new MockGameRepository();
            var interactor           = new StartNewGame(mockPhraseRepository, mockGameRepository);

            mockPhraseRepository.Phrase       = "Small Test Phrase";
            mockGameRepository.GameIdentifier = Guid.Parse("00000000-0000-0000-0000-000000000001");
            var requestModel = new StartNewGame.RequestModel()
            {
                PlayerNames = new string[] { "Alice", "Bob", "Charlie" }
            };
            var presenter = new Presenter <StartNewGame.ResponseModel>();

            interactor.HandleRequest(requestModel, presenter);
            var responseModel = presenter.ResponseModel;

            Assert.Equal(Guid.Parse("00000000-0000-0000-0000-000000000001"), responseModel.GameIdentifier);
            Assert.Equal("_____ ____ ______", responseModel.Phrase);
            Assert.Equal("Alice", responseModel.CurrentPlayerName);
        }