public ProviderFixture()
        {
            this.Interaction = new Mock <IInteractionProvider>();
            this.ResetInteraction();

            this.Provider = new InMemoryProvider();
            var time      = new SystemTimeProvider();
            var container = ContainerMock.SetupContainer(this.Provider, time, this.Interaction);
            var parser    = new CommandParser();

            this.Factory = new CommandFactory(container.container.Object, parser);
        }
        public void CommandFactory_Should_Create_Command_From_Input(string input, Type commandType)
        {
            // ARRANGE
            var            containers = ContainerMock.SetupContainer();
            var            parser     = new CommandParser();
            CommandFactory factory    = new CommandFactory(containers.container.Object, parser);

            // ACT
            var command = factory.Create(input);

            // ASSERT
            Assert.IsType(commandType, command);
            containers.nested.Verify(_ => _.GetInstance <ISocialCommand>(It.IsAny <string>()), Times.Once);

            if (commandType != typeof(NoOpCommand))
            {
                containers.nested.Verify(_ => _.Inject <IDictionary <string, string> >(It.IsAny <IDictionary <string, string> >()), Times.Once);
            }

            containers.nested.Verify(_ => _.Dispose(), Times.Once);
        }