public async Task CreateTicketCommand_WithValidInput_ShouldAddMessageToConversationMessagesAndReturnTicketId()
        {
            var defaultUserId = await RunAsDefaultUserAsync();

            var createdOrganizationId = await SeedSampleOrganization();

            var command = new CreateTicketCommand
            {
                OrganizationId = createdOrganizationId,
                Title          = "Test Ticket Title",
                Message        = "First Ticket"
            };

            var ticketId = await SendAsync(command);

            var ticket = await FindAsync <Conversation>(ticketId);

            ticket.Should().NotBeNull();
            ticket.Title.Should().Be("Test Ticket Title");
            ticket.Id.Should().Be(ticketId);

            var context             = GetContext();
            var conversationMessage = await context.ConversationMessages.FirstOrDefaultAsync(x => x.ConversationId == ticketId && x.UserId == defaultUserId);

            conversationMessage.Should().NotBeNull();
            conversationMessage.Message.Should().Be("First Ticket");
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Post([FromBody] CreateTicketModel model)
        {
            if (model == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var id = Guid.NewGuid();

            var command = new CreateTicketCommand
            {
                Id           = id,
                FlightNumber = model.FlightNumber,
                Price        = model.Price
            };

            await _commandBus.ExecuteAsync(command);

            return(Ok());
        }
Ejemplo n.º 3
0
        public void ThrowArgumentOutOfRangeException_WhenJourneyIsNotInDatabase(string journeyParam, string administrativeCostsParam)
        {
            // Arrange
            string        journeyID           = journeyParam;
            string        administrativeCosts = administrativeCostsParam;
            List <string> parameters          = new List <string>()
            {
                journeyID,
                administrativeCosts
            };

            var journeyMock = new Mock <IJourney>();

            List <ITicket>  tickets  = new List <ITicket>();
            List <IJourney> journeys = new List <IJourney>();

            journeys.Add(journeyMock.Object);


            var databaseMock = new Mock <IDatabase>();
            var factoryMock  = new Mock <ITravellerFactory>();
            var ticketMock   = new Mock <ITicket>();

            databaseMock.SetupGet(m => m.Tickets).Returns(tickets);
            databaseMock.SetupGet(m => m.Journeys).Returns(journeys);

            factoryMock.Setup(m => m.CreateTicket(journeyMock.Object, It.IsAny <decimal>())).Returns(ticketMock.Object);

            var command = new CreateTicketCommand(factoryMock.Object, databaseMock.Object);

            // Act & Assert
            Assert.ThrowsException <ArgumentOutOfRangeException>(() => command.Execute(parameters));
        }
        public ActionResult <Ticket> CreateTicket([FromBody] Ticket ticket)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                var empireQueue    = _unitOfWork.EmpireQueues.Find(eq => eq.TicketCategoryId == ticket.TicketCategoryId).Single();
                var ticketCategory = _unitOfWork.TicketCategories.Get(ticket.TicketCategoryId);
                int lastNo         = empireQueue.LastIssuedTicketNumber.GetValueOrDefault();

                ticket.TicketStatus = TicketStatus.Waiting;
                ticket.Number       = GetNextNumber(lastNo, ticketCategory.FirstTicketNumber, ticketCategory.LastTicketNumber);
                ticket.CreatedDate  = DateTime.Now;

                _unitOfWork.Tickets.Create(ticket);

                empireQueue.LastIssuedTicketNumber = ticket.Number;
                _unitOfWork.EmpireQueues.Update(empireQueue);

                var createTicketCommand = new CreateTicketCommand(ticket);
                _unitOfWork.SourceEvent(createTicketCommand);

                PrintTicketAsPdf(ticket);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            return(Ok(ticket));
        }
Ejemplo n.º 5
0
        public void CreateNewTicket(TicketInputModel model)
        {
            var cmd = new CreateTicketCommand(model.Title, model.Description, model.Status, model.Priority, model.Type,
                                              model.DueDate, model.ResolutionComments, model.RequestorLoginName, model.AssignedToLoginName, model.Category);

            _bus.Send(cmd);
        }
        public void ThrowsArgumentException_When_ArgumentIsNull()
        {
            this.createTicketCommand = new CreateTicketCommand(this.travelerFactoryMock.Object,
                                                               this.dataStoreMock.Object, this.commandConstants);

            Assert.That(() => createTicketCommand.Execute(null), Throws.ArgumentException);
        }
        public void ThrowsArgumentException_When_JourneyDoesNotExistInDataStore()
        {
            var journeyId = 999;
            var args      = new List <string> {
                journeyId.ToString(), "21"
            };

            var journyStub1 = new Mock <IJourney>();
            var journyStub2 = new Mock <IJourney>();
            var journyStub3 = new Mock <IJourney>();

            var dataStoredJourneys = new List <IJourney>
            {
                journyStub1.Object,
                journyStub2.Object,
                journyStub3.Object
            };

            this.dataStoreMock
            .Setup(x => x.Journeys)
            .Returns(dataStoredJourneys);

            this.createTicketCommand = new CreateTicketCommand(this.travelerFactoryMock.Object,
                                                               this.dataStoreMock.Object, this.commandConstants);


            Assert.That(() => this.createTicketCommand.Execute(args), Throws.ArgumentException);
        }
        public void CallCreteTicketFromTravellerFactory_When_PassedValidArgumentLists()
        {
            var args = new List <string> {
                "0", "21"
            };

            var journyStub = new Mock <IJourney>();

            this.travelerFactoryMock
            .Setup(x => x.CreateTicket(It.IsAny <IJourney>(), It.IsAny <decimal>()));

            this.dataStoreMock
            .Setup(x => x.Journeys)
            .Returns(new List <IJourney> {
                journyStub.Object
            });

            this.createTicketCommand =
                new CreateTicketCommand(this.travelerFactoryMock.Object,
                                        this.dataStoreMock.Object, this.commandConstants);

            createTicketCommand.Execute(args);

            this.travelerFactoryMock
            .Verify(x => x.CreateTicket(It.IsAny <IJourney>(), It.IsAny <decimal>()), Times.Once);
        }
Ejemplo n.º 9
0
        public void ReturnSuccessMessage_WhenDataIsValid()
        {
            // Arrange
            var dataMock    = new Mock <IData>();
            var factoryMock = new Mock <ITravellerFactory>();

            var executeCommand  = new CreateTicketCommand(dataMock.Object, factoryMock.Object);
            var validParameters = new List <string> {
                "0", "30"
            };

            var journeyMock    = new Mock <IJourney>();
            var listOfJourneys = new List <IJourney>()
            {
                journeyMock.Object
            };

            dataMock.Setup(x => x.Journeys).Returns(listOfJourneys);

            var ticketMock    = new Mock <ITicket>();
            var listOfTickets = new List <ITicket>()
            {
                ticketMock.Object
            };

            dataMock.Setup(x => x.Tickets).Returns(listOfTickets);

            // Act
            var result = executeCommand.Execute(validParameters);

            //Assert
            StringAssert.Contains(result, "was created.");
        }
Ejemplo n.º 10
0
        public void CreateTicketAndAddItToDatabase_WhenParametersAreCorrect()
        {
            //Arrange
            var databaseMock         = new Mock <IDatabase>();
            var travellerFactoryMock = new Mock <ITravellerFactory>();
            var ticketMock           = new Mock <ITicket>();
            var journeyMock          = new Mock <IJourney>();

            databaseMock.Setup(m => m.Journeys.Add(journeyMock.Object));

            List <ITicket> tickets = new List <ITicket>();

            databaseMock.SetupGet(m => m.Tickets).Returns(tickets);
            //databaseMock.Object.Tickets.
            List <string> commandLine = new List <string>()
            {
                "0",
                "30"
            };

            travellerFactoryMock.Setup(m => m.CreateTicket(journeyMock.Object, 0)).Returns(ticketMock.Object);
            var command = new CreateTicketCommand(databaseMock.Object, travellerFactoryMock.Object);

            //Act
            command.Execute(commandLine);

            //Assert
            Assert.AreEqual(1, databaseMock.Object.Tickets.Count);
            Assert.AreEqual(ticketMock.Object, databaseMock.Object.Tickets.First());
        }
Ejemplo n.º 11
0
        public void CreateTicket_WhenDataIsValid()
        {
            // Arrange
            var dataMock    = new Mock <IData>();
            var factoryMock = new Mock <ITravellerFactory>();

            var executeCommand  = new CreateTicketCommand(dataMock.Object, factoryMock.Object);
            var validParameters = new List <string> {
                "0", "30"
            };

            var journeyMock    = new Mock <IJourney>();
            var listOfJourneys = new List <IJourney>()
            {
                journeyMock.Object
            };

            dataMock.Setup(x => x.Journeys).Returns(listOfJourneys);

            var ticketMock    = new Mock <ITicket>();
            var listOfTickets = new List <ITicket>()
            {
                ticketMock.Object
            };

            dataMock.Setup(x => x.Tickets).Returns(listOfTickets);

            factoryMock.Setup(x => x.CreateTicket(journeyMock.Object, 30.00M)).Callback(() => listOfJourneys.Add(journeyMock.Object));

            // Act
            var result = executeCommand.Execute(validParameters);

            //Assert
            factoryMock.Verify(x => x.CreateTicket(journeyMock.Object, 30.00M), Times.Once);
        }
Ejemplo n.º 12
0
        public void ShouldThrowExceptions_WhenParametersAreIncorrect()
        {
            //Arrange
            string wrongAdministrativeCosts = "1";
            string wrongJourney             = "1";

            List <string> parameters = new List <string>
            {
                wrongJourney,
                wrongAdministrativeCosts
            };

            var             travellerFactoryMock = new Mock <ITravellerFactory>();
            var             databaseMock         = new Mock <ITravellerDatabase>();
            var             journeyMock          = new Mock <IJourney>();
            var             ticketMock           = new Mock <ITicket>();
            List <IJourney> journeys             = new List <IJourney>();

            journeys.Add(journeyMock.Object);
            List <ITicket> tickets = new List <ITicket>();

            databaseMock.SetupGet(x => x.Journeys).Returns(journeys);
            databaseMock.SetupGet(x => x.Tickets).Returns(tickets);
            travellerFactoryMock.Setup(x => x.CreateTicket(It.IsAny <IJourney>(), It.IsAny <decimal>())).Returns(ticketMock.Object);

            CreateTicketCommand command = new CreateTicketCommand(databaseMock.Object, travellerFactoryMock.Object);

            //Act & Assert
            string currentResult = command.Execute(parameters);
        }
Ejemplo n.º 13
0
        public void ReturnSuccessfulCreatingMesseage_WhenParametersAreCorrcet()
        {
            string administrativeCosts = "30";
            string currentJourney      = "0";

            //Arrange
            List <string> parameters = new List <string>
            {
                currentJourney,
                administrativeCosts
            };
            var             travellerFactoryMock = new Mock <ITravellerFactory>();
            var             databaseMock         = new Mock <ITravellerDatabase>();
            var             journeyMock          = new Mock <IJourney>();
            var             ticketMock           = new Mock <ITicket>();
            List <IJourney> journeys             = new List <IJourney>();

            journeys.Add(journeyMock.Object);
            List <ITicket> tickets = new List <ITicket>();

            databaseMock.SetupGet(x => x.Journeys).Returns(journeys);
            databaseMock.SetupGet(x => x.Tickets).Returns(tickets);

            travellerFactoryMock.Setup(x => x.CreateTicket(It.IsAny <IJourney>(), It.IsAny <decimal>())).Returns(ticketMock.Object);


            CreateTicketCommand command = new CreateTicketCommand(databaseMock.Object, travellerFactoryMock.Object);

            //Act
            string currentResult = command.Execute(parameters);

            //Assert
            Assert.AreEqual(currentResult, SuccessMessage);
        }
        public void ReturnCreatedTicketSuccessMessage_When_PassedValidArgumentLists()
        {
            var ticketId = 112;
            var args     = new List <string> {
                "0", "21"
            };

            var journyStub = new Mock <IJourney>();
            var ticketStub = new Mock <ITicket>();

            this.travelerFactoryMock
            .Setup(x => x.CreateTicket(It.IsAny <IJourney>(), It.IsAny <decimal>()))
            .Returns(ticketStub.Object);

            this.dataStoreMock
            .Setup(x => x.Journeys)
            .Returns(new List <IJourney> {
                journyStub.Object
            });


            this.dataStoreMock
            .Setup(x => x.AddTicket(ticketStub.Object)).Returns(() => ticketId);

            this.createTicketCommand = new CreateTicketCommand(this.travelerFactoryMock.Object,
                                                               this.dataStoreMock.Object, this.commandConstants);

            var expectedMessage = string.Format(this.commandConstants.TicketCreatedSuccessMessage, ticketId);
            var actualMessage   = createTicketCommand.Execute(args);

            Assert.That(actualMessage, Is.EqualTo(expectedMessage));
        }
Ejemplo n.º 15
0
        public void DeveRetornarSucessoSeCommandValido(
            int clientId,
            string nome,
            string sobrenome,
            string email,
            string token,
            string empresa,
            string telefone,
            string title,
            string description,
            ETicketStatusType status,
            EPriorityType prioridade
            )
        {
            CreateTicketCommand command = new CreateTicketCommand
            {
                ClientId         = clientId,
                ClientFirstName  = nome,
                ClientLastName   = sobrenome,
                ClientEmail      = email,
                ClientToken      = token,
                ClientCompany    = empresa,
                ClientCallNumber = telefone,
                Title            = title,
                Description      = description,
                Status           = status,
                Priority         = prioridade
            };

            command.Validate();
            Assert.True(command.Valid);
        }
        public void CreateTicketCommand_WithoutAnyInput_ShouldThrowValidationException()
        {
            var command = new CreateTicketCommand();

            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <ValidationException>();
        }
Ejemplo n.º 17
0
 void AndGivenCommandPrepared()
 {
     _command = new CreateTicketCommand
     {
         Email   = "*****@*****.**",
         Subject = "Example subject",
         Text    = "Example text"
     };
 }
Ejemplo n.º 18
0
        public async Task <IActionResult> Create(CreateTicketCommand createTicketCommand)
        {
            var result = await Mediator.Send(createTicketCommand);

            if (result.Success == false)
            {
                return(result.ApiResult);
            }

            return(Created(Url.Link("GetTicketInfo", new { id = result.Data.Id }), result.Data));
        }
Ejemplo n.º 19
0
        public async Task <IActionResult> Create([FromBody] CreateTicketCommand command)
        {
            var ticket = await Mediator.Send(command);

            if (ticket == null)
            {
                return(BadRequest());
            }

            return(Ok(ticket));
        }
Ejemplo n.º 20
0
        public void ReturnInstance_WhenArgumentsAreValid()
        {
            // Arrange
            var databaseMock = new Mock <IDatabase>();
            var factoryMock  = new Mock <ITravellerFactory>();

            // Act
            var createTicketCommand = new CreateTicketCommand(factoryMock.Object, databaseMock.Object);

            // Assert
            Assert.IsNotNull(createTicketCommand);
        }
        public void ThrowsArgumentException_When_CannotParseArgumentList()
        {
            var args = new List <string> {
                "Sofia", "vTurnovo"
            };

            this.createTicketCommand = new CreateTicketCommand(this.travelerFactoryMock.Object,
                                                               this.dataStoreMock.Object, this.commandConstants);


            Assert.That(() => this.createTicketCommand.Execute(args), Throws.ArgumentException);
        }
        public void ReturnAnInstanceOfTicketClass_WhenParametersAreCorrect()
        {
            // Arrange
            var travellerFactoryMock = new Mock <ITravellerFactory>();
            var databaseMock         = new Mock <IDatabase>();

            // Act
            var ticketCreation = new CreateTicketCommand(travellerFactoryMock.Object, databaseMock.Object);

            // Assert
            Assert.IsNotNull(ticketCreation);
        }
Ejemplo n.º 23
0
        public void ConstructorShould_CorrectlyAssignFactory()
        {
            // Arrange
            var databaseStub = new Mock <IDatabase>();
            var factoryStub  = new Mock <ITravellerFactory>();

            // Act
            var createTicketCommand = new CreateTicketCommand(databaseStub.Object, factoryStub.Object);

            // Assert
            Assert.AreSame(factoryStub.Object, createTicketCommand.Factory);
        }
Ejemplo n.º 24
0
        public void ShouldReturnInstance_WhenParametersAreValid()
        {
            // Arrange
            var travellerFactoryMock = new Mock <ITravellerFactory>();
            var databaseMock         = Helpers.InitializeDatabaseMock();

            // Act
            var instance = new CreateTicketCommand(travellerFactoryMock.Object, databaseMock.Object);

            // Assert
            Assert.IsNotNull(instance);
        }
Ejemplo n.º 25
0
        public void ReturnInstance_WhenParametersAreCorrect()
        {
            // Arrange
            var databaseMock = new Mock <IDatabase>();
            var factoryMock  = new Mock <ITravellerFactory>();

            // Act
            var createTicketCommmand = new CreateTicketCommand(databaseMock.Object, factoryMock.Object);

            // Assert
            Assert.IsNotNull(createTicketCommmand);
        }
        public async Task CreateTicketCommand_WithoutMessage_ShouldThrowValidationException()
        {
            var createdOrganizationId = await SeedSampleOrganization();

            var command = new CreateTicketCommand
            {
                Title          = "Test",
                OrganizationId = createdOrganizationId
            };

            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <ValidationException>();
        }
        public async Task CreateTicketCommand_WithoutOrganizationId_ShouldThrowValidationException()
        {
            var defaultUserId = await RunAsDefaultUserAsync();

            var command = new CreateTicketCommand
            {
                Title   = "Test",
                Message = "Test"
            };

            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <ValidationException>();
        }
Ejemplo n.º 28
0
        public void ThrowsArgumentException_WhenDataIsInvalid()
        {
            // Arrange
            var dataMock    = new Mock <IData>();
            var factoryMock = new Mock <ITravellerFactory>();

            var executeCommand = new CreateTicketCommand(dataMock.Object, factoryMock.Object);

            // Act & Assert
            Assert.ThrowsException <ArgumentException>(() => executeCommand.Execute(new List <string> {
                "Invalid", "Parameters"
            }));
        }
Ejemplo n.º 29
0
        public void ThrowException_WhenDatabaseArgumentIsNull()
        {
            // Arrange
            var factory  = new Mock <ITravellerFactory>();
            var database = new Mock <IDatabase>();

            // Act &

            var factoryNull = new CreateTicketCommand(factory.Object,
                                                      null);

            //Assert
            Assert.Fail();
        }
        public void CreateTicketCommand_WithInvalidOrganizationId_ShouldThrowNotFoundException()
        {
            var invalidOrganizationId = new Guid("ef1dc766-98f5-424f-ad4c-0fb42a690140");

            var command = new CreateTicketCommand
            {
                OrganizationId = invalidOrganizationId,
                Title          = "Test",
                Message        = "Test"
            };

            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <NotFoundException>();
        }