コード例 #1
0
        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);
        }
コード例 #2
0
        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.");
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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");
        }
コード例 #6
0
        private void PopulateRepositoryWithTestData()
        {
            var items = PersonTestUtility.CreateEntities();

            foreach (var item in items)
            {
                PersonRepositoryInstance.Save(item);
            }
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        public void Save_ExistingItemThatNoLongerIsInTheDatabase_DoesNotGetSavedAndThrowsException()
        {
            // arrange
            var idValueThatIsNotAlreadySavedToTheRepository = 1312341234;
            var saveThis = PersonTestUtility.CreateModel();

            saveThis.Id = idValueThatIsNotAlreadySavedToTheRepository;
            ValidatorStrategy.IsValidReturnValue = true;

            // act
            SystemUnderTest.Save(saveThis);

            // assert
        }
コード例 #13
0
        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.");
        }
コード例 #14
0
        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.");
        }
コード例 #15
0
        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.");
        }
コード例 #16
0
        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.");
        }
コード例 #17
0
        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);
        }
コード例 #18
0
        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.");
        }
コード例 #19
0
        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.");
        }
コード例 #20
0
        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");
        }
コード例 #21
0
        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.");
        }
コード例 #22
0
        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);
        }
コード例 #23
0
        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.");
        }
コード例 #24
0
        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);
        }