public void Save_ModifiedValidItem_SavesChangesToRepository() { // arrange PopulateRepositoryWithTestData(); var savedEntity = LookupRepositoryInstance.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; LookupTestUtility.ModifyModel(saveThis); LookupRepositoryInstance.ResetMethodCallTrackers(); // act SystemUnderTest.Save(saveThis); // assert Assert.AreEqual <int>(expectedId, saveThis.Id, "Id should not change when modified."); Assert.IsTrue(LookupRepositoryInstance.WasSaveCalled, "Save was not called."); var entity = LookupRepositoryInstance.GetById(saveThis.Id); Assert.IsNotNull(entity, "Entity wasn't saved to repository."); LookupTestUtility.AssertAreEqual(saveThis, entity); }
public void Save_ModifiedValidItem_CreatedAndLastUpdatedFieldsArePopulated() { // arrange PopulateRepositoryWithTestData(); var savedEntity = LookupRepositoryInstance.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; LookupTestUtility.ModifyModel(saveThis); LookupRepositoryInstance.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 = LookupRepositoryInstance.GetById(saveThis.Id); Assert.IsNotNull(entity, "Entity wasn't saved to repository."); LookupTestUtility.AssertAreEqual(saveThis, entity); }
public void Save_ModifiedInvalidItem_DoesNotGetSavedAndThrowsValidationException() { // arrange PopulateRepositoryWithTestData(); var savedEntity = LookupRepositoryInstance.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; LookupTestUtility.ModifyModel(saveThis); LookupRepositoryInstance.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(LookupRepositoryInstance.WasSaveCalled, "Save should not be called."); }