Exemplo n.º 1
0
        public async Task SaveArticle_ForExistingArticleWithNewUsers_ShouldSucceed()
        {
            var originalUser1 = new User
            {
                Email = USER1_EMAIL,
                Name  = "User1"
            };

            Context.Users.Add(originalUser1);

            var originalUser2 = new User
            {
                Email = USER2_EMAIL,
                Name  = "User2"
            };

            Context.Users.Add(originalUser2);

            var originalTag = new Tag
            {
                Name = TAG_NAME
            };

            Context.Tags.Add(originalTag);

            var originalArticle = CreateArticle();

            Context.Articles.Add(originalArticle);

            var originalArticleTag = new ArticleTag
            {
                Article = originalArticle,
                Tag     = originalTag
            };

            Context.ArticleTags.Add(originalArticleTag);

            var originalArticleUser = new ArticleUser
            {
                Article = originalArticle,
                User    = originalUser1,
                Status  = ArticleStatus.New
            };

            Context.ArticleUsers.Add(originalArticleUser);

            var originalTagUser1 = new TagUser
            {
                Tag  = originalTag,
                User = originalUser1,
            };

            Context.TagUsers.Add(originalTagUser1);

            var originalTagUser2 = new TagUser
            {
                Tag  = originalTag,
                User = originalUser2,
            };

            Context.TagUsers.Add(originalTagUser1);

            SaveAndRecreateContext();

            _pdfService.Setup(s => s.QueueArticle(It.IsAny <string>()))
            .Returns(Task.CompletedTask);

            var service = GetSut <ArticleService>();

            var user2   = Context.Users.Single(u => u.Email == USER2_EMAIL);
            var tag     = Context.Tags.Single(t => t.Name == TAG_NAME);
            var article = new Article
            {
                Title      = originalArticle.Title,
                Url        = originalArticle.Url,
                AuthorName = originalArticle.AuthorName
            };

            await service.SaveArticle(
                article,
                new List <User> {
                user2
            },
                tag);

            SaveAndRecreateContext();

            var articles = Context.Articles.ToList();

            var savedArticle = Context
                               .Articles
                               .Include(a => a.ArticleTags)
                               .ThenInclude(at => at.Tag)
                               .Include(a => a.ArticleUsers)
                               .ThenInclude(au => au.User)
                               .Single(a => a.Title == article.Title);

            savedArticle.Should().NotBeNull();
            savedArticle.ArticleUsers.Should().NotBeNull();
            savedArticle.ArticleUsers.Should().HaveCount(2);

            var articleUser1 = savedArticle.ArticleUsers.Single(au => au.User.Email == USER1_EMAIL);

            articleUser1.Status.Should().Be(ArticleStatus.New);

            var articleUser2 = savedArticle.ArticleUsers.Single(au => au.User.Email == USER2_EMAIL);

            articleUser1.Status.Should().Be(ArticleStatus.New);

            savedArticle.ArticleTags.Should().NotBeNull();
            savedArticle.ArticleTags.Should().HaveCount(1);
            var articleTag = savedArticle.ArticleTags.Single(at => at.Tag.Name == TAG_NAME);

            _pdfService.Verify(s => s.QueueArticle(article.Url), Times.Never);
            _pdfService.VerifyNoOtherCalls();
        }
Exemplo n.º 2
0
        public async Task <IActionResult> PutUser([FromBody] User user)
        {
            UserType userType = _context.UserTypes.FirstOrDefault(e => e.Type == user.UserType.Type);

            User tmpUser = await _context.Users
                           .Include(u => u.UserSkills).ThenInclude(us => us.Skill)
                           .Include(u => u.UserSkills).ThenInclude(us => us.User)
                           .Include(u => u.ContactInfo)
                           .Include(u => u.TagUsers).ThenInclude(u => u.Tag)
                           .Include(u => u.Location)
                           .FirstOrDefaultAsync(u => u.UserID == user.UserID);

            tmpUser.UserType                 = userType;
            tmpUser.Location.Country         = user.Location.Country;
            tmpUser.Location.Address         = user.Location.Address;
            tmpUser.Location.Postcode        = user.Location.Postcode;
            tmpUser.ContactInfo.MobileNumber = user.ContactInfo.MobileNumber;
            tmpUser.ContactInfo.LinkedIn     = user.ContactInfo.LinkedIn;
            tmpUser.Email     = user.Email;
            tmpUser.BirthYear = user.BirthYear;
            tmpUser.Bio       = user.Bio;
            tmpUser.LastName  = user.LastName;
            tmpUser.Name      = user.Name;
            tmpUser.Username  = user.Username;
            tmpUser.Password  = user.Password;
            tmpUser.Image     = user.Image;

            foreach (TagUser tc in user.TagUsers)
            {
                TagUser tmpTagUser = _context.TagUsers.Include(t => t.Tag).SingleOrDefault(t => t.Tag.TagName == tc.Tag.TagName && t.TagUserID == tc.TagUserID);
                if (tmpTagUser == null || tmpTagUser.Equals(null))
                {
                    //tag is nog niet toegevoegd aan user
                    Tag tmpTag = _context.Tags.SingleOrDefault(t => t.TagName == tc.Tag.TagName);
                    if (tmpTag == null || tmpTag.Equals(null))
                    {
                        tmpUser.TagUsers.Add(new TagUser()
                        {
                            Tag = new Tag()
                            {
                                TagName = tc.Tag.TagName
                            }, User = tmpUser
                        });
                    }
                }
            }

            foreach (UserSkill us in user.UserSkills)
            {
                UserSkill tmpUserSkill = _context.UserSkills.Include(uss => uss.Skill).SingleOrDefault(uss => uss.Skill.SkillName == us.Skill.SkillName && uss.UserSkillID == us.UserSkillID);
                if (tmpUserSkill == null || tmpUserSkill.Equals(null))
                {
                    //skill is nog niet toegevoegd aan user
                    Skill tmpSkill = _context.Skills.SingleOrDefault(s => s.SkillName == us.Skill.SkillName);
                    if (tmpSkill == null || tmpSkill.Equals(null))
                    {
                        tmpUser.UserSkills.Add(new UserSkill()
                        {
                            User = tmpUser, Skill = new Skill()
                            {
                                SkillName = us.Skill.SkillName
                            }
                        });
                    }
                    else
                    {
                        tmpUser.UserSkills.Add(new UserSkill()
                        {
                            User = tmpUser, Skill = tmpSkill
                        });
                    }
                }
            }

            _context.Entry(tmpUser).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(Ok());
        }