예제 #1
0
        public void OpeningAClosedIssue()
        {
            var issue = FakeIssues.FirstOrDefault(i => i.Status == IssueStatus.Closed);

            "Given an existing closed issue".
            f(() =>
            {
                MockIssueStore.Setup(i => i.FindAsync("1")).Returns(Task.FromResult(issue));
                MockIssueStore.Setup(i => i.UpdateAsync("1", issue)).Returns(Task.FromResult(""));
            });
            "When a POST request is made to the issue processor AND the action is 'open'".
            f(() =>
            {
                Request.RequestUri = new Uri(_uriProcessor + "action=open");
                Request.Method     = HttpMethod.Post;
                Response           = Client.SendAsync(Request).Result;
            });
            "Then a '200 OK' status is returned".
            f(() => Response.StatusCode.ShouldEqual(HttpStatusCode.OK));
            "Then the issue is closed".
            f(() =>
            {
                issue.Status.ShouldEqual(IssueStatus.Open);
                MockIssueStore.Verify(i => i.UpdateAsync("1", issue));
            });
        }
예제 #2
0
        public void UpdatingAnIssue()
        {
            var fakeIssue = FakeIssues.FirstOrDefault();

            "Given an existing issue".
            f(() =>
            {
                MockIssueStore.Setup(i => i.FindAsync("1")).Returns(Task.FromResult(fakeIssue));
                MockIssueStore.Setup(i => i.UpdateAsync("1", It.IsAny <Object>())).Returns(Task.FromResult(""));
            });
            "When a PATCH request is made".
            f(() =>
            {
                var issue          = new Issue();
                issue.Title        = "Updated title";
                issue.Description  = "Updated description";
                Request.Method     = new HttpMethod("PATCH");
                Request.RequestUri = _uriIssue1;
                Request.Content    = new ObjectContent <Issue>(issue, new JsonMediaTypeFormatter());
                Response           = Client.SendAsync(Request).Result;
            });
            "Then a '200 OK' status is returned".
            f(() => Response.StatusCode.ShouldEqual(HttpStatusCode.OK));
            "Then the issue should be updated".
            f(() => MockIssueStore.Verify(i => i.UpdateAsync("1", It.IsAny <JObject>())));
        }
예제 #3
0
 public void UpdatingAnIssue(Issue fakeIssue, string title)
 {
     "Given an existing issue".
     f(() =>
     {
         fakeIssue = FakeIssues.FirstOrDefault();
         title     = fakeIssue.Title;
         MockIssueStore.Setup(i => i.FindAsync("1")).Returns(Task.FromResult(fakeIssue));
         MockIssueStore.Setup(i => i.UpdateAsync(It.IsAny <Issue>())).Returns(Task.FromResult(""));
     });
     "When a PATCH request is made".
     f(() =>
     {
         dynamic issue      = new JObject();
         issue.description  = "Updated description";
         Request.Method     = new HttpMethod("PATCH");
         Request.RequestUri = _uriIssue1;
         Request.Content    = new ObjectContent <dynamic>(issue, new JsonMediaTypeFormatter());
         Response           = Client.SendAsync(Request).Result;
     });
     "Then a '200 OK' status is returned".
     f(() => Response.StatusCode.ShouldEqual(HttpStatusCode.OK));
     "Then the issue should be updated".
     f(() => MockIssueStore.Verify(i => i.UpdateAsync(It.IsAny <Issue>())));
     "Then the descripton should be updated".
     f(() => fakeIssue.Description.ShouldEqual("Updated description"));
     "Then the title should not change".
     f(() => fakeIssue.Title.ShouldEqual(title));
 }
예제 #4
0
 public void CreatingANewIssue(dynamic newIssue)
 {
     "Given a new issue".
     f(() =>
     {
         newIssue             = new JObject();
         newIssue.description = "A new issue";
         newIssue.title       = "NewIssue";
         MockIssueStore.Setup(i => i.CreateAsync(It.IsAny <Issue>())).Returns <Issue>(issue =>
         {
             issue.Id = "1";
             return(Task.FromResult(""));
         });
     });
     "When a POST request is made".
     f(() =>
     {
         Request.Method     = HttpMethod.Post;
         Request.RequestUri = _issues;
         Request.Content    = new ObjectContent <dynamic>(newIssue, new JsonMediaTypeFormatter());
         Response           = Client.SendAsync(Request).Result;
     });
     "Then the issue should be added".
     f(() => MockIssueStore.Verify(i => i.CreateAsync(It.IsAny <Issue>())));
     "And a '201 Created' status is returned".
     f(() => Response.StatusCode.ShouldEqual(HttpStatusCode.Created));
     "And the response location header will be set to the resource location".
     f(() => Response.Headers.Location.AbsoluteUri.ShouldEqual("http://localhost/issue/1"));
 }
예제 #5
0
        public void CreatingANewIssue()
        {
            Issue issue = null;

            "Given a new issue".
            f(() =>
            {
                issue = new Issue {
                    Description = "A new issue", Title = "A new issue"
                };
                issue.Description = "A new issue";
                issue.Title       = "A new issue";
                var newIssue      = new Issue {
                    Id = "1"
                };
                MockIssueStore.Setup(i => i.CreateAsync(issue)).Returns(Task.FromResult(newIssue));
            });
            "When a POST request is made".
            f(() =>
            {
                Request.Method     = HttpMethod.Post;
                Request.RequestUri = _issues;
                Request.Content    = new ObjectContent <Issue>(issue, new JsonMediaTypeFormatter());
                Response           = Client.SendAsync(Request).Result;
            });
            "Then a '201 Created' status is returned".
            f(() => Response.StatusCode.ShouldEqual(HttpStatusCode.Created));
            "Then the issue should be added".
            f(() => MockIssueStore.Verify(i => i.CreateAsync(issue)));
            "Then the response location header will be set to the resource location".
            f(() => Response.Headers.Location.AbsoluteUri.ShouldEqual("http://localhost/issue/1"));
        }
예제 #6
0
 public void DeletingAnIssue(Issue fakeIssue)
 {
     "Given an existing issue".
     f(() =>
     {
         fakeIssue = FakeIssues.FirstOrDefault();
         MockIssueStore.Setup(i => i.FindAsync("1")).Returns(Task.FromResult(fakeIssue));
         MockIssueStore.Setup(i => i.DeleteAsync("1")).Returns(Task.FromResult(""));
     });
     "When a DELETE request is made".
     f(() =>
     {
         Request.RequestUri = _uriIssue;
         Request.Method     = HttpMethod.Delete;
         Response           = Client.SendAsync(Request).Result;
     });
     "Then the issue should be removed".
     f(() => MockIssueStore.Verify(i => i.DeleteAsync("1")));
     "And a '200 OK status' is returned".
     f(() => Response.StatusCode.ShouldEqual(HttpStatusCode.OK));
 }