Ejemplo n.º 1
0
        public async Task CreateComment_Throws_When_NoUserFound()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(CreateComment_Throws_When_NoUserFound));

            var bar = new Bar {
                Id = Guid.NewGuid(), Name = "Manhattan"
            };
            var userId        = Guid.NewGuid();
            var barCommentDTO = new BarCommentDTO {
                BarId = bar.Id, UserId = userId
            };


            using (var arrangeContext = new CMContext(options))
            {
                await arrangeContext.Bars.AddRangeAsync(bar);

                await arrangeContext.SaveChangesAsync();
            }

            //Act, Assert
            using (var assertContext = new CMContext(options))
            {
                var sut = new BarCommentsServices(assertContext);

                await Assert.ThrowsExceptionAsync <ArgumentNullException>(() => sut.CreateComment(barCommentDTO));
            }
        }
Ejemplo n.º 2
0
        public static BarCommentViewModel GetViewModel(this BarCommentDTO item)
        {
            if (item == null)
            {
                throw new ArgumentNullException();
            }

            return(new BarCommentViewModel
            {
                BarId = item.BarId,
                UserId = item.UserId,
                Comment = item.Comments,
                Name = item.User.UserName,
            });
        }
Ejemplo n.º 3
0
        public static BarComment GetEntity(this BarCommentDTO item)
        {
            if (item == null)
            {
                throw new ArgumentNullException();
            }

            return(new BarComment
            {
                BarId = item.BarId,
                UserId = item.UserId,
                Comments = item.Comments,
                CreatedOn = item.CreatedOn,
            });
        }
Ejemplo n.º 4
0
        public async Task CreateComment_CreatesBar_Correct()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(CreateComment_CreatesBar_Correct));

            var user = new User {
                Id = Guid.NewGuid(), UserName = "******"
            };
            var bar = new Bar {
                Id = Guid.NewGuid(), Name = "Manhattan"
            };

            var barCommentDTO = new BarCommentDTO {
                BarId = bar.Id, UserId = user.Id, Comments = "Good bar"
            };


            using (var arrangeContext = new CMContext(options))
            {
                await arrangeContext.Users.AddRangeAsync(user);

                await arrangeContext.Bars.AddRangeAsync(bar);

                await arrangeContext.SaveChangesAsync();
            }

            //Act, Assert
            using (var assertContext = new CMContext(options))
            {
                var sut    = new BarCommentsServices(assertContext);
                var result = await sut.CreateComment(barCommentDTO);

                Assert.AreEqual(bar.Id, result.BarId);
                Assert.AreEqual(user.Id, result.UserId);
                Assert.AreEqual(1, assertContext.BarComments.Count());
                Assert.IsInstanceOfType(result, typeof(BarCommentDTO));
            }
        }
        /// <summary>
        /// Takes the ID of the user and as well of the bar and creates new comment.
        /// </summary>
        /// <param name="barComment">The data transfer object of bar comment that should be created</param>
        /// <returns>The created comment of bar</returns>
        public async Task <BarCommentDTO> CreateComment(BarCommentDTO barComment)
        {
            var user = await this.context.Users.FirstOrDefaultAsync(u => u.Id == barComment.UserId)
                       ?? throw new ArgumentNullException(Exceptions.NullEntityId);

            var bar = await this.context.Bars.FirstOrDefaultAsync(b => b.Id == barComment.BarId)
                      ?? throw new ArgumentNullException(Exceptions.NullEntityId);

            if (String.IsNullOrWhiteSpace(barComment.Comments))
            {
                throw new ArgumentNullException(Exceptions.CommentRequired);
            }

            var newBarComment = barComment.GetEntity();

            this.context.Bars.Update(bar);
            this.context.Users.Update(user);
            await this.context.BarComments.AddAsync(newBarComment);

            await this.context.SaveChangesAsync();

            return(newBarComment.GetDTO());
        }