コード例 #1
0
        public void UpdateAnExistingPost()
        {
            int expectedId = 1;

            var postDto = new PostBuilder()
                          .WithTitle("Put")
                          .Build();

            string payload = JsonConvert.SerializeObject(postDto);

            ResponseContext responseContext = new RestAssured()
                                              .Given()
                                              .Name(Name)
                                              .Header("Content-Type", "application/json")
                                              .Body(payload)
                                              .When()
                                              .Put($"https://jsonplaceholder.typicode.com/posts/{expectedId}")
                                              .Then();

            responseContext.TestBody(
                "Verify an existing Post resource can be updated with HTTP PUT",
                x =>
            {
                int.TryParse(x.id.ToString(), out int actualId);
                Assert.AreEqual(expectedId, actualId);
                return(x.id == expectedId);
            });
        }
コード例 #2
0
        public void GIVEN_Exception_WHEN_OnActionExecuted_THEN_ExceptionIsInCompoundDocument()
        {
            // Arrange
            var transformer     = new JsonApiTransformer();
            var exceptionFilter = new JsonApiExceptionFilter(transformer);


            var post = new PostBuilder()
                       .WithAuthor(PostBuilder.Asimov)
                       .Build();

            var context = new FilterContextBuilder()
                          .WithException("Test exception message")
                          .BuildException();

            // Act
            exceptionFilter.OnException(context);

            // Assert
            var result = (ObjectResult)context.Result;
            var value  = (CompoundDocument)result.Value;

            Assert.Equal(1, value.Errors.Count());
            Assert.Equal("Test exception message", value.Errors.First().Detail);
            Assert.Equal(500, value.Errors.First().Status);
        }
コード例 #3
0
        public Post Put(int id, [FromBody] PostEntity obj)
        {
            Post post = PostBuilder.Build(obj);

            post = this.PostRepository.Update(post, id);
            return(post ?? null);
        }
コード例 #4
0
        public void GIVEN_MultipleInclude_WHEN_ActionExecuted_THEN_AllIncludesPresent()
        {
            // Arrange
            var post = new PostBuilder()
                       .WithAuthor(PostBuilder.Asimov)
                       .WithComment(1, "First")
                       .Build();

            var actionFilter = GetActionFilterForTestModel();
            var context      = new FilterContextBuilder()
                               .WithResult(new ObjectResult(post))
                               .WithQuery("include", "authors,comments")
                               .BuildActionExecuted();

            // Act
            actionFilter.OnActionExecuted(context);

            // Assert
            var result             = (ObjectResult)context.Result;
            var document           = (CompoundDocument)result.Value;
            var includedAttributes = document.Included.SelectMany(x => x.Attributes).ToList();

            Assert.Contains(includedAttributes, x =>
                            x.Key == "name" &&
                            x.Value.ToString() == PostBuilder.Asimov.Name);

            Assert.Contains(includedAttributes, x =>
                            x.Key == "body" &&
                            x.Value.ToString() == "First");
        }
コード例 #5
0
        public async Task PostWithOneComment_GetPostComments_ReturnOne()
        {
            //Assert
            var commentRepository = DatabaseHelper.GetCommentRepository("Get_Comment_Controller");
            var commentController = new CommentsController(commentRepository);
            var postBuilder       = new PostBuilder();
            var commentBuilder    = new CommentBuilder();
            var post    = postBuilder.Build();
            var comment = commentBuilder.Build();

            comment.PostId = post.Id;

            //Act
            commentRepository.Add(comment);
            commentRepository.Save();

            //Assert
            var apiResponse = await commentController.GetComments(post.Id);

            var okResponse = apiResponse as OkObjectResult;

            Assert.NotNull(okResponse);

            var objectResponse = okResponse.Value as List <Comment>;

            Assert.Single(objectResponse);
        }
コード例 #6
0
        public async Task <IActionResult> Create([FromBody] CreatePostRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new ErrorResponse
                {
                    Errors = ModelState.Values.SelectMany(x =>
                                                          x.Errors.Select(e => e.ErrorMessage))
                }));
            }

            var newPost = new PostBuilder()
                          .WithTitle(request?.Title)
                          .WithContent(request?.Content)
                          .WithAttachments(request?.Attachments)
                          .WithAuthor(HttpContext.GetUserId())
                          .Build();

            await _postService
            .CreatePostAsync(newPost)
            .ConfigureAwait(false);

            var locationUrl = _uriService
                              .GetPostUri(newPost.Id.ToString());

            return(Created(locationUrl, new Response <PostResponse>(
                               _mapper.Map <PostResponse>(newPost))));
        }
