public void CaseTemplates_Delete_DoesSetWorkflowStateToRemoved() { //Arrange Random rnd = new Random(); bool randomBool = rnd.Next(0, 2) > 0; CaseTemplate caseTemplate = new CaseTemplate(); caseTemplate.Approvable = randomBool; caseTemplate.Body = Guid.NewGuid().ToString(); caseTemplate.Title = Guid.NewGuid().ToString(); caseTemplate.AlwaysShow = randomBool; caseTemplate.EndAt = DateTime.Now; caseTemplate.PdfTitle = Guid.NewGuid().ToString(); caseTemplate.StartAt = DateTime.Now; caseTemplate.DescriptionFolderId = rnd.Next(1, 200); caseTemplate.RetractIfApproved = randomBool; caseTemplate.Create(DbContext); //Act DateTime?oldUpdatedAt = caseTemplate.UpdatedAt; caseTemplate.Delete(DbContext); List <CaseTemplate> dbCaseTemplates = DbContext.CaseTemplates.AsNoTracking().ToList(); List <CaseTemplateVersion> dbCaseTemplateVersions = DbContext.CaseTemplateVersions.AsNoTracking().ToList(); //Assert Assert.NotNull(dbCaseTemplates); Assert.NotNull(dbCaseTemplateVersions); Assert.AreEqual(1, dbCaseTemplates.Count); Assert.AreEqual(2, dbCaseTemplateVersions.Count); Assert.AreEqual(caseTemplate.Id, dbCaseTemplates[0].Id); Assert.AreEqual(caseTemplate.Version, dbCaseTemplates[0].Version); Assert.AreEqual(caseTemplate.CreatedAt.ToString(), dbCaseTemplates[0].CreatedAt.ToString()); Assert.AreEqual(caseTemplate.UpdatedAt.ToString(), dbCaseTemplates[0].UpdatedAt.ToString()); Assert.AreEqual(caseTemplate.CreatedByUserId, dbCaseTemplates[0].CreatedByUserId); Assert.AreEqual(caseTemplate.UpdatedByUserId, dbCaseTemplates[0].UpdatedByUserId); Assert.AreEqual(Constants.WorkflowStates.Removed, dbCaseTemplates[0].WorkflowState); Assert.AreEqual(caseTemplate.Approvable, dbCaseTemplates[0].Approvable); Assert.AreEqual(caseTemplate.Body, dbCaseTemplates[0].Body); Assert.AreEqual(caseTemplate.Title, dbCaseTemplates[0].Title); Assert.AreEqual(caseTemplate.AlwaysShow, dbCaseTemplates[0].AlwaysShow); Assert.AreEqual(caseTemplate.EndAt.ToString(), dbCaseTemplates[0].EndAt.ToString()); Assert.AreEqual(caseTemplate.PdfTitle, dbCaseTemplates[0].PdfTitle); Assert.AreEqual(caseTemplate.StartAt.ToString(), dbCaseTemplates[0].StartAt.ToString()); Assert.AreEqual(caseTemplate.DescriptionFolderId, dbCaseTemplates[0].DescriptionFolderId); Assert.AreEqual(caseTemplate.RetractIfApproved, dbCaseTemplates[0].RetractIfApproved); //Old Version Assert.AreEqual(caseTemplate.Id, dbCaseTemplateVersions[0].CaseTemplateId); Assert.AreEqual(1, dbCaseTemplateVersions[0].Version); Assert.AreEqual(caseTemplate.CreatedAt.ToString(), dbCaseTemplateVersions[0].CreatedAt.ToString()); Assert.AreEqual(oldUpdatedAt.ToString(), dbCaseTemplateVersions[0].UpdatedAt.ToString()); Assert.AreEqual(caseTemplate.CreatedByUserId, dbCaseTemplateVersions[0].CreatedByUserId); Assert.AreEqual(caseTemplate.UpdatedByUserId, dbCaseTemplateVersions[0].UpdatedByUserId); Assert.AreEqual(Constants.WorkflowStates.Created, dbCaseTemplateVersions[0].WorkflowState); Assert.AreEqual(caseTemplate.Approvable, dbCaseTemplateVersions[0].Approvable); Assert.AreEqual(caseTemplate.Body, dbCaseTemplateVersions[0].Body); Assert.AreEqual(caseTemplate.Title, dbCaseTemplateVersions[0].Title); Assert.AreEqual(caseTemplate.AlwaysShow, dbCaseTemplateVersions[0].AlwaysShow); Assert.AreEqual(caseTemplate.EndAt.ToString(), dbCaseTemplateVersions[0].EndAt.ToString()); Assert.AreEqual(caseTemplate.PdfTitle, dbCaseTemplateVersions[0].PdfTitle); Assert.AreEqual(caseTemplate.StartAt.ToString(), dbCaseTemplateVersions[0].StartAt.ToString()); Assert.AreEqual(caseTemplate.DescriptionFolderId, dbCaseTemplateVersions[0].DescriptionFolderId); Assert.AreEqual(caseTemplate.RetractIfApproved, dbCaseTemplateVersions[0].RetractIfApproved); //New Version Assert.AreEqual(caseTemplate.Id, dbCaseTemplateVersions[1].CaseTemplateId); Assert.AreEqual(2, dbCaseTemplateVersions[1].Version); Assert.AreEqual(caseTemplate.CreatedAt.ToString(), dbCaseTemplateVersions[1].CreatedAt.ToString()); Assert.AreEqual(caseTemplate.UpdatedAt.ToString(), dbCaseTemplateVersions[1].UpdatedAt.ToString()); Assert.AreEqual(caseTemplate.CreatedByUserId, dbCaseTemplateVersions[1].CreatedByUserId); Assert.AreEqual(caseTemplate.UpdatedByUserId, dbCaseTemplateVersions[1].UpdatedByUserId); Assert.AreEqual(Constants.WorkflowStates.Removed, dbCaseTemplateVersions[1].WorkflowState); Assert.AreEqual(caseTemplate.Approvable, dbCaseTemplateVersions[1].Approvable); Assert.AreEqual(caseTemplate.Body, dbCaseTemplateVersions[1].Body); Assert.AreEqual(caseTemplate.Title, dbCaseTemplateVersions[1].Title); Assert.AreEqual(caseTemplate.AlwaysShow, dbCaseTemplateVersions[1].AlwaysShow); Assert.AreEqual(caseTemplate.EndAt.ToString(), dbCaseTemplateVersions[1].EndAt.ToString()); Assert.AreEqual(caseTemplate.PdfTitle, dbCaseTemplateVersions[1].PdfTitle); Assert.AreEqual(caseTemplate.StartAt.ToString(), dbCaseTemplateVersions[1].StartAt.ToString()); Assert.AreEqual(caseTemplate.DescriptionFolderId, dbCaseTemplateVersions[1].DescriptionFolderId); Assert.AreEqual(caseTemplate.RetractIfApproved, dbCaseTemplateVersions[1].RetractIfApproved); }