public void FindById_MatchingRecordAbsent_ReturnsNull()
        {
            // Arrange
            var filePath = System.IO.Path.Combine(Utilities.IO.UncPath.GetApplicationDirectory(), "[Foundation].[Article].json");

            Utilities.IO.File.Delete(filePath);
            var articleRepository = new ArticleRepository();

            // Act
            var result = articleRepository.FindById(Guid.NewGuid());

            // Assert
            Assert.IsNull(result);
        }
        public void FindById_MatchingRecordPresent_ReturnsInstance()
        {
            // Arrange
            var    count    = 10;
            string filePath = null;

            try
            {
                var articles = new List <Article>();
                for (var i = 0; i < count; i++)
                {
                    articles.Add(new Article
                    {
                        ApprovalStatus = 444,
                        ApprovedBy     = "Ryan",
                        DateApproved   = DateTime.Now,
                        DateTime       = DateTime.Now.AddDays(-1),
                        Id             = Guid.NewGuid(),
                        Rating         = 5,
                        RelatesToId    = Guid.NewGuid().ToString(),
                        RelatesToType  = "Test",
                        ThreadId       = Guid.NewGuid(),
                        UserId         = Guid.NewGuid().ToString(),
                        WebsiteId      = Guid.NewGuid()
                    });
                }

                var serialisedArticles     = JsonConvert.SerializeObject(articles);
                var serialisedArticleBytes = System.Text.Encoding.Unicode.GetBytes(serialisedArticles);
                filePath = System.IO.Path.Combine(Utilities.IO.UncPath.GetApplicationDirectory(), "[Foundation].[Article].json");
                System.IO.File.WriteAllBytes(filePath, serialisedArticleBytes);
                var articleRepository = new ArticleRepository();
                var sourceObject      = articles.First(a => a != null);

                // Act
                var result = articleRepository.FindById(sourceObject.Id);

                // Assert
                var comparer = new Utilities.Collections.EqualityComparer <Article>();
                Assert.IsTrue(comparer.Equals(sourceObject, result));
            }
            finally
            {
                if (!string.IsNullOrWhiteSpace(filePath))
                {
                    Utilities.IO.File.Delete(filePath);
                }
            }
        }
예제 #3
0
        public void Map_GivenIsValidArticle_ShouldMapCorrectly()
        {
            var articleMapper    = new ArticleMapper();
            var articleRepositry = new ArticleRepository();

            var article = articleRepositry.FindById(1001);

            var articleDto = articleMapper.Map(article);

            articleDto.Should().BeEquivalentTo(article, options =>
                                               options
                                               .Excluding(art => art.LastModified)
                                               .Excluding(art => art.LastModifiedBy)
                                               );
        }
