public async Task EmptySearchStringReturnsNoResults() { // Arrange var databaseContext = new PersonDatabaseContext( new DbContextOptionsBuilder <PersonDatabaseContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options ) ; var testFirstName = "foo"; var testPerson = new PersonModel() { Age = 14 , FirstName = testFirstName , LastName = "bar" , Id = Guid.NewGuid() } ; databaseContext.PersonSet.Add(testPerson); databaseContext.SaveChanges(); var appSettingsMock = new Mock <IOptionsSnapshot <AppSettings> >(); appSettingsMock .Setup(personSearchOptions => personSearchOptions.Value ) .Returns(new AppSettings { PersonSearchMaxResults = 100 }) ; var controller = new PersonController( databaseContext: databaseContext , appSettings: appSettingsMock.Object ) ; // Act var result = await controller.Search(personName : string.Empty); // Assert var viewResult = Assert.IsType <OkObjectResult>(result); var model = Assert .IsAssignableFrom <PersonSearchResult>( viewResult .Value ) ; Assert.Empty(model.PersonSet); }
public async Task PostReturnsValidationErrorForInvalidModel() { // Arrange var databaseContext = new PersonDatabaseContext( new DbContextOptionsBuilder <PersonDatabaseContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options ) ; var testPerson = new PersonModel() { Age = 131 , FirstName = "foo" , LastName = "bar" , Id = Guid.NewGuid() } ; var appSettingsMock = new Mock <IOptionsSnapshot <AppSettings> >(); appSettingsMock .Setup(personSearchOptions => personSearchOptions.Value ) .Returns(new AppSettings { PersonSearchMaxResults = 100 }) ; var controller = new PersonController( databaseContext: databaseContext , appSettings: appSettingsMock.Object ) ; controller.ModelState.AddModelError("error", "some error"); // Act var result = await controller.Post(model : testPerson); // Assert var viewResult = Assert.IsType <BadRequestObjectResult>(result); var model = Assert .IsAssignableFrom <PersonValidationResult>( viewResult .Value ) ; Assert.NotEmpty(model.ValidationErrors); }
public async Task PostAddsNewRecordForValidModel() { // Arrange var databaseContext = new PersonDatabaseContext( new DbContextOptionsBuilder <PersonDatabaseContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options ) ; var testPerson = new PersonModel() { Age = 14 , FirstName = "foo" , LastName = "bar" , Id = Guid.NewGuid() } ; var appSettingsMock = new Mock <IOptionsSnapshot <AppSettings> >(); appSettingsMock .Setup(personSearchOptions => personSearchOptions.Value ) .Returns(new AppSettings { PersonSearchMaxResults = 100 }) ; var controller = new PersonController( databaseContext: databaseContext , appSettings: appSettingsMock.Object ) ; // Act var result = await controller.Post(model : testPerson); // Assert var viewResult = Assert.IsType <OkResult>(result); Assert.NotEmpty(databaseContext.PersonSet); }
public PersonController(PersonDatabaseContext context) { _context = context; }