コード例 #7
0
        public static List <Blog> aListOfBlogsAndPosts(string name = "QWERTY")
        {
            var result = new List <Blog>();

            for (int i = 0; i < 10; i++)
            {
                result.Add(BlogBuilder
                           .aBlog()
                           .WithHits(i)
                           .WithTile(name)
                           .WithPosts(new List <PostBuilder>
                {
                    PostBuilder.aPost()
                    .WithTitle("Post 1"),
                    PostBuilder.aPost()
                    .WithTitle("Post 2"),
                    PostBuilder.aPost()
                    .WithTitle("Post 3"),
                    PostBuilder.aPost()
                    .WithTitle("Post 4"),
                    PostBuilder.aPost()
                    .WithTitle("Post 5"),
                })
                           .WithHits(i)
                           .ToRepository()
                           );
            }

            return(result);
        }
コード例 #8
0
        public void ShouldBeCreated_NewPost_UsingBuilder()
        {
            var faker        = new Faker("pt_BR");
            var expectedPost = new
            {
                Id          = Guid.NewGuid(),
                Title       = faker.Lorem.Paragraph(),
                Content     = faker.Lorem.Text(),
                Attachments = $"{faker.Internet.Url()},{faker.Image.PicsumUrl()}",
                AuthorId    = _authorFake.Id,
                CreatedAt   = DateTime.Now.DefaultFormat(),
                UpdatedAt   = DateTime.Now.DefaultFormat()
            };

            var post = new PostBuilder()
                       .WithId(expectedPost.Id)
                       .WithTitle(expectedPost.Title)
                       .WithContent(expectedPost.Content)
                       .WithAttachments(expectedPost.Attachments)
                       .WithAuthor(expectedPost.AuthorId)
                       .Build();

            expectedPost.Should().BeEquivalentTo(post,
                                                 x => x.ExcludingMissingMembers());
        }
コード例 #9
0
        public void AppendIncludedRepresentationRecursive_RecursesWholeTree()
        {
            // Arrange
            var source = new PostBuilder()
                         .WithAuthor(PostBuilder.Asimov)
                         .WithComment(1, "Comment One")
                         .WithComment(2, "Comment Two")
                         .Build();

            var sourceList = new List <object>()
            {
                source
            };

            var config = TestModelConfigurationBuilder.BuilderForEverything.Build();

            var mapping = config.GetMapping(typeof(Post));
            var context = new Context(
                new Uri("http://dummy:4242/posts"),
                new string[] { "authors.comments" });

            var transformationHelper = new TransformationHelper(config, new FakeLinkBuilder());

            // Act
            var result = transformationHelper.CreateIncludedRepresentations(sourceList, mapping, context);

            // Assert
            Assert.NotNull(result.Single(x => x.Id == "1" && x.Type == "comments"));
            Assert.NotNull(result.Single(x => x.Id == "2" && x.Type == "comments"));
            Assert.NotNull(result.Single(x => x.Id == "1" && x.Type == "authors"));
            Assert.False(result.Any(x => x.Type == "posts"));
        }
コード例 #10
0
ファイル: HomeController.cs プロジェクト: CalvinVest/BlogDB
        public IActionResult AddPostResult(PostModel post)
        {
            try
            {
                var claims = HttpContext.User.Claims;
                post.AuthorName = claims.Where(c => c.Type == ClaimTypes.Name)
                                  .Select(c => c.Value)
                                  .SingleOrDefault();
                var authorID = -1;
                Int32.TryParse(claims.Where(c => c.Type == "AuthorID")
                               .Select(c => c.Value)
                               .SingleOrDefault(), out authorID);
                post.AuthorID = authorID;
                var postBuilder = new PostBuilder(post);
                var postToAdd   = postBuilder.build();
                var postResult  = _postDataAccess.AddPost(postToAdd);
                ViewBag.History = "/Home";

                var pmBuilder = new PostModelBuilder(postResult);
                return(View("ViewSinglePost", pmBuilder.build()));
            }
            catch (ArgumentException e)
            {
                var errorMessage = new ErrorPageModel("Cannot add post.", "The post had empty properties.");
                Console.WriteLine(e.ToString());
                return(ShowError(errorMessage));
            }
        }
