예제 #1
0
        public void should_throw_exception_when_passing_null_website()
        {
            string           errorMessage = ApiResponses.WebsiteDetailsCannotBeNull;
            WebsiteDetails   website      = null;
            WebsiteDetailsDb websiteDb    = null;

            _mapper.Setup(n => n.Map <WebsiteDetailsDb>(It.IsAny <WebsiteDetailsDb>())).Returns(websiteDb);
            _mapper.Setup(n => n.Map <WebsiteDetails>(It.IsAny <WebsiteDetailsDb>())).Returns(website);

            _sut.Invoking(n => n.Save(website)).Should().Throw <InvalidWebsiteDetailsException>().WithMessage(errorMessage);
        }
예제 #2
0
        public void should_save_chosen_categories()
        {
            CategoryWebsiteDetails[] categories = new CategoryWebsiteDetails[]
            {
                new CategoryWebsiteDetails()
                {
                    Id = 1, Name = "something 1"
                },
                new CategoryWebsiteDetails()
                {
                    Id = 2, Name = "something 2"
                }
            };

            List <CategoryDb> categoriesDb = new()
            {
                new() { Id = 1, Name = "something 1" },
                new() { Id = 2, Name = "something 2" }
            };

            List <CategoryDb> actualCategories = new()
            {
                new() { Id = 3, Name = "test name" },
                new() { Id = 4, Name = "test name 2" },
            };


            WebsiteDetailsDb alreadyExistingWebsiteDetails = new WebsiteDetailsBuilder().WithCategories(2).Build().Map();

            alreadyExistingWebsiteDetails.Categories = actualCategories;

            WebsiteDetails websiteDetails       = new WebsiteDetailsBuilder().WithCategories(categories).Build();
            var            mappedWebsiteDetails = websiteDetails.Map();

            WebsiteDetailsDb          result             = null;
            Action <WebsiteDetailsDb> saveWebsiteDetails = (websiteDb) => { result = websiteDb; };

            _websitesRepository.Setup(n => n.GetWithCategories(websiteDetails.Id)).Returns(alreadyExistingWebsiteDetails);
            _websitesRepository.Setup(n => n.Save(It.IsAny <WebsiteDetailsDb>())).Callback(saveWebsiteDetails);
            _categoriesRepository.Setup(n => n.Get(It.IsAny <Expression <Func <CategoryDb, bool> > >(),
                                                   It.IsAny <Func <IQueryable <CategoryDb>, IOrderedQueryable <CategoryDb> > >(),
                                                   It.IsAny <string>())).Returns(categoriesDb);

            _sut.Save(websiteDetails);

            result.Categories
            .Should()
            .BeEquivalentTo(new List <CategoryDb>()
            {
                new() { Id = 1, Name = "something 1" },
                new() { Id = 2, Name = "something 2" }
            });
        }
예제 #3
0
        public void should_return_null_when_not_found()
        {
            int              id         = 1321;
            WebsiteDetails   website    = null;
            WebsiteDetailsDb gotWebsite = website.Map();

            _mapper.Setup(n => n.Map <WebsiteDetails>(It.IsAny <WebsiteDetailsDb>())).Returns(website);
            _websitesRepository.Setup(n => n.Get(id)).Returns(gotWebsite);

            var result = _sut.Get(id);

            result.Should().BeNull();
        }
예제 #4
0
        public void should_return_website_details()
        {
            int              id         = 1321;
            WebsiteDetails   website    = new WebsiteDetailsBuilder().Build();
            WebsiteDetailsDb gotWebsite = website.Map();

            _mapper.Setup(n => n.Map <WebsiteDetails>(It.IsAny <WebsiteDetailsDb>())).Returns(website);
            _websitesRepository.Setup(n => n.Get(id)).Returns(gotWebsite);

            var result = _sut.Get(id);

            result.Should().BeEquivalentTo(website);
        }
예제 #5
0
        public void should_return_saved_website_detail()
        {
            WebsiteDetails   website      = new WebsiteDetailsBuilder().WithId(123).Build();
            WebsiteDetailsDb savedWebsite = website.Map();

            _websitesRepository.Setup(n => n.GetWithCategories(website.Id)).Returns(savedWebsite);
            _mapper.Setup(n => n.Map <WebsiteDetailsDb>(It.IsAny <WebsiteDetailsDb>())).Returns(savedWebsite);
            _mapper.Setup(n => n.Map <WebsiteDetails>(It.IsAny <WebsiteDetailsDb>())).Returns(website);
            _websitesRepository.Setup(n => n.Save(It.IsAny <WebsiteDetailsDb>())).Returns(savedWebsite);

            var result = _sut.Save(website);

            result.Should().BeEquivalentTo(website);
        }