예제 #4
0
        public object GetById(long id)
        {
            Article article = _articleRepository.FindById(id);

            return(_articleMapper.Map(article));
        }
        public void FindById_RelativeUpperDirectoryPathExplicitlySpecified_RepositoryLooksAtCorrectDirectory()
        {
            // Arrange
            var    originalDirectoryPath    = Configuration.ConfigurationSettings.DataDirectoryPath;
            var    originalFilePath         = System.IO.Path.Combine(originalDirectoryPath, "[Foundation].[Article].json");
            string newAbsoluteDirectoryPath = null;
            string filePath = null;
            var    count    = 10;

            try
            {
                if (System.IO.File.Exists(originalFilePath))
                {
                    Utilities.IO.File.Delete(originalFilePath);
                }

                var newRelativeDirectoryPath = "..\\data444";
                var combinedPath             = System.IO.Path.Combine(Utilities.IO.UncPath.GetApplicationDirectory(), newRelativeDirectoryPath);
                newAbsoluteDirectoryPath = System.IO.Path.GetFullPath(combinedPath);
                if (System.IO.Directory.Exists(newAbsoluteDirectoryPath))
                {
                    Utilities.IO.Directory.Delete(newAbsoluteDirectoryPath);
                }
                Utilities.IO.Directory.Create(newAbsoluteDirectoryPath);
                Configuration.ConfigurationSettings.DataDirectoryPath = newRelativeDirectoryPath;

                var articles = new List <Article>();
                for (var i = 0; i < count; i++)
                {
                    articles.Add(new Article
                    {
                        ApprovalStatus = 444,
                        ApprovedBy     = "Ryan",
                        DateApproved   = DateTime.Now,
                        DateTime       = DateTime.Now.AddDays(-1),
                        Id             = Guid.NewGuid(),
                        Rating         = 5,
                        RelatesToId    = Guid.NewGuid().ToString(),
                        RelatesToType  = "Test",
                        ThreadId       = Guid.NewGuid(),
                        UserId         = Guid.NewGuid().ToString(),
                        WebsiteId      = Guid.NewGuid()
                    });
                }

                var serialisedArticles     = JsonConvert.SerializeObject(articles);
                var serialisedArticleBytes = System.Text.Encoding.Unicode.GetBytes(serialisedArticles);
                filePath = System.IO.Path.Combine(newAbsoluteDirectoryPath, "[Foundation].[Article].json");
                System.IO.File.WriteAllBytes(filePath, serialisedArticleBytes);
                var articleRepository = new ArticleRepository();
                var sourceObject      = articles.First(a => a != null);

                // Act
                var result = articleRepository.FindById(sourceObject.Id);

                // Assert
                var comparer = new Utilities.Collections.EqualityComparer <Article>();
                Assert.IsTrue(comparer.Equals(sourceObject, result));
            }
            finally
            {
                if (!string.IsNullOrWhiteSpace(filePath))
                {
                    Utilities.IO.File.Delete(filePath);
                }

                if (!string.IsNullOrWhiteSpace(newAbsoluteDirectoryPath))
                {
                    Utilities.IO.Directory.Delete(newAbsoluteDirectoryPath);
                }

                Configuration.ConfigurationSettings.DataDirectoryPath = originalDirectoryPath;
            }
        }
        public void FindById_DataHasParentItem_ParentItemPresentInObject()
        {
            // Arrange
            string filePath = null;

            try
            {
                var parentArticle = new Article
                {
                    ApprovalStatus = 444,
                    ApprovedBy     = "Ryan",
                    DateApproved   = DateTime.Now,
                    DateTime       = DateTime.Now.AddDays(-1),
                    Id             = Guid.NewGuid(),
                    Rating         = 5,
                    RelatesToId    = Guid.NewGuid().ToString(),
                    RelatesToType  = "Test",
                    ThreadId       = Guid.NewGuid(),
                    UserId         = Guid.NewGuid().ToString(),
                    WebsiteId      = Guid.NewGuid()
                };

                var article = new Article
                {
                    ApprovalStatus = 444,
                    ApprovedBy     = "Ryan",
                    DateApproved   = DateTime.Now,
                    DateTime       = DateTime.Now.AddDays(-1),
                    Id             = Guid.NewGuid(),
                    Parent         = parentArticle,
                    ParentId       = parentArticle.Id,
                    Rating         = 5,
                    RelatesToId    = Guid.NewGuid().ToString(),
                    RelatesToType  = "Test",
                    ThreadId       = Guid.NewGuid(),
                    UserId         = Guid.NewGuid().ToString(),
                    WebsiteId      = Guid.NewGuid()
                };

                var articles = new List <Article>();
                articles.Add(parentArticle);
                articles.Add(article);
                var serialisedArticles = JsonConvert.SerializeObject(articles, new JsonSerializerSettings {
                    Formatting = Formatting.Indented, ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                });
                var serialisedArticleBytes = System.Text.Encoding.Unicode.GetBytes(serialisedArticles);
                filePath = System.IO.Path.Combine(Utilities.IO.UncPath.GetApplicationDirectory(), "[Foundation].[Article].json");
                System.IO.File.WriteAllBytes(filePath, serialisedArticleBytes);
                var articleRepository = new ArticleRepository();

                // Act
                var result = articleRepository.FindById(article.Id);

                // Assert
                var comparer = new Utilities.Collections.EqualityComparer <Article>();
                Assert.IsTrue(comparer.Equals(article, result));
                Assert.IsTrue(comparer.Equals(article.Parent, parentArticle));
            }
            finally
            {
                if (!string.IsNullOrWhiteSpace(filePath))
                {
                    Utilities.IO.File.Delete(filePath);
                }
            }
        }