예제 #1
0
        public void Test8()
        {
            using (JobLoggerDbContext db = new JobLoggerDbContext())
            {
                int featureCount     = db.Features.ToArray().Count();
                int requirementCount = db.Requirements.ToArray().Count();
                int taskCount        = db.Tasks.ToArray().Count();
                int taskLogCount     = db.TaskLogs.ToArray().Count();
                int checkInCount     = db.CheckIns.ToArray().Count();
                int taskCheckInCount = db.TaskCheckIns.ToArray().Count();
                int taskCommentCount = db.TaskComments.ToArray().Count();

                Task task = new TaskBF(db).Create(
                    new Task {
                    ID = 10, Title = "Task Number 10", TaskType = TaskType.Task, IsActive = true
                });

                Assert.AreEqual(featureCount + 0, db.Features.ToArray().Count());
                Assert.AreEqual(requirementCount + 0, db.Requirements.ToArray().Count());
                Assert.AreEqual(taskCount + 1, db.Tasks.ToArray().Count());
                Assert.AreEqual(taskLogCount + 0, db.TaskLogs.ToArray().Count());
                Assert.AreEqual(checkInCount + 0, db.CheckIns.ToArray().Count());
                Assert.AreEqual(taskCheckInCount + 0, db.TaskCheckIns.ToArray().Count());
                Assert.AreEqual(taskCommentCount + 0, db.TaskComments.ToArray().Count());

                //  need to decouple object from db context
                Task taskUI = new Task
                {
                    ID            = task.ID,
                    IsActive      = task.IsActive,
                    Requirement   = task.Requirement,
                    RequirementID = task.RequirementID,
                    TaskType      = task.TaskType,
                    Title         = task.Title
                };

                taskUI.Comments = new List <TaskComment>
                {
                    new TaskComment {
                        Comment = "Testing 1 two free"
                    }
                };

                taskUI = new TaskBF(db).Update(taskUI);

                Assert.AreEqual(featureCount + 0, db.Features.ToArray().Count());
                Assert.AreEqual(requirementCount + 0, db.Requirements.ToArray().Count());
                Assert.AreEqual(taskCount + 1, db.Tasks.ToArray().Count());
                Assert.AreEqual(taskLogCount + 0, db.TaskLogs.ToArray().Count());
                Assert.AreEqual(checkInCount + 0, db.CheckIns.ToArray().Count());
                Assert.AreEqual(taskCheckInCount + 0, db.TaskCheckIns.ToArray().Count());
                Assert.AreEqual(taskCommentCount + 1, db.TaskComments.ToArray().Count());

                Task fetchedTask = db.Tasks
                                   .Where(t => t.ID == 10)
                                   .Include(c => c.Comments)
                                   .Single();
                Assert.AreEqual(1, fetchedTask.Comments.Count());
            }
        }
예제 #2
0
        public static void ClearData()
        {
            using (JobLoggerDbContext db = new JobLoggerDbContext())
            {
                db.Database.ExecuteSqlCommand("delete from CodeBranch");
                db.Database.ExecuteSqlCommand("delete from TaskLog");
                db.Database.ExecuteSqlCommand("delete from Task");
                db.Database.ExecuteSqlCommand("delete from Requirement");
                db.Database.ExecuteSqlCommand("delete from Feature");

                new CodeBranchBF(db).Create(new CodeBranch {
                    Name = "Code Branch 1"
                });
            }
            dataHasBeenCleared = true;
        }
