private AlexaRequestHandlerStrategyFactory BuildTestAlexaRequestHandlerStrategyFactory()
        {
            var wordService       = new Mock <IWordService>();
            var dictionaryService = new Mock <IDictionaryService>();
            var cacheService      = new Mock <ICacheService>();
            var availableServices = new Mock <IEnumerable <IAlexaRequestHandlerStrategy> > ();

            var alexaRequestHandlerStrategyFactory = new AlexaRequestHandlerStrategyFactory(availableServices.Object);

            return(alexaRequestHandlerStrategyFactory);
        }
        public void CreateAlexaRequestHandlerStrategyTest_SessionEndedRequestHandlerStrategy()
        {
            // arrange
            AlexaRequestHandlerStrategyFactory alexaRequestHandlerStrategyFactory = BuildTestAlexaRequestHandlerStrategyFactory();

            var alexaRequestPayload = AlexaSkillProjectTestHelpers.GetAlexaRequestPayload("AlexaRequestPayloadTest.json");

            alexaRequestPayload.Request.Type = "SessionEndedRequest";

            // act
            var strategyHandler = alexaRequestHandlerStrategyFactory.CreateAlexaRequestHandlerStrategy(alexaRequestPayload);

            // assert
            Assert.AreEqual(typeof(SessionEndedRequestHandlerStrategy), strategyHandler.GetType());
        }
        public void CreateAlexaRequestHandlerStrategyTest_IntentRequestHandlerStrategy_WordOfTheDayIntentHandlerStrategy()
        {
            // arrange
            AlexaRequestHandlerStrategyFactory alexaRequestHandlerStrategyFactory = BuildTestAlexaRequestHandlerStrategyFactory();

            var alexaRequestPayload = AlexaSkillProjectTestHelpers.GetAlexaRequestPayload("AlexaRequestPayloadTest.json");

            alexaRequestPayload.Request.Type        = "IntentRequest";
            alexaRequestPayload.Request.Intent.Name = "WordOfTheDayIntent";

            // act
            var strategyHandler = alexaRequestHandlerStrategyFactory.CreateAlexaRequestHandlerStrategy(alexaRequestPayload);

            // assert
            Assert.AreEqual(typeof(WordOfTheDayIntentHandlerStrategy), strategyHandler.GetType());
        }
        public void CreateAlexaRequestHandlerStrategyTest_LaunchRequestHandlerStrategy()
        {
            // arrange
            IList <IAlexaRequestHandlerStrategy> availableStrategies = new List <IAlexaRequestHandlerStrategy>();
            AlexaRequestHandlerStrategyFactory   alexaRequestHandlerStrategyFactory = BuildTestAlexaRequestHandlerStrategyFactory();

            var alexaRequestPayload = AlexaSkillProjectTestHelpers.GetAlexaRequestPayload("AlexaRequestPayloadTest.json");

            alexaRequestPayload.Request.Type = "LaunchRequest";

            // act
            var strategyHandler = alexaRequestHandlerStrategyFactory.CreateAlexaRequestHandlerStrategy(alexaRequestPayload);

            // assert
            Assert.AreEqual(typeof(LaunchRequestHandlerStrategy), strategyHandler.GetType());
        }
        public void CreateAlexaRequestHandlerStrategyTest_IntentRequestHandlerStrategy_NullIntentHandlerStrategy()
        {
            // arrange
            AlexaRequestHandlerStrategyFactory alexaRequestHandlerStrategyFactory = BuildTestAlexaRequestHandlerStrategyFactory();

            var alexaRequestPayload = AlexaSkillProjectTestHelpers.GetAlexaRequestPayload("AlexaRequestPayloadTest.json");

            alexaRequestPayload.Request.Type        = "IntentRequest";
            alexaRequestPayload.Request.Intent.Name = "DoesNotExist";

            // act
            var strategyHandler = alexaRequestHandlerStrategyFactory.CreateAlexaRequestHandlerStrategy(alexaRequestPayload);

            // assert
            Assert.IsNull(strategyHandler);
        }
        private AlexaRequestHandlerStrategyFactory BuildTestAlexaRequestHandlerStrategyFactory()
        {
            var wordService       = new Mock <IWordService>().Object;
            var dictionaryService = new Mock <IDictionaryService>().Object;
            var cacheService      = new Mock <ICacheService>().Object;
            var availableServices = new Mock <IEnumerable <IAlexaRequestHandlerStrategy> > ();

            List <IAlexaRequestHandlerStrategy> availableStrategies = new List <IAlexaRequestHandlerStrategy>
            {
                new LaunchRequestHandlerStrategy(),
                new SayWordIntentHandlerStrategy(cacheService),
                new AnotherWordIntentHandlerStrategy(wordService, dictionaryService, cacheService),
                new CancelIntentHandlerStrategy(),
                new HelpIntentHandlerStrategy(),
                new SessionEndedRequestHandlerStrategy(),
                new StopIntentHandlerStrategy(),
                new WordOfTheDayIntentHandlerStrategy(wordService, dictionaryService, cacheService)
            };

            var alexaRequestHandlerStrategyFactory = new AlexaRequestHandlerStrategyFactory(availableStrategies);

            return(alexaRequestHandlerStrategyFactory);
        }