예제 #6
0
        public void should_add_website_details_when_WebsiteIds_fulfilled()
        {
            CategoryAdd category = new() {
                Name        = "Category test name",
                WebsitesIds = new List <int> {
                    1, 3
                }
            };
            CategoryDb mappedCategory = category.Map();

            WebsiteDetailsDb[] websiteDetails = new WebsiteDetailsDb[] {
                new WebsiteDetailsDb {
                    id = 1, Url = "test url 1"
                },
                new WebsiteDetailsDb {
                    id = 3, Url = "test url 3"
                },
            };

            CategoryDb expectedResult = new()
            {
                Id       = 0,
                Name     = "Category test name",
                Websites = new List <WebsiteDetailsDb> {
                    new WebsiteDetailsDb {
                        id = 1, Url = "test url 1"
                    },
                    new WebsiteDetailsDb {
                        id = 3, Url = "test url 3"
                    }
                }
            };

            CategoryDb          insertedCategoryDb = null;
            Action <CategoryDb> insertCategory     = (cat) => { insertedCategoryDb = cat; };

            _mapper.Setup(n => n.Map <CategoryDb>(category)).Returns(mappedCategory);
            _websiteDetails.Setup(n => n.Get(
                                      n => category.WebsitesIds.Contains(n.id),
                                      It.IsAny <Func <IQueryable <WebsiteDetailsDb>, IOrderedQueryable <WebsiteDetailsDb> > >(),
                                      It.IsAny <string>())).Returns(websiteDetails);
            _categories.Setup(n => n.Insert(It.IsAny <CategoryDb>())).Callback(insertCategory);

            var result = _sut.Add(category);

            insertedCategoryDb.Should().BeEquivalentTo(expectedResult);
        }

        [Fact]
예제 #7
0
        public void should_add_website_details()
        {
            WebsiteDetails   website       = new WebsiteDetailsBuilder().Build();
            WebsiteDetailsDb websiteMapped = website.Map();
            bool             websiteAdded  = false;

            Action <WebsiteDetailsDb> addWebsite = (website) => { websiteAdded = true; };

            _mapper.Setup(n => n.Map <WebsiteDetailsDb>(It.IsAny <WebsiteDetails>())).Returns(websiteMapped);
            _websitesRepository.Setup(n => n.Add(It.IsAny <WebsiteDetailsDb>())).Callback(addWebsite);

            _sut.Add(website);

            websiteAdded.Should().BeTrue();
        }
예제 #8
0
        public void should_return_added_website_details()
        {
            WebsiteDetails   website       = new WebsiteDetailsBuilder().WithId(0).Build();
            WebsiteDetailsDb websiteMapped = website.Map();

            website.Id = 829;

            _mapper.Setup(n => n.Map <WebsiteDetailsDb>(It.IsAny <WebsiteDetails>())).Returns(websiteMapped);
            _mapper.Setup(n => n.Map <WebsiteDetails>(It.IsAny <WebsiteDetailsDb>())).Returns(website);

            _websitesRepository.Setup(n => n.Add(It.IsAny <WebsiteDetailsDb>())).Returns(websiteMapped);

            var result = _sut.Add(website);

            result.Should().BeEquivalentTo(website);
        }
예제 #9
0
        public void should_add_website_details_without_categories_when_none_chosen()
        {
            WebsiteDetails websiteDetails       = new WebsiteDetailsBuilder().WithCategories(0).Build();
            var            mappedWebsiteDetails = websiteDetails.Map();

            WebsiteDetailsDb          addingWebsiteCategory = null;
            Action <WebsiteDetailsDb> addWebsiteCategory    = (cat) => { addingWebsiteCategory = cat; };

            _websitesRepository.Setup(n => n.Add(It.IsAny <WebsiteDetailsDb>()))
            .Callback(addWebsiteCategory);
            _mapper.Setup(mapper => mapper.Map <WebsiteDetailsDb>(websiteDetails)).Returns(mappedWebsiteDetails);

            _sut.Add(websiteDetails);

            addingWebsiteCategory.Categories
            .Should()
            .BeEmpty();
        }
        public static WebsiteDetails Map(this WebsiteDetailsDb website)
        {
            if (website is null)
            {
                return(null);
            }

            return(new()
            {
                Id = website.id,
                Url = website.Url,
                MainNodeXPathToNewsContainer = website.MainNodeXPathToNewsContainer,
                NewsNodeTag = website.NewsNodeTag,
                NewsNodeClass = website.NewsNodeClass,
                TitleNodeTag = website.TitleNodeTag,
                TitleNodeClass = website.TitleNodeClass,
                DescriptionNodeTag = website.DescriptionNodeTag,
                DescriptionNodeClass = website.DescriptionNodeClass,
                ImgNodeClass = website.ImgNodeClass,
                Category = website.Category
            });
        }
 public WebsiteDetailsDb Save(WebsiteDetailsDb websiteDetails)
 {
     sqlContext.WebsitesDetails.Update(websiteDetails);
     return(websiteDetails);
 }
        public WebsiteDetailsDb Add(WebsiteDetailsDb websiteDetails)
        {
            var test = sqlContext.WebsitesDetails.Add(websiteDetails);

            return(websiteDetails);
        }