예제 #3
0
        public void Test6()
        {
            using (JobLoggerDbContext db = new JobLoggerDbContext())
            {
                int featureCount     = db.Features.ToArray().Count();
                int requirementCount = db.Requirements.ToArray().Count();
                int taskCount        = db.Tasks.ToArray().Count();
                int taskLogCount     = db.TaskLogs.ToArray().Count();
                int checkInCount     = db.CheckIns.ToArray().Count();
                int taskCheckInCount = db.TaskCheckIns.ToArray().Count();

                Requirement requirement = new RequirementBF(db).Create(
                    new Requirement {
                    ID = 5, Title = "Requirement Number 5", Status = RequirementStatus.Active
                });

                Assert.AreEqual(featureCount + 0, db.Features.ToArray().Count());
                Assert.AreEqual(requirementCount + 1, db.Requirements.ToArray().Count());
                Assert.AreEqual(taskCount + 0, db.Tasks.ToArray().Count());
                Assert.AreEqual(taskLogCount + 0, db.TaskLogs.ToArray().Count());
                Assert.AreEqual(checkInCount + 0, db.CheckIns.ToArray().Count());
                Assert.AreEqual(taskCheckInCount + 0, db.TaskCheckIns.ToArray().Count());

                Task newTask = new Task
                {
                    ID            = 9,
                    Title         = "Task Number 9",
                    IsActive      = true,
                    TaskType      = TaskType.Task,
                    RequirementID = 5
                };
                newTask = new TaskBF(db).Create(newTask);
                Assert.AreEqual(featureCount + 0, db.Features.ToArray().Count());
                Assert.AreEqual(requirementCount + 1, db.Requirements.ToArray().Count());
                Assert.AreEqual(taskCount + 1, db.Tasks.ToArray().Count());
                Assert.AreEqual(taskLogCount + 0, db.TaskLogs.ToArray().Count());
                Assert.AreEqual(checkInCount + 0, db.CheckIns.ToArray().Count());
                Assert.AreEqual(taskCheckInCount + 0, db.TaskCheckIns.ToArray().Count());

                Requirement fetchedRequirement = db.Requirements
                                                 .Where(r => r.ID == 5)
                                                 .Include(t => t.Tasks)
                                                 .Single();
                Assert.AreEqual(1, fetchedRequirement.Tasks.Count());
            }
        }
예제 #4
0
        public void FeatureTest3()
        {
            using (JobLoggerDbContext db = new JobLoggerDbContext())
            {
                long codeBranchId = db.CodeBranches.First().ID;

                FeatureAPI feature = GlobalCommon.NewFeature(7, "Feature Number 7");
                feature.Requirements.Add(GlobalCommon.NewRequirement(11, "Requirement Number 11"));
                feature.Requirements.Add(GlobalCommon.NewRequirement(12, "Requirement Number 12"));
                feature.Requirements[0].Tasks.Add(GlobalCommon.NewTask(17, "Task Number 17"));
                feature.Requirements[0].Tasks.Add(GlobalCommon.NewTask(18, "Task Number 18"));
                feature.Requirements[1].Tasks.Add(GlobalCommon.NewTask(19, "Task Number 19"));
                feature.Requirements[1].Tasks.Add(GlobalCommon.NewTask(20, "Task Number 20"));
                feature.Requirements[1].Tasks.Add(GlobalCommon.NewTask(21, "Task Number 21"));
                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment 1 for Requirement 11"
                });
                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment 2 for Requirement 11"
                });
                feature.Requirements[1].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment 1 for Requirement 12"
                });
                feature.Requirements[0].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment 1 for Task 11"
                });
                feature.Requirements[0].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment 2 for Task 11"
                });
                feature.Requirements[0].Tasks[0].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("4 Jul 2019 09:00")));
                feature.Requirements[0].Tasks[1].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("4 Jul 2019 11:00")));
                feature.Requirements[0].Tasks[0].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for TaskLog 1 for Task 17"
                });
                feature.Requirements[0].Tasks[1].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for TaskLog 1 for Task 18"
                });
                feature.Requirements[0].Tasks[0].Logs[0].CheckIns.Add(
                    GlobalCommon.NewCheckIn(3, DateTime.Parse("4 Jul 2019 10:45"), codeBranchId, feature.Requirements[0].Tasks[0].ID));

                feature = FeatureAPI.From(new FeatureBF(db).Create(FeatureAPI.To(feature)));

                FeatureAPI fetched = FeatureAPI.From(new FeatureBF(db).Get(7));
                CheckObjectCount(fetched, 2, 3, 5, 2, 2, 2, 1, 1);
            }
        }
