public async Task GetAllIssuesBy_DateRange_ProductName_Version_Keywords_StatusAsync(string minDate,
                                                                                            string maxDate,
                                                                                            string productName,
                                                                                            string version,
                                                                                            List <string> keywords,
                                                                                            string status,
                                                                                            int totalCount)
        {
            //Arrange
            var sut = new BugTrackerRepository(_applicationDbContext);

            //Act
            var result = await sut.GetAllIssuesBy_DateRange_ProductName_Version_Keywords_StatusAsync(minDate,
                                                                                                     maxDate,
                                                                                                     productName,
                                                                                                     version,
                                                                                                     keywords,
                                                                                                     status);

            //Assert
            Assert.Equal(totalCount, result.Count);
            //Check for keywords
            foreach (var item in result)
            {
                Assert.True(Helper.IsMatch(item.Description, keywords));
                Assert.Equal(productName, item.ProductName);
                Assert.Equal(version, item.VersionName);
            }
            var unexpectedItems = result.Where(x => x.Status.ToLower() != status.ToLower() &&
                                               x.CreationDate >= DateTime.Parse(minDate, new CultureInfo("en-AU")) &&
                                               x.CreationDate <= DateTime.Parse(minDate, new CultureInfo("en-AU")))
                                  .ToList();

            Assert.Empty(unexpectedItems);
        }
        public async Task GetAllIssuesBy_DateRange_ProductName_Version_Status_ShouldReturnCorrectResult(string minDate,
                                                                                                        string maxDate,
                                                                                                        string productName,
                                                                                                        string version,
                                                                                                        string status,
                                                                                                        int totalCount)
        {
            //Arrange
            var sut = new BugTrackerRepository(_applicationDbContext);

            //Act
            var result = await sut.GetAllIssuesBy_DateRange_ProductName_Version_StatusAsync(minDate,
                                                                                            maxDate,
                                                                                            productName,
                                                                                            version,
                                                                                            status);

            //Assert
            Assert.Equal(totalCount, result.Count);
            var unexpectedItems = result.Where(x => x.Status.ToLower() != status.ToLower() &&
                                               x.ProductName.ToLower() != productName.ToLower() &&
                                               x.VersionName.ToLower() != version.ToLower() &&
                                               x.CreationDate >= DateTime.Parse(minDate, new CultureInfo("en-AU")) &&
                                               x.CreationDate <= DateTime.Parse(minDate, new CultureInfo("en-AU")))
                                  .ToList();

            Assert.Empty(unexpectedItems);
        }
        public async Task GetAllIssuesByStatus_ShouldReturnCorrectResult(string status, int totalCount)
        {
            //Arrange
            var sut = new BugTrackerRepository(_applicationDbContext);

            //Act
            var result = await sut.GetAllIssuesByStatusAsync(status);

            //Assert
            Assert.Equal(totalCount, result.Count);
            var unexpectedItems = result.Where(x => x.Status.ToLower() != status.ToLower()).ToList();

            Assert.Empty(unexpectedItems);
        }
        public async Task GetAllIssuesBy_Keywords_StatusAsync(List <string> keywords, string status, int totalCount)
        {
            //Arrange
            var sut = new BugTrackerRepository(_applicationDbContext);

            //Act
            var result = await sut.GetAllIssuesBy_Keywords_StatusAsync(keywords, status);

            //Assert
            Assert.Equal(totalCount, result.Count);
            //Check for keywords
            foreach (var item in result)
            {
                Assert.True(Helper.IsMatch(item.Description, keywords));
            }

            var unexpectedItems = result.Where(x => x.Status.ToLower() != status.ToLower()).ToList();

            Assert.Empty(unexpectedItems);
        }