コード例 #11
0
        public void GIVEN_PostObject_WHEN_OnActionExecuted_THEN_ResponseValid()
        {
            // Arrange
            var actionFilter = GetActionFilterForTestModel();

            var post = new PostBuilder()
                       .WithAuthor(PostBuilder.Asimov)
                       .Build();

            var context = new FilterContextBuilder()
                          .WithResult(new ObjectResult(post))
                          .BuildActionExecuted();

            // Act
            actionFilter.OnActionExecuted(context);

            // Assert
            var result   = (ObjectResult)context.Result;
            var value    = (CompoundDocument)result.Value;
            var resource = (SingleResource)value.Data;

            Assert.Null(value.Errors);
            Assert.Equal(post.Title, resource.Attributes["title"]);
            Assert.Equal(post.AuthorId, resource.Attributes["authorId"]);
        }
コード例 #12
0
ファイル: HomeController.cs プロジェクト: CalvinVest/BlogDB
        public async Task <IActionResult> DeletePostResult(PostModel post)
        {
            var userCanDelete = await HasDeletePowers();

            if (IsUserPostAuthor(post.AuthorID) || userCanDelete)
            {
                try
                {
                    var postBuilder = new PostBuilder(post);
                    var postResult  = _postDataAccess.DeletePost(postBuilder.build());
                    ViewBag.History = "/Home";
                    return(RedirectToAction("ViewAll"));
                }
                catch (ArgumentException e)
                {
                    var errorMessage = new ErrorPageModel("Invalid Post.", "We couldn't find the post.");
                    ViewBag.History = "/Home/ViewAll";
                    Console.WriteLine(e.ToString());
                    return(ShowError(errorMessage));
                }
            }
            else
            {
                var errorMessage = new ErrorPageModel("Permission Denied.", "You do not have permission to do that.");
                return(ShowError(errorMessage));
            }
        }
コード例 #13
0
ファイル: HomeController.cs プロジェクト: CalvinVest/BlogDB
        public async Task <IActionResult> EditPostResult(PostModel post)
        {
            var userCanEdit = await HasEditPowers();

            if (IsUserPostAuthor(post.AuthorID) || userCanEdit)
            {
                try
                {
                    ViewBag.History = "/Home/ViewAll";

                    var postBuilder = new PostBuilder(post);
                    var postToAdd   = postBuilder.build();
                    var postResult  = _postDataAccess.EditPost(postToAdd);
                    var pmBuilder   = new PostModelBuilder(postResult);
                    return(View("ViewSinglePost", pmBuilder.build()));
                }
                catch (ArgumentException e)
                {
                    ErrorPageModel errorMessage = new ErrorPageModel("Invalid Post.", "The post contained invalid input.");
                    Console.WriteLine(e.ToString());
                    return(ShowError(errorMessage));
                }
            }
            else
            {
                var errorMessage = new ErrorPageModel("Permission Denied", "You do not have permission to edit this post.");
                return(ShowError(errorMessage));
            }
        }
コード例 #14
0
        public async Task ShouldBeCreatedNewPost()
        {
            var faker   = new Faker("pt_BR");
            var newPost = new PostBuilder()
                          .WithId(Guid.NewGuid())
                          .WithTitle(faker.Lorem.Paragraph())
                          .WithContent(faker.Lorem.Text())
                          .WithAttachments(faker.Image.PicsumUrl())
                          .WithAuthor(Guid.Parse("d4182477-0823-4908-be1d-af808e594306"))
                          .Build();

            await _postRepository.CreatePostAsync(newPost);

            var cmdResult = await _inMemoryDbContext.SaveChangesAsync();

            // Verifica se alguma linha foi afetada
            cmdResult.Should().BeGreaterOrEqualTo(1);

            var createdPost = await _postRepository.GetByIdAsync(newPost.Id);

            newPost.Should().BeEquivalentTo(createdPost, options => options
                                            .Excluding(p => p.Author)
                                            .ExcludingMissingMembers());
            createdPost.Author.FirstName.Should().Be("João");
            createdPost.Author.Email.Should().Be("*****@*****.**");
            createdPost.CreatedAt.Should().Be(DateTime.Now.DefaultFormat());
            createdPost.UpdatedAt.Should().Be(DateTime.Now.DefaultFormat());
        }