예제 #5
0
        public void Test7()
        {
            using (JobLoggerDbContext db = new JobLoggerDbContext())
            {
                int featureCount     = db.Features.ToArray().Count();
                int requirementCount = db.Requirements.ToArray().Count();
                int taskCount        = db.Tasks.ToArray().Count();
                int taskLogCount     = db.TaskLogs.ToArray().Count();
                int checkInCount     = db.CheckIns.ToArray().Count();
                int taskCheckInCount = db.TaskCheckIns.ToArray().Count();

                Feature feature = new FeatureBF(db).Create(
                    new Feature {
                    ID = 4, Title = "Feature Number 4", Status = RequirementStatus.Active
                });

                Assert.AreEqual(featureCount + 1, db.Features.ToArray().Count());
                Assert.AreEqual(requirementCount + 0, db.Requirements.ToArray().Count());
                Assert.AreEqual(taskCount + 0, db.Tasks.ToArray().Count());
                Assert.AreEqual(taskLogCount + 0, db.TaskLogs.ToArray().Count());
                Assert.AreEqual(checkInCount + 0, db.CheckIns.ToArray().Count());
                Assert.AreEqual(taskCheckInCount + 0, db.TaskCheckIns.ToArray().Count());

                Requirement newRequirement = new Requirement
                {
                    ID        = 6,
                    Title     = "Requirement Number 6",
                    Status    = RequirementStatus.Active,
                    FeatureID = 4
                };
                newRequirement = new RequirementBF(db).Create(newRequirement);
                Assert.AreEqual(featureCount + 1, db.Features.ToArray().Count());
                Assert.AreEqual(requirementCount + 1, db.Requirements.ToArray().Count());
                Assert.AreEqual(taskCount + 0, db.Tasks.ToArray().Count());
                Assert.AreEqual(taskLogCount + 0, db.TaskLogs.ToArray().Count());
                Assert.AreEqual(checkInCount + 0, db.CheckIns.ToArray().Count());
                Assert.AreEqual(taskCheckInCount + 0, db.TaskCheckIns.ToArray().Count());

                Feature fetchedFeature = db.Features
                                         .Where(f => f.ID == 4)
                                         .Include(r => r.Requirements)
                                         .Single();
                Assert.AreEqual(1, fetchedFeature.Requirements.Count());
            }
        }
예제 #6
0
        public void FeatureTest1()
        {
            using (JobLoggerDbContext db = new JobLoggerDbContext())
            {
                FeatureAPI feature = GlobalCommon.NewFeature(5, "Feature Number 5");
                feature.Requirements.Add(GlobalCommon.NewRequirement(7, "Requirement Number 7"));
                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment Number 1"
                });
                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment Number 2"
                });
                feature.Requirements[0].Tasks.Add(GlobalCommon.NewTask(11, "Task Number 11"));
                feature.Requirements[0].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment Number 1"
                });
                feature.Requirements[0].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment Number 2"
                });
                feature.Requirements[0].Tasks[0].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("1 Jan 2019 09:00")));
                feature.Requirements[0].Tasks[0].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "TaskLog Comment Number 1"
                });
                feature.Requirements[0].Tasks[0].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "TaskLog Comment Number 2"
                });
                feature.Requirements.Add(GlobalCommon.NewRequirement(8, "Requirement Number 8"));

                Assert.IsTrue(feature.IsNew);
                Assert.IsTrue(feature.Requirements[0].IsNew);
                Assert.IsTrue(feature.Requirements[1].IsNew);
                Assert.IsTrue(feature.Requirements[0].Tasks[0].IsNew);

                feature = FeatureAPI.From(new FeatureBF(db).Create(FeatureAPI.To(feature)));
                Assert.IsFalse(feature.IsNew);
                Assert.IsFalse(feature.Requirements[0].IsNew);
                Assert.IsFalse(feature.Requirements[1].IsNew);
                Assert.IsFalse(feature.Requirements[0].Tasks[0].IsNew);

                FeatureAPI fetchedFeature = FeatureAPI.From(new FeatureBF(db).Get(5));

                CompareFeatureToFetchedFeature(feature, fetchedFeature);
            }
        }
예제 #7
0
 public ToolsBF(JobLoggerDbContext db)
 {
     this.db = db;
 }
예제 #8
0
 public ToolsController([FromServices] JobLoggerDbContext db) : base(db)
 {
 }
예제 #9
0
        public CandidateBusiness()
        {
            JobLoggerDbContext dbContext = new JobLoggerDbContext();

            _candidateData = new CandidateData(dbContext);
        }
예제 #10
0
 public FeatureController([FromServices] JobLoggerDbContext db) : base(db)
 {
 }
예제 #11
0
 public RequirementController([FromServices] JobLoggerDbContext db) : base(db)
 {
 }
예제 #12
0
 public CodeBranchBF(JobLoggerDbContext db)
 {
     this.db = db;
 }
