public void AdaptPersonFromEntitiesToModels_MergesByIdForExistingValues() { // arrange var fromValues = PersonTestUtility.CreateEntities(false); foreach (var fromValue in fromValues) { Assert.AreNotEqual <int>(0, fromValue.Id, "Value wasn't 'saved' before start of test."); } int expectedCount = fromValues.Count; var toValues = new List <Benday.EasyAuthDemo.Api.DomainModels.Person>(); // adapt first time SystemUnderTest.Adapt(fromValues, toValues); var originalValuesById = GetOriginalValuesById(toValues); // act // call adapt again SystemUnderTest.Adapt(fromValues, toValues); // assert Assert.AreNotEqual <int>(0, toValues.Count, "There should be values."); AssertValuesStillExistAndIdDidNotChange(toValues, originalValuesById); PersonTestUtility.AssertAreEqual(fromValues, toValues); }
public void Save_NewInvalidItem_DoesNotGetSavedAndThrowsValidationException() { // arrange var saveThis = PersonTestUtility.CreateModel(true); ValidatorStrategy.IsValidReturnValue = false; bool gotException = false; // act try { SystemUnderTest.Save(saveThis); } catch (InvalidObjectException) { gotException = true; } catch (Exception ex) { Assert.Fail($"Got wrong kind of exception. {ex}"); } // assert Assert.IsTrue(gotException, "Did not get an invalid object exception."); Assert.IsFalse(PersonRepositoryInstance.WasSaveCalled, "Save should not be called."); }
public void PersonController_Search_RunSimpleSearch_WithSort() { // arrange PersonServiceInstance.SimpleSearchReturnValue = PersonTestUtility.CreateModels(false, 100); var model = UnitTestUtility.GetModel <PersonSearchViewModel>( SystemUnderTest.Search()); model.IsSimpleSearch = true; model.SimpleSearchValue = "searchval"; // act & assert // first time sort by null to simulate the first search on the page var actual = UnitTestUtility.GetModel <PersonSearchViewModel>( SystemUnderTest.Search(model, null, null)); SearchAndSortTestUtility.AssertSearchResultsAndSortDirection(actual, null, SearchConstants.SortDirectionAscending); // sort by Person name to simulate sorting the search string sortBy = nameof(Person.Id); actual = UnitTestUtility.GetModel <PersonSearchViewModel>( SystemUnderTest.Search(model, null, sortBy)); SearchAndSortTestUtility.AssertSearchResultsAndSortDirection(actual, sortBy, SearchConstants.SortDirectionAscending); // sort by Person name again to simulate flipping the sort direction sortBy = nameof(Person.Id); actual = UnitTestUtility.GetModel <PersonSearchViewModel>( SystemUnderTest.Search(model, null, sortBy)); SearchAndSortTestUtility.AssertSearchResultsAndSortDirection(actual, sortBy, SearchConstants.SortDirectionDescending); }
public void Save_ModifiedValidItem_SavesChangesToRepository() { // arrange PopulateRepositoryWithTestData(); var savedEntity = PersonRepositoryInstance.Items[2]; var saveThis = SystemUnderTest.GetById(savedEntity.Id); Assert.IsNotNull(saveThis, "Item to modify is null"); Assert.AreNotEqual <int>(0, saveThis.Id, "Item to modify has an Id of 0 indicating that it was not saved."); var expectedId = saveThis.Id; ValidatorStrategy.IsValidReturnValue = true; PersonTestUtility.ModifyModel(saveThis); PersonRepositoryInstance.ResetMethodCallTrackers(); // act SystemUnderTest.Save(saveThis); // assert Assert.AreEqual <int>(expectedId, saveThis.Id, "Id should not change when modified."); Assert.IsTrue(PersonRepositoryInstance.WasSaveCalled, "Save was not called."); var entity = PersonRepositoryInstance.GetById(saveThis.Id); Assert.IsNotNull(entity, "Entity wasn't saved to repository."); PersonTestUtility.AssertAreEqual(saveThis, entity); }
public void PersonController_Search_RunSimpleSearch_ShouldHaveRecords() { // arrange PersonServiceInstance.SimpleSearchReturnValue = PersonTestUtility.CreateModels(false, 100); var model = UnitTestUtility.GetModel <PersonSearchViewModel>( SystemUnderTest.Search()); model.IsSimpleSearch = true; model.SimpleSearchValue = "searchval"; // act var result = SystemUnderTest.Search(model, null, null); var actual = UnitTestUtility.GetModel <PersonSearchViewModel>(result); // assert Assert.IsNotNull(actual, "Model was null"); Assert.IsNotNull(actual.Results, "Results was null"); Assert.IsNotNull(actual.Results.PageValues, "Results.PageValues was null"); Assert.AreNotEqual <int>(0, actual.Results.PageValues.Count, "No items on the current page"); Assert.IsTrue(String.IsNullOrEmpty(actual.CurrentSortProperty), "CurrentSortProperty should be null or empty."); Assert.AreEqual <string>(SearchConstants.SortDirectionAscending, actual.CurrentSortDirection, "CurrentSortDirection was wrong"); }
private void PopulateRepositoryWithTestData() { var items = PersonTestUtility.CreateEntities(); foreach (var item in items) { PersonRepositoryInstance.Save(item); } }
public void AdaptPersonFromEntityToModel() { // arrange var fromValue = PersonTestUtility.CreateEntity(); var toValue = new Benday.EasyAuthDemo.Api.DomainModels.Person(); // act SystemUnderTest.Adapt(fromValue, toValue); // assert PersonTestUtility.AssertAreEqual(fromValue, toValue); }
public void AdaptPersonFromModelToEntity() { // arrange var fromValue = PersonTestUtility.CreateModel(); var toValue = new Benday.EasyAuthDemo.Api.DataAccess.Entities.PersonEntity(); // act SystemUnderTest.Adapt(fromValue, toValue); // assert PersonTestUtility.AssertAreEqual(fromValue, toValue); }
public void AdaptPersonFromModelToViewModel() { // arrange var fromValue = PersonTestUtility.CreateModel(); var toValue = new Benday.EasyAuthDemo.WebUi.Models.PersonEditorViewModel(); // act SystemUnderTest.Adapt(fromValue, toValue); // assert PersonViewModelTestUtility.AssertAreEqual(fromValue, toValue); }
public void AdaptPersonFromEntitiesToModels_ToEmpty() { // arrange var fromValues = PersonTestUtility.CreateEntities(); var toValues = new List <Benday.EasyAuthDemo.Api.DomainModels.Person>(); // act SystemUnderTest.Adapt(fromValues, toValues); // assert Assert.AreNotEqual <int>(0, toValues.Count, "There should be values."); PersonTestUtility.AssertAreEqual(fromValues, toValues); }
public void Save_ModifiedValidItem_CreatedAndLastUpdatedFieldsArePopulated() { // arrange PopulateRepositoryWithTestData(); var savedEntity = PersonRepositoryInstance.Items[2]; var saveThis = SystemUnderTest.GetById(savedEntity.Id); Assert.IsNotNull(saveThis, "Item to modify is null"); Assert.AreNotEqual <int>(0, saveThis.Id, "Item to modify has an Id of 0 indicating that it was not saved."); var expectedId = saveThis.Id; ValidatorStrategy.IsValidReturnValue = true; PersonTestUtility.ModifyModel(saveThis); PersonRepositoryInstance.ResetMethodCallTrackers(); UsernameProvider.GetUsernameReturnValue = UnitTestConstants.FakeUsername2; var originalCreatedBy = saveThis.CreatedBy; var originalLastModifiedBy = saveThis.LastModifiedBy; var originalCreatedDate = saveThis.CreatedDate; var originalLastModified = saveThis.LastModifiedDate; Thread.Sleep(UnitTestConstants.NumberOfMillisecondsForRecentDateTimeAssert * 2); // act SystemUnderTest.Save(saveThis); // assert Assert.AreEqual <string>(originalCreatedBy, saveThis.CreatedBy, "CreatedBy was wrong."); Assert.AreEqual <DateTime>(originalCreatedDate, saveThis.CreatedDate, "CreatedDate was wrong."); Assert.AreEqual <string>(UnitTestConstants.FakeUsername2, saveThis.LastModifiedBy, "LastModifiedBy was wrong."); UnitTestUtility.AssertDateTimeIsRecent( saveThis.LastModifiedDate, "LastModifiedDate"); var entity = PersonRepositoryInstance.GetById(saveThis.Id); Assert.IsNotNull(entity, "Entity wasn't saved to repository."); PersonTestUtility.AssertAreEqual(saveThis, entity); }
public void Save_ExistingItemThatNoLongerIsInTheDatabase_DoesNotGetSavedAndThrowsException() { // arrange var idValueThatIsNotAlreadySavedToTheRepository = 1312341234; var saveThis = PersonTestUtility.CreateModel(); saveThis.Id = idValueThatIsNotAlreadySavedToTheRepository; ValidatorStrategy.IsValidReturnValue = true; // act SystemUnderTest.Save(saveThis); // assert }
public void PersonController_Delete_Confirmed_ForKnownValueCallsServiceAndReturnsValue() { // arrange var expected = PersonTestUtility.CreateModel(); PersonServiceInstance.GetByIdReturnValue = expected; // act var actual = SystemUnderTest.Delete(expected); // assert Assert.IsNotNull(actual, "Return value was null."); Assert.IsTrue(PersonServiceInstance.WasGetByIdCalled, "GetById was not called."); Assert.IsTrue(PersonServiceInstance.WasDeleteByIdCalled, "DeleteById was not called."); }
public void PersonController_Delete_Confirmed_ForUnknownValueReturnsNotFound() { // arrange var expected = PersonTestUtility.CreateModel(); PersonServiceInstance.GetByIdReturnValue = null; // act var actual = SystemUnderTest.Delete(expected); // assert Assert.IsNotNull(actual, "Return value was null."); UnitTestUtility.AssertIsHttpNotFound(actual); Assert.IsTrue(PersonServiceInstance.WasGetByIdCalled, "GetById was not called."); Assert.IsFalse(PersonServiceInstance.WasDeleteByIdCalled, "DeleteById should not be called."); }
public void PersonController_Index_CallsServiceAndReturnsList() { // arrange var expected = PersonTestUtility.CreateModels(); PersonServiceInstance.GetAllReturnValue = expected; // act var actual = UnitTestUtility.GetModel <IList <Person> >( SystemUnderTest.Index()); // assert Assert.IsNotNull(actual, "Model was null."); Assert.AreSame(expected, actual, "Did not return the expected instance."); Assert.IsTrue(PersonServiceInstance.WasGetAllCalled, "GetAll was not called."); }
public void PersonController_Search_LoadPage() { // arrange PersonServiceInstance.SearchUsingSimpleSearchReturnValue = PersonTestUtility.CreateModels(false, 100); // act var result = SystemUnderTest.Search(); // assert var model = UnitTestUtility.GetModel <PersonSearchViewModel>(result); Assert.IsNotNull(model, "Model was null"); Assert.IsTrue(model.IsSimpleSearch, "IsSimpleSearch"); Assert.IsFalse(PersonServiceInstance.WasSearchUsingSimpleSearchCalled, "Search using simple search should not be called."); }
public void PersonController_Edit_ForKnownValueCallsServiceAndReturnsValue() { // arrange var expected = PersonTestUtility.CreateModel(); PersonServiceInstance.GetByIdReturnValue = expected; InitializeFakeLookups(); // act var actual = UnitTestUtility.GetModel <PersonEditorViewModel>( SystemUnderTest.Edit(1234)); // assert Assert.IsNotNull(actual, "Model was null."); Assert.IsTrue(PersonServiceInstance.WasGetByIdCalled, "GetById was not called."); AssertLookupValueListsArePopulated(actual); }
public void PersonController_Delete_GetConfirmationPage_ForKnownValueCallsServiceAndReturnsValue() { // arrange var expected = PersonTestUtility.CreateModel(); PersonServiceInstance.GetByIdReturnValue = expected; // act var actual = UnitTestUtility.GetModel <Person>( SystemUnderTest.Delete(1234)); // assert Assert.IsNotNull(actual, "Model was null."); Assert.AreSame(expected, actual, "Did not return the expected instance."); Assert.IsTrue(PersonServiceInstance.WasGetByIdCalled, "GetById was not called."); Assert.IsFalse(PersonServiceInstance.WasDeleteByIdCalled, "DeleteById should not be called."); }
public void PersonController_Details_ForKnownValueCallsServiceAndReturnsValue() { // arrange var expected = PersonTestUtility.CreateModel(); PersonServiceInstance.GetByIdReturnValue = expected; InitializeFakeLookups(); // act var actual = UnitTestUtility.GetModel <Person>( SystemUnderTest.Details(1234)); // assert Assert.IsNotNull(actual, "Model was null."); Assert.AreSame(expected, actual, "Did not return the expected instance."); Assert.IsTrue(PersonServiceInstance.WasGetByIdCalled, "GetById was not called."); }
public void PersonController_Search_RunSimpleSearch_WithSort_ChangePages() { // arrange PersonServiceInstance.SimpleSearchReturnValue = PersonTestUtility.CreateModels(false, 100); var model = UnitTestUtility.GetModel <PersonSearchViewModel>( SystemUnderTest.Search()); model.IsSimpleSearch = true; model.SimpleSearchValue = "searchval"; // act & assert // sort by Person name to simulate sorting the search string sortBy = nameof(Person.Id); var actual = UnitTestUtility.GetModel <PersonSearchViewModel>( SystemUnderTest.Search(model, null, sortBy)); SearchAndSortTestUtility.AssertSearchResultsAndSortDirection(actual, sortBy, SearchConstants.SortDirectionAscending); Assert.IsTrue(actual.Results.PageCount > 2, "PageCount should be greater than 2 for this test"); var page1Values = new List <Person>(actual.Results.PageValues); // change to page 2 actual = UnitTestUtility.GetModel <PersonSearchViewModel>( SystemUnderTest.Search(model, "2", null)); SearchAndSortTestUtility.AssertSearchResultsAndSortDirection(actual, sortBy, SearchConstants.SortDirectionAscending); Assert.AreEqual <int>(2, actual.Results.CurrentPage, "Results page number was wrong."); var page2Values = new List <Person>(actual.Results.PageValues); CollectionAssert.AreNotEquivalent(page2Values, page1Values, "Page values didn't change"); // change to page 3 actual = UnitTestUtility.GetModel <PersonSearchViewModel>( SystemUnderTest.Search(model, "3", null)); SearchAndSortTestUtility.AssertSearchResultsAndSortDirection(actual, sortBy, SearchConstants.SortDirectionAscending); Assert.AreEqual <int>(3, actual.Results.CurrentPage, "Results page number was wrong."); var page3Values = new List <Person>(actual.Results.PageValues); CollectionAssert.AreNotEquivalent(page3Values, page2Values, "Page values didn't change"); }
public void PersonController_Edit_ExistingItem_SavesAndReturns() { // arrange var saveThis = PersonTestUtility.CreateModel(false); PersonServiceInstance.GetByIdReturnValue = saveThis; var viewModel = UnitTestUtility.GetModel <PersonEditorViewModel>( SystemUnderTest.Edit(1234)); // act var actual = SystemUnderTest.Edit(viewModel); // assert UnitTestUtility.AssertIsRedirectToActionResult(actual); Assert.IsTrue(PersonServiceInstance.WasSaveCalled, "Save was not called."); Assert.AreSame(saveThis, PersonServiceInstance.SaveArgumentValue, "Wrong value was saved."); }
public void Save_NewValidItem_IdIsPopulatedAndIsInRepository() { // arrange var saveThis = PersonTestUtility.CreateModel(true); ValidatorStrategy.IsValidReturnValue = true; // act SystemUnderTest.Save(saveThis); // assert Assert.AreNotEqual <int>(0, saveThis.Id, "Id should not be zero after save."); Assert.IsTrue(PersonRepositoryInstance.WasSaveCalled, "Save was not called."); var actual = PersonRepositoryInstance.GetById(saveThis.Id); Assert.IsNotNull(actual, "Item wasn't saved to repository."); var entity = PersonRepositoryInstance.GetById(saveThis.Id); Assert.IsNotNull(entity, "Entity wasn't saved to repository."); PersonTestUtility.AssertAreEqual(saveThis, entity); }
public void Save_ModifiedInvalidItem_DoesNotGetSavedAndThrowsValidationException() { // arrange PopulateRepositoryWithTestData(); var savedEntity = PersonRepositoryInstance.Items[2]; var saveThis = SystemUnderTest.GetById(savedEntity.Id); Assert.IsNotNull(saveThis, "Item to modify is null"); Assert.AreNotEqual <int>(0, saveThis.Id, "Item to modify has an Id of 0 indicating that it was not saved."); var expectedId = saveThis.Id; ValidatorStrategy.IsValidReturnValue = false; bool gotException = false; PersonTestUtility.ModifyModel(saveThis); PersonRepositoryInstance.ResetMethodCallTrackers(); // act try { SystemUnderTest.Save(saveThis); } catch (InvalidObjectException) { gotException = true; } catch (Exception ex) { Assert.Fail($"Got wrong kind of exception. {ex}"); } // assert Assert.IsTrue(gotException, "Did not get an invalid object exception."); Assert.AreNotEqual <int>(0, saveThis.Id, "Id should not be zero after save."); Assert.IsFalse(PersonRepositoryInstance.WasSaveCalled, "Save should not be called."); }
public void Save_NewValidItem_CreatedAndLastUpdatedFieldsArePopulated() { // arrange var saveThis = PersonTestUtility.CreateModel(true); ValidatorStrategy.IsValidReturnValue = true; Assert.IsFalse( String.IsNullOrWhiteSpace(UsernameProvider.GetUsernameReturnValue), "Username provider was not initialized propertly."); // act SystemUnderTest.Save(saveThis); // assert UnitTestUtility.AssertDomainModelBaseAuditFieldsArePopulated( saveThis, UsernameProvider.GetUsernameReturnValue, "saveThis"); var entity = PersonRepositoryInstance.GetById(saveThis.Id); Assert.IsNotNull(entity, "Entity wasn't saved to repository."); PersonTestUtility.AssertAreEqual(saveThis, entity); }