public void ReadTodoStateNextStateIsNull()
 {
     IConsole mockConsole = Substitute.For<IConsole>();
     ILog mockLog = Substitute.For<ILog>();
     ITodoList mockTodoList = Substitute.For<ITodoList>();
     ReadTodoState state = new ReadTodoState(mockConsole, mockLog, mockTodoList);
     Assert.IsNull(state.GetNextState());
 }
        public void ReadTodoStateReturnsDisplayLogHeaderStateStateWhenReadingBlankString()
        {
            IConsole mockConsole = Substitute.For<IConsole>();
            ILog mockLog = Substitute.For<ILog>();
            ITodoList mockTodoList = Substitute.For<ITodoList>();
            ReadTodoState state = new ReadTodoState(mockConsole, mockLog, mockTodoList);
            state.Execute();

            Assert.IsInstanceOfType(state.GetNextState(), typeof(DisplayLogHeaderState));
        }
        public void ReadTodoStateReadsConsoleWhenExecuted()
        {
            IConsole mockConsole = Substitute.For<IConsole>();
            ILog mockLog = Substitute.For<ILog>();
            ITodoList mockTodoList = Substitute.For<ITodoList>();
            ReadTodoState state = new ReadTodoState(mockConsole, mockLog, mockTodoList);
            state.Execute();

            mockConsole.Received(1).GetInput();
        }
        public void ReadTodoStateOutputsPromptCharacter()
        {
            IConsole mockConsole = Substitute.For<IConsole>();
            ILog mockLog = Substitute.For<ILog>();
            ITodoList mockTodoList = Substitute.For<ITodoList>();
            ReadTodoState state = new ReadTodoState(mockConsole, mockLog, mockTodoList);
            state.Execute();

            mockConsole.Received(1).Output(">");
        }
        public void ReadTodoStateReturnsCommandStateWhenReadingCommand()
        {
            IConsole mockConsole = Substitute.For<IConsole>();
            mockConsole.GetInput().Returns(">COMMANDSTRING");

            ILog mockLog = Substitute.For<ILog>();
            ITodoList mockTodoList = Substitute.For<ITodoList>();
            ReadTodoState state = new ReadTodoState(mockConsole, mockLog, mockTodoList);
            state.Execute();

            State nextState = state.GetNextState();
            Assert.IsInstanceOfType(nextState, typeof(CommandTodoState));
            Assert.AreEqual("COMMANDSTRING", nextState.Input);
        }
        public void ReadTodoStateReturnsStoreStateWhenReadingPlainText()
        {
            const string cConsoleInput = "This is plain text";
            IConsole mockConsole = Substitute.For<IConsole>();
            mockConsole.GetInput().Returns(cConsoleInput);

            ILog mockLog = Substitute.For<ILog>();
            ITodoList mockTodoList = Substitute.For<ITodoList>();
            ReadTodoState state = new ReadTodoState(mockConsole, mockLog, mockTodoList);
            state.Execute();

            State nextState = state.GetNextState();
            Assert.IsInstanceOfType(nextState, typeof(StoreTodoState));
            Assert.AreEqual(cConsoleInput, nextState.Input);
        }