예제 #13
0
        public void FeatureTest2()
        {
            FeatureAPI feature = GlobalCommon.NewFeature(6, "Feature Number 6");

            using (JobLoggerDbContext db = new JobLoggerDbContext())
            {
                feature = FeatureAPI.From(new FeatureBF(db).Create(FeatureAPI.To(feature)));
                Assert.IsFalse(feature.IsNew);

                feature.Requirements.Add(GlobalCommon.NewRequirement(9, "Requirement Number 9"));
                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment 1 for Requirement 9"
                });
                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment 2 for Requirement 9"
                });
                feature.Requirements[0].Tasks.Add(GlobalCommon.NewTask(12, "Task Number 12"));
                feature.Requirements[0].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment 1 for Task 12"
                });
                feature.Requirements[0].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment 2 for Task 12"
                });
                feature.Requirements[0].Tasks[0].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("1 Jan 2019 09:00")));
                feature.Requirements[0].Tasks[0].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for Time Log 1 for Task 12"
                });
                feature.Requirements[0].Tasks[0].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 2 for Time Log 1 for Task 12"
                });
                feature.Requirements[0].Tasks[0].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("1 Jan 2019 11:30")));
                feature.Requirements[0].Tasks[0].Logs[1].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for Time Log 2 for Task 12"
                });
                feature.Requirements[0].Tasks[0].Logs[1].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 2 for Time Log 2 for Task 12"
                });
                feature.Requirements[0].Tasks.Add(GlobalCommon.NewTask(13, "Task Number 13"));
                feature.Requirements[0].Tasks[1].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment 1 for Task 13"
                });
                feature.Requirements[0].Tasks[1].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("1 Jan 2019 14:00")));
                feature.Requirements[0].Tasks[1].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for Time Log for Task 13"
                });
                feature.Requirements[0].Tasks[1].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 2 for Time Log for Task 13"
                });
                feature.Requirements[0].Tasks.Add(GlobalCommon.NewTask(14, "Task Number 14"));
                feature.Requirements[0].Tasks[2].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment 1 for Task 14"
                });
                feature.Requirements[0].Tasks[2].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("2 Jan 2019 09:00")));
                feature.Requirements[0].Tasks[2].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for Time Log for Task 14"
                });
                feature.Requirements[0].Tasks[2].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 2 for Time Log for Task 14"
                });
                feature.Requirements[0].Tasks[2].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("2 Jan 2019 11:00")));
                feature.Requirements[0].Tasks[2].Logs[1].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for Time Log 2 for Task 14"
                });
                feature.Requirements[0].Tasks[2].Logs[1].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 2 for Time Log 2 for Task 14"
                });

                feature = FeatureAPI.From(new FeatureBF(db).Update(FeatureAPI.To(feature)));
                CheckObjectCount(feature, 1, 2, 3, 4, 5, 10, 0, 0);
                Assert.IsFalse(feature.Requirements[0].IsNew);

                feature.Requirements.Add(GlobalCommon.NewRequirement(10, "equirement Number 10"));
                feature.Requirements[1].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment for Requirement Number 10"
                });
                feature.Requirements[1].Tasks.Add(GlobalCommon.NewTask(15, "Task Number 15"));
                feature.Requirements[1].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Task Comment for Task 15"
                });
                feature.Requirements[1].Tasks[0].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("3 Jan 2019 09:00")));
                feature.Requirements[1].Tasks[0].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for Task 1 for Task Number 15"
                });

                feature = FeatureAPI.From(new FeatureBF(db).Update(FeatureAPI.To(feature)));

                FeatureAPI fetchedFeature = FeatureAPI.From(new FeatureBF(db).Get(6));
                CheckObjectCount(feature, 2, 3, 4, 5, 6, 11, 0, 0);

                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment 3 for Requirement 9"
                });
                feature.Requirements[0].Title = "Updated Requirement Number 9";
                feature.Requirements[0].Comments[0].Comment = "Updated Comment for Requirement Number 9";
                feature = FeatureAPI.From(new FeatureBF(db).Update(FeatureAPI.To(feature)));

                fetchedFeature = FeatureAPI.From(new FeatureBF(db).Get(6));
                CheckObjectCount(feature, 2, 4, 4, 5, 6, 11, 0, 0);
                Assert.AreEqual("Comment 3 for Requirement 9", fetchedFeature.Requirements[0].Comments[2].Comment);
                Assert.AreEqual("Updated Requirement Number 9", fetchedFeature.Requirements[0].Title);
                Assert.AreEqual("Updated Comment for Requirement Number 9", fetchedFeature.Requirements[0].Comments[0].Comment);

                feature.Requirements[1].Tasks.Add(new TaskAPI
                {
                    ID       = 16,
                    Title    = "Bug Number 16",
                    IsActive = true,
                    TaskType = TaskType.Bug,
                    IsNew    = true
                });

                feature = FeatureAPI.From(new FeatureBF(db).Update(FeatureAPI.To(feature)));

                fetchedFeature = FeatureAPI.From(new FeatureBF(db).Get(6));
                CheckObjectCount(feature, 2, 4, 5, 5, 6, 11, 0, 0);
                CheckObjectCount(fetchedFeature, 2, 4, 5, 5, 6, 11, 0, 0);

                feature.Requirements[1].Tasks[1].Comments = new List <TaskCommentAPI>
                {
                    new TaskCommentAPI {
                        Comment = "Comment 1 for Bug 16"
                    },
                    new TaskCommentAPI {
                        Comment = "Comment 2 for Bug 16"
                    }
                };


                feature.Requirements[1].Tasks[1].Logs = new List <TaskLogAPI>
                {
                    new TaskLogAPI
                    {
                        LogDate     = DateTime.Parse("2 Jan 2019"),
                        StartTime   = TimeSpan.Parse("09:00"),
                        EndTime     = TimeSpan.Parse("12:00"),
                        Description = "Task log 1 for Bug 16",
                        Comments    = new List <TaskLogCommentAPI>
                        {
                            new TaskLogCommentAPI {
                                Comment = "Comment for Log 1 of Bug 16"
                            }
                        }
                    },
                    new TaskLogAPI
                    {
                        LogDate     = DateTime.Parse("2 Jan 2019"),
                        StartTime   = TimeSpan.Parse("13:00"),
                        EndTime     = TimeSpan.Parse("15:00"),
                        Description = "Task log 2 for Bug 16",
                        Comments    = new List <TaskLogCommentAPI>
                        {
                            new TaskLogCommentAPI {
                                Comment = "Comment for Log 2 of Bug 16"
                            }
                        },
                        CheckIns = new List <CheckInAPI>
                        {
                            new CheckInAPI
                            {
                                ID           = 2,
                                CheckInTime  = DateTime.Parse("2 Jan 2019 14:34"),
                                CodeBranchID = db.CodeBranches.Where(c => c.Name == "Code Branch 1").Single().ID,
                                Comment      = "CheckIn Number 2",
                                IsNew        = true,
                                TaskCheckIns = new List <TaskCheckInAPI>
                                {
                                    new TaskCheckInAPI {
                                        TaskID = feature.Requirements[1].Tasks[1].ID
                                    }
                                }
                            }
                        }
                    }
                };

                feature = FeatureAPI.From(new FeatureBF(db).Update(FeatureAPI.To(feature)));

                fetchedFeature = FeatureAPI.From(new FeatureBF(db).Get(6));
                CheckObjectCount(feature, 2, 4, 5, 7, 8, 13, 1, 1);
                CheckObjectCount(fetchedFeature, 2, 4, 5, 7, 8, 13, 1, 1);
            }
        }
