public void Fact_CreatingContactShouldGenerateTimestamps() { // Arrange var contact = new Models.Contact("John", "Smith", DateTime.Parse("01/01/1985"), "*****@*****.**"); // Act dbContext.Contacts.Add(contact); dbContext.SaveChanges(); // Assert Assert.NotNull(contact.InsertedUtc); Assert.NotNull(contact.UpdatedUtc); Assert.True(contact.InsertedUtc >= DateTime.UtcNow.AddMinutes(-5)); Assert.True(contact.UpdatedUtc >= DateTime.UtcNow.AddMinutes(-5)); }
public void Fact_UpdatingContactShouldUpdateUpdatedTimestamp() { // Arrange var contact = new Models.Contact("John", "Smith", DateTime.Parse("01/01/1985"), "*****@*****.**"); dbContext.Contacts.Add(contact); dbContext.SaveChanges(); var initialUpdateTimeStamp = contact.UpdatedUtc; // Act contact.Surname = "Doe"; dbContext.Contacts.Update(contact); dbContext.SaveChanges(); // Assert Assert.True(contact.UpdatedUtc > initialUpdateTimeStamp); }
public void Fact_CreatingContactWithSameEmailShouldFail() { // Arrange var oldContact = new Models.Contact("John", "Smith", DateTime.Parse("01/01/1985"), "*****@*****.**"); dbContext.Contacts.Add(oldContact); int oldChanges = dbContext.SaveChanges(); // Act var newContact = new Models.Contact("Jane", "Doe", DateTime.Parse("01/01/1992"), "*****@*****.**"); int?newChanges = null; var actualError = Assert.Throws <InvalidOperationException>(() => { dbContext.Contacts.Add(newContact); newChanges = dbContext.SaveChanges(); }); // Assert Assert.True(oldChanges == 1); Assert.True(newChanges == null || newChanges.Value == 0); Assert.Contains("the same key value for {'Email'} is already being tracked", actualError.Message); }