public void Create_Support_Ticket_Test_No_Data() { /////////////////////////////////////////// // Arrange /////////////////////////////////////////// // Create our mock repository Mock <ISupportRepository> repo = new Mock <ISupportRepository>(); repo.Setup(m => m.CreateTicket(It.IsAny <ICreateTicket>())).Returns(new Ticket() { TicketId = 1, Created = DateTime.UtcNow, Detail = "This is some test detail, Requestor", Requestor = "John Smith", Subject = "This is a ticket", Status = new TicketStatus() { Status_Code = 1, Status_Name = "CREATED", Status_Description = "", TicketStatusId = 2 } }); // Mock the dependencies var serviceProvider = new Mock <IServiceProvider>(); serviceProvider.Setup(m => m.GetService(typeof(ICreateTicket))).Returns(new CreateTicket()); serviceProvider.Setup(k => k.GetService(typeof(ITicketStatus))).Returns(new TicketStatus()); serviceProvider.Setup(t => t.GetService(typeof(ICreateTicketResponseModel))).Returns(new CreateTicketResponseModel()); // For this test we dont need to pass in the service provider as we are only testing the application class. CreateSupportTicket myCreateTicket = new CreateSupportTicket(repo.Object, serviceProvider.Object); CreateTicketRequestModel model = new CreateTicketRequestModel() { Subject = "", Requestor = "", Detail = "" }; /////////////////////////////////////////// // Act /////////////////////////////////////////// ICreateTicketResponseModel response = myCreateTicket.Create(model); /////////////////////////////////////////// // Assert /////////////////////////////////////////// Assert.Equal("ERROR", response.Status.Status_Name); Assert.Equal("Unable to create ticket due to incomplete model", response.Status.Status_Description); }
public IActionResult CreateTicket([FromBody] CreateTicketRequestModel createModel) { ICreateTicketResponseModel response = null; try { if (!ModelState.IsValid) { throw new Exception("Model is invalid"); } response = createTicket.Create(createModel); } catch (Exception e) { var ticketStatus = (ITicketResponseBuilder)serviceProvider.GetService(typeof(ITicketResponseBuilder)); return(BadRequest(ticketStatus.Build(serviceProvider, null, -1, e))); } return(Ok(response)); }