예제 #14
0
 public RequirementBF(JobLoggerDbContext db)
 {
     this.db = db;
 }
예제 #15
0
 public CheckInController([FromServices] JobLoggerDbContext db) : base(db)
 {
 }
예제 #16
0
        public LogMessageBusiness()
        {
            JobLoggerDbContext dbContext = new JobLoggerDbContext();

            _logMessageData = new LogMessageData(dbContext);
        }
예제 #17
0
 public TimesheetReportBF(JobLoggerDbContext db)
 {
     this.db = db;
 }
예제 #18
0
 public TimesheetReportsController([FromServices] JobLoggerDbContext db) : base(db)
 {
 }
예제 #19
0
 public CodeBranchController([FromServices] JobLoggerDbContext db) : base(db)
 {
 }
예제 #20
0
 public ReportsBF(JobLoggerDbContext db)
 {
     this.db = db;
 }
예제 #21
0
 public FeatureBF(JobLoggerDbContext db)
 {
     this.db = db;
 }
예제 #22
0
 public TaskLogBF(JobLoggerDbContext db)
 {
     this.db = db;
 }
        public RecluterUserBusiness()
        {
            JobLoggerDbContext dbContext = new JobLoggerDbContext();

            _recluterUserData = new RecluterUserData(dbContext);
        }
