private async Task TestEmptyValidation(Expression <Func <Medication, string> > fieldSelector, string field, [CallerMemberName] string name = null) { var controller = new MedicationsController(CreateDatabase(name)); var testItem = _fixture.Build <Medication>().With(fieldSelector, "").Create(); var result = await controller.AddMedication(testItem); result.Should().BeIsBlankResultForPath(field); }
public async Task GetReturnsNotFoundWithBadId() { PopulateDatabaseWithItems(); var controller = new MedicationsController(CreateDatabase()); var result = await controller.GetMedication(-1); result.Should().BeOfType <NotFoundResult>(); }
public async Task GetAllReturnsAllItemsAsASummary() { var items = PopulateDatabaseWithItems(); var controller = new MedicationsController(CreateDatabase()); var result = await controller.GetAllMedications(); result.Should().BeOkResultWithValue(items.Select(m => new MedicationSummary(m))); }
public async Task CreateReturnsBadRequestOnDuplicationName() { var items = PopulateDatabaseWithItems(); var controller = new MedicationsController(CreateDatabase()); var testItem = _fixture.Build <Medication>().With(m => m.Name, items.First().Name).Create(); var result = await controller.AddMedication(testItem); result.Should().BeIsInUseResultForPath("name"); }
public async Task DeleteMedicationReturnsNoContentOnBadRequest() { var items = PopulateDatabaseWithItems(); var controller = new MedicationsController(CreateDatabase()); var result = await controller.DeleteMedication(-1); result.Should().BeOfType <NoContentResult>(); CreateDatabase().Medications.Should().BeEquivalentTo(items); }
public async Task DeleteMedicationRemovesItemOnGoodRequest() { var items = PopulateDatabaseWithItems(); var controller = new MedicationsController(CreateDatabase()); var result = await controller.DeleteMedication(items.First().Id); result.Should().BeOfType <NoContentResult>(); (await CreateDatabase().Medications.AnyAsync(m => m.Id == items.First().Id)).Should().BeFalse(); }
private async Task TestUpdateValidation(Expression <Func <Medication, string> > fieldSelector, string field, [CallerMemberName] string name = null) { var items = PopulateDatabaseWithItems(name); var controller = new MedicationsController(CreateDatabase(name)); var testItem = items.First(); var updateItem = _fixture.Build <Medication>().With(fieldSelector, "").Create(); var result = await controller.UpdateMedication(testItem.Id, updateItem); result.Should().BeIsBlankResultForPath(field); }
private static MedicationsController GetMedicationsController() { var emptyData = Enumerable.Empty <Medication>().AsQueryable(); var mockSet = new Mock <DbSet <Medication> >(); var mockContext = new Mock <AlphaMedicContext>(); mockSet.As <IQueryable <Medication> >().Setup(m => m.Provider).Returns(emptyData.Provider); mockSet.As <IQueryable <Medication> >().Setup(m => m.Expression).Returns(emptyData.Expression); mockSet.As <IQueryable <Medication> >().Setup(m => m.ElementType).Returns(emptyData.ElementType); mockSet.As <IQueryable <Medication> >().Setup(m => m.GetEnumerator()).Returns(() => emptyData.GetEnumerator()); mockContext.Setup(c => c.Medications).Returns(mockSet.Object); var service = new MedicationsController(mockContext.Object); return(service); }
private async Task GetReturnsItem(bool?etag = null, bool?lastModified = null, [CallerMemberName] string name = null) { var items = PopulateDatabaseWithItems(name); var testItem = items.First(); var controller = new MedicationsController(CreateDatabase(name)) { ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext() } }; if (etag == true) { controller.Request.Headers["If-None-Match"] = testItem.GetEtag(); } else if (etag == false) { controller.Request.Headers["If-None-Match"] = _fixture.Create <string>(); } if (lastModified == true) { controller.Request.Headers["If-Modified-Since"] = testItem.LastModified.ToString(ModifiedDateFormat); } else if (lastModified == false) { controller.Request.Headers["If-Modified-Since"] = testItem.LastModified.AddDays(-1).ToString(ModifiedDateFormat); } var result = await controller.GetMedication(testItem.Id); if (etag == true || (lastModified == true && etag == null)) { result.Should().BeOfType <StatusCodeResult>() .Which.StatusCode.Should().Be((int)HttpStatusCode.NotModified); } else { result.Should().BeOkResultWithValue(testItem); controller.Response.Headers.Should().Contain(KeyValuePair.Create("ETag", new StringValues(testItem.GetEtag()))); controller.Response.Headers.Should().Contain(KeyValuePair.Create("Last-Modified", new StringValues(testItem.LastModified.ToUniversalTime().ToString(ModifiedDateFormat)))); } }
public async Task CreateReturnsAddsItemOnGoodRequest() { PopulateDatabaseWithItems(); var controller = new MedicationsController(CreateDatabase()); var testItem = _fixture.Create <Medication>(); var result = await controller.AddMedication(testItem); var newItem = await CreateDatabase().Medications.FirstOrDefaultAsync(m => m.Name == testItem.Name); testItem.Id = newItem.Id; newItem.Should().BeEquivalentTo(testItem); result.Should().BeCreatedResultWithValue($"/api/get-medication/{testItem.Id}", newItem); }
public async Task Get_NoInput_ReturnsMedications() { //ASSERT var medicationsController = new MedicationsController(context); //ACT var actionResult = await medicationsController.GetMedications(); //ARRANGE Assert.IsType <ActionResult <IEnumerable <Medication> > >(actionResult); var genericMedications = actionResult.Value; var medications = genericMedications as List <Medication>; Assert.Equal(3, medications.Count); Assert.Equal(1, medications[0].MedicationId); Assert.Equal("Ibuprofen", medications[1].MedicationDescription); Assert.Equal(1.47M, medications[2].MedicationCost); }
private async Task UpdateHandlesInputModel(bool goodId = true, bool duplicateName = false, [CallerMemberName] string name = null) { var items = PopulateDatabaseWithItems(name); var controller = new MedicationsController(CreateDatabase(name)); var testItem = _fixture.Create <Medication>(); var oldItem = items.OrderBy(m => m.Id).First(); var secondItem = items.OrderBy(m => m.Id).Skip(1).First(); var oldId = goodId ? oldItem.Id : -1; if (duplicateName) { testItem.Name = secondItem.Name; } var result = await controller.UpdateMedication(oldId, testItem); var newItem = await CreateDatabase(name).Medications.FirstOrDefaultAsync(m => m.Id == oldItem.Id); if (goodId && !duplicateName) { testItem.Id = oldId; newItem.Should().BeEquivalentTo(testItem); result.Should().BeOkResultWithValue(newItem); } else { newItem.Should().BeEquivalentTo(oldItem); if (duplicateName) { result.Should().BeIsInUseResultForPath("name"); } else { result.Should().BeOfType <NotFoundResult>(); } } }