public void ExecuteShould_ThrowArgumentExceptionIfParametersAreNotProvided()
        {
            var providerMock = new Mock <IPostgresDataProvider>();
            var writerMock   = new Mock <IWriter>();
            var command      = new BuyTicketsCommand(providerMock.Object, writerMock.Object);

            Assert.Throws <NullReferenceException>(() => command.Execute(null));
        }
        public void ConstructorShould_ReturnInstanceOfBuyTicketCommandClass_WhenThePassedValuesAreValid()
        {
            var providerMock = new Mock <IPostgresDataProvider>();
            var writerMock   = new Mock <IWriter>();
            var command      = new BuyTicketsCommand(providerMock.Object, writerMock.Object);

            Assert.IsInstanceOf <BuyTicketsCommand>(command);
        }
        public void ExecuteShould_ClearTheScreenOneTIme()
        {
            var providerMock = new Mock <IPostgresDataProvider>();
            var writerMock   = new Mock <IWriter>();

            providerMock.Setup(p => p.Tickets.Find(It.IsAny <Expression <Func <Ticket, bool> > >())).Returns(new Ticket[] { It.IsAny <Ticket>() });

            var command = new BuyTicketsCommand(providerMock.Object, writerMock.Object);

            command.Execute(new List <string>()
            {
                "1"
            });

            writerMock.Verify(x => x.Clear(), Times.Once);
        }
        public void ExecuteShould_ReturnNoTicketsFoundIfIdDoesNotExistAndParameterIsProvided()
        {
            var ticketId     = "1";
            var providerMock = new Mock <IPostgresDataProvider>();
            var writerMock   = new Mock <IWriter>();

            providerMock.Setup(p => p.Tickets.Find(It.IsAny <Expression <Func <Ticket, bool> > >())).Returns(new Ticket[] { It.IsAny <Ticket>() });

            var command = new BuyTicketsCommand(providerMock.Object, writerMock.Object);

            string result = command.Execute(new List <string>()
            {
                ticketId
            });

            Assert.That(result.Contains($"Sorry no tickets with this Id: {ticketId} were found!"));
        }