예제 #24
0
 public CheckInBF(JobLoggerDbContext db)
 {
     this.db = db;
 }
예제 #25
0
        public void Test5()
        {
            using (JobLoggerDbContext db = new JobLoggerDbContext())
            {
                int featureCount     = db.Features.ToArray().Count();
                int requirementCount = db.Requirements.ToArray().Count();
                int taskCount        = db.Tasks.ToArray().Count();
                int taskLogCount     = db.TaskLogs.ToArray().Count();
                int checkInCount     = db.CheckIns.ToArray().Count();
                int taskCheckInCount = db.TaskCheckIns.ToArray().Count();

                Feature feature = new Feature
                {
                    ID           = 3, Title = "Feature Number 3", Status = RequirementStatus.Active,
                    Requirements = new List <Requirement>
                    {
                        new Requirement
                        {
                            ID    = 4, Title = "Requirement Number 4", Status = RequirementStatus.Active,
                            Tasks = new List <Task>
                            {
                                new Task {
                                    ID = 8, Title = "Task Number 8", TaskType = TaskType.Task, IsActive = true
                                }
                            }
                        }
                    }
                };
                feature = new FeatureBF(db).Create(feature);
                Assert.AreEqual(featureCount + 1, db.Features.ToArray().Count());
                Assert.AreEqual(requirementCount + 1, db.Requirements.ToArray().Count());
                Assert.AreEqual(taskCount + 1, db.Tasks.ToArray().Count());
                Assert.AreEqual(taskLogCount, db.TaskLogs.ToArray().Count());
                Assert.AreEqual(checkInCount, db.CheckIns.ToArray().Count());
                Assert.AreEqual(taskCheckInCount, db.TaskCheckIns.ToArray().Count());

                TaskLog newTaskLog = new TaskLog
                {
                    LogDate     = DateTime.Parse("1-July-2019"),
                    StartTime   = TimeSpan.Parse("08:30"),
                    EndTime     = TimeSpan.Parse("10:15"),
                    Description = "TaskLog Number 1",
                    TaskID      = 8
                };

                newTaskLog = new TaskLogBF(db).Create(newTaskLog);
                Assert.AreEqual(featureCount + 1, db.Features.ToArray().Count());
                Assert.AreEqual(requirementCount + 1, db.Requirements.ToArray().Count());
                Assert.AreEqual(taskCount + 1, db.Tasks.ToArray().Count());
                Assert.AreEqual(taskLogCount + 1, db.TaskLogs.ToArray().Count());
                Assert.AreEqual(checkInCount, db.CheckIns.ToArray().Count());
                Assert.AreEqual(taskCheckInCount, db.TaskCheckIns.ToArray().Count());

                CheckIn newCheckIn = new CheckIn
                {
                    ID           = 1,
                    CheckInTime  = DateTime.Parse("1-July-2019 09:43"),
                    Comment      = "CheckIn Number 1",
                    CodeBranchID = db.CodeBranches.Where(c => c.Name == "Code Branch 1").Single().ID,
                    TaskCheckIns = new List <TaskCheckIn> {
                        new TaskCheckIn {
                            TaskID = 8
                        }
                    },
                    TaskLog = newTaskLog
                };
                newCheckIn = new CheckInBF(db).Create(newCheckIn);
                Assert.AreEqual(featureCount + 1, db.Features.ToArray().Count());
                Assert.AreEqual(requirementCount + 1, db.Requirements.ToArray().Count());
                Assert.AreEqual(taskCount + 1, db.Tasks.ToArray().Count());
                Assert.AreEqual(taskLogCount + 1, db.TaskLogs.ToArray().Count());
                Assert.AreEqual(checkInCount + 1, db.CheckIns.ToArray().Count());
                Assert.AreEqual(taskCheckInCount + 1, db.TaskCheckIns.ToArray().Count());

                Task fetchedTask = db.Tasks
                                   .Where(t => t.ID == 8)
                                   .Include(l => l.Logs)
                                   .ThenInclude(c => c.CheckIns)
                                   .ThenInclude(t => t.TaskCheckIns)
                                   .Single();

                Assert.AreEqual(1, fetchedTask.Logs.Count());
                Assert.AreEqual(1, fetchedTask.Logs.First().CheckIns.Count());
                Assert.AreEqual(1, fetchedTask.Logs.First().CheckIns.First().TaskCheckIns.Count());
            }
        }