コード例 #15
0
        public void TimestampIsRequiredForPost()
        {
            var p = new PostBuilder().Build().Post;

            p.Timestamp = default(DateTime);
            Assert.Throws <ValidationException>(() => p.Validate());
        }
コード例 #16
0
        public void TitleIsRequiredForPost()
        {
            var p = new PostBuilder().Build().Post;

            p.Title = "";
            Assert.Throws <ValidationException>(() => p.Validate());
        }
コード例 #17
0
        public void CreateANewPost()
        {
            var    postDto = new PostBuilder().Build();
            string payload = JsonConvert.SerializeObject(postDto);

            ResponseContext responseContext = new RestAssured()
                                              .Given()
                                              .Name(Name)
                                              .Header("Content-Type", "application/json")
                                              .Body(payload)
                                              .When()
                                              .Post("https://jsonplaceholder.typicode.com/posts")
                                              .Then();

            responseContext.TestBody(
                "Verify a new Post resource can be created with HTTP POST by confirming the Id returned in the response",
                x =>
            {
                int.TryParse(x.id.ToString(), out int actualId);
                Assert.AreEqual(101, actualId);
                return(x.id == 101);
            });

            responseContext.TestStatus(
                "Verify a new Post resource can be created with HTTP POST by confirming the response HTTP status code",
                x =>
            {
                Assert.AreEqual(201, x);
                return(x == 201);
            });


            responseContext.AssertAll();
        }
コード例 #18
0
        /// <summary>
        ///     Get the RedditPosts
        /// </summary>
        private void CreatePost()
        {
            var postBuilder = new PostBuilder();
            var posts       = postBuilder.GetPosts();

            Iterator = new Iterator.Iterator(posts);
            Post     = Iterator.CurrentItem;
        }
コード例 #19
0
        public void NotNullDescriptionTest()
        {
            var builder = new PostBuilder();

            var postTest = builder
                           .CheckDescription("Description");

            Assert.NotNull(postTest);
        }
コード例 #20
0
        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            var postBuilder            = new PostBuilder(builder.Entity <Post>());
            var pageBuilder            = new PageBuilder(builder.Entity <Page>());
            var categoryBuilder        = new CategoryBuilder(builder.Entity <Category>());
            var feedbackBuilder        = new FeedbackBuilder(builder.Entity <Feedback>());
            var applicationUserBuilder = new ApplicationUserBuilder(builder.Entity <ApplicationUser>());
        }
コード例 #21
0
        public ThreadBuilder WithPost(PostBuilder postBuilder)
        {
            if (postBuilder == null)
            {
                throw new ArgumentNullException(nameof(postBuilder));
            }

            postBuilder.InThread(_thread);
            _postBuilder = postBuilder;
            return(this);
        }
コード例 #22
0
        public async Task ShouldBeReturnedFalseIfDeletedPostNotExists()
        {
            var notExistingPost = new PostBuilder()
                                  .WithTitle("Post not found")
                                  .WithContent("It's a post not exist")
                                  .WithAttachments("err.txt,image.jpg")
                                  .Build();

            var deleted = await _postService
                          .DeletePostAsync(notExistingPost);

            deleted.Should().BeFalse();
        }
コード例 #23
0
        public void PostDerive()
        {
            var post = new PostBuilder(this.Session).Build();

            this.Session.Derive();

            Assert.Equal(1, post.Counter);

            post.Counter = 3;

            this.Session.Derive();

            Assert.Equal(5, post.Counter);
        }
コード例 #24
0
        public async Task ShouldBeCreatedPost()
        {
            var newPost = new PostBuilder()
                          .WithTitle("Post 3")
                          .WithContent("New post created by xunit test")
                          .WithAttachments("log.txt,image.jpg")
                          .WithAuthor(Guid.Parse("9ab3d110-71e1-418f-86eb-519146e7d702"))
                          .Build();

            var created = await _postService.CreatePostAsync(newPost);

            created.Should().BeTrue();
            _dbContext.Posts.Should().HaveCount(3);
        }
コード例 #25
0
        public void EmptyTable_AddPost_CountIsOne()
        {
            //Arrange
            var postRepository = DatabaseHelper.GetPostRepository("Add_Post_Db");
            var postBuilder    = new PostBuilder();
            var post           = postBuilder.Build();

            //Act
            postRepository.Add(post);
            postRepository.Save();

            //Assert
            Assert.Equal(1, postRepository.GetCount());
        }
コード例 #26
0
        public void ThenPostIsNotDisplayedOnMainPage(string isDisplayed)
        {
            Post post = PostBuilder.GeneratePost(RegistrationService.RegisterNewUser(AccountBuilder.CreateAccount()));

            PostService.AddPost(post);
            if (isDisplayed != "not")
            {
                Assert.IsTrue(PostService.IsPostDisplayed(post));
            }
            else
            {
                Assert.IsFalse(PostService.IsPostDisplayed(post));
            }
        }
コード例 #27
0
 public static BlogBuilder aDefaultBlogWithPost()
 => BlogBuilder.aBlog().WithPosts(new List <PostBuilder>
 {
     PostBuilder.aPost()
     .WithTitle("Post 1"),
     PostBuilder.aPost()
     .WithTitle("Post 2"),
     PostBuilder.aPost()
     .WithTitle("Post 3"),
     PostBuilder.aPost()
     .WithTitle("Post 4"),
     PostBuilder.aPost()
     .WithTitle("Post 5"),
 });
コード例 #28
0
        private static void Main(string[] args)
        {
            // Main project has reference to this project
            // Post build runs this executable (in same folder - only in Release)

            // (1) Remove unnecessary files
            // (2) Run "FilrPostBuild.exe" with parameter pointing towards build directory
            // (3) Delete "ILRepack.dll"
            // (4) Delete "FilrPostBuild.exe"

            PostBuilder.Run(args[0], (builder) =>
            {
                builder.RemoveFilesWithExtensions(".pdb", ".xml", ".exe.config");
                builder.Repack();
            });
        }
コード例 #29
0
        public async Task <Unit> Handle(SeedCommand request, CancellationToken cancellationToken)
        {
            var thread = await _dbContext.Threads.FirstOrDefaultAsync(e => e.Title == "New Thread", cancellationToken);

            if (thread != null)
            {
                return(Unit.Value);
            }

            var user = await _dbContext.Users.FirstOrDefaultAsync(e => e.Username == "Admin",
                                                                  cancellationToken : cancellationToken) ?? new UserBuilder()
                       .WithPassword(BCrypt.Net.BCrypt.EnhancedHashPassword("admin"))
                       .WithUsername("Admin")
                       .WithEmailAddress("*****@*****.**")
                       .WithJoinDateUtc(_dateTimeService.UtcNow)
                       .Build();

            var subForum = await _dbContext.SubForums.FirstOrDefaultAsync(e => e.Title == "Main", cancellationToken) ??
                           new SubForumBuilder()
                           .WithName("Main")
                           .Build();

            var generalTopic =
                await _dbContext.Topics.FirstOrDefaultAsync(e => e.Title == "General", cancellationToken) ??
                new TopicBuilder()
                .WithName("General")
                .UnderSubForum(subForum)
                .Build();

            var postBuilder = new PostBuilder()
                              .WithContent("Hello World")
                              .CreatedDateUtc(_dateTimeService.UtcNow)
                              .CreatedByUser(user);

            thread = new ThreadBuilder()
                     .WithTitle("New Thread")
                     .InTopic(generalTopic)
                     .WithPost(postBuilder)
                     .CreatedBy(user)
                     .CreatedDate(_dateTimeService.UtcNow)
                     .Build();

            _dbContext.Threads.Add(thread);
            await _dbContext.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }
コード例 #30
0
        public void PostWithNoComments_AddComment_CountIsOne()
        {
            //Arrange
            var commentRepository = DatabaseHelper.GetCommentRepository("Add_Post_Db");
            var commentBuilder    = new CommentBuilder();
            var postBuilder       = new PostBuilder();
            var post    = postBuilder.Build();
            var comment = commentBuilder.Build();

            comment.PostId = post.Id;

            //Act
            commentRepository.Add(comment);
            commentRepository.Save();

            //Assert
            Assert.Equal(1, commentRepository.GetCount(post.Id));
        }