public void RetrievingAClosedIssue(Issue fakeIssue, IssueState issue)
        {
            "Given an existing closed issue".
                f(() =>
                {
                    fakeIssue = FakeIssues.Single(i =>
                        i.Status == IssueStatus.Closed);
                    MockIssueStore.Setup(i => i.FindAsync("2"))
                        .Returns(Task.FromResult(fakeIssue));
                });
            "When it is retrieved".
                f(() =>
                {
                    Request.RequestUri = _uriIssue2;
                    issue = Client.SendAsync(Request)
                        .Result.Content.ReadAsAsync<IssueState>().Result;
                });
            "Then it should have a 'open' action link".
                f(() =>
                {
                    var link = issue.Links.FirstOrDefault(l =>
                        l.Rel == IssueLinkFactory.Rels.IssueProcessor &&
                        l.Action == IssueLinkFactory.Actions.Open);
                    link.ShouldNotBeNull();
                    link.Href.AbsoluteUri.ShouldEqual(
                        "http://localhost/issueprocessor/2?action=open");

                });
        }
示例#2
0
        public void RetrievingAnIssue(IssueState issue, Issue fakeIssue)
        {
            "Given an existing issue".
                f(() =>
                {
                    fakeIssue = FakeIssues.FirstOrDefault();
                    fakeIssue.LastModified = new DateTime(2013, 9, 4);

                    MockIssueStore.Setup(i => i.FindAsync("1"))
                        .Returns(Task.FromResult(fakeIssue));
                });
            "When it is retrieved".
                f(() =>
                {
                    Request.RequestUri = _uriIssue1;
                    Response = Client.SendAsync(Request).Result;
                    issue = Response.Content.ReadAsAsync<IssueState>().Result;

                });

            "Then a lastModified header is returned"
                .f(() => Response.Content.Headers.LastModified
                    .ShouldEqual(new DateTimeOffset(new DateTime(2013, 9, 4))));

            "Then a CacheControl header is returned"
                .f(() =>
                {
                    Response.Headers.CacheControl.Public.ShouldBeTrue();
                    Response.Headers.CacheControl.MaxAge.ShouldEqual(TimeSpan.FromMinutes(5));
                });

            "Then a '200 OK' status is returned".
                f(() => Response.StatusCode.ShouldEqual(HttpStatusCode.OK));
            "Then it is returned".f(() => issue.ShouldNotBeNull());
            "Then it should have an id".f(() => issue.Id.ShouldEqual(fakeIssue.Id));
            "Then it should have a title".f(() => issue.Title.ShouldEqual(fakeIssue.Title));
            "Then it should have a description".f(() => issue.Description.ShouldEqual(fakeIssue.Description));
            "Then it should have a state".f(() => issue.Status.ShouldEqual(Enum.GetName(typeof(IssueStatus), fakeIssue.Status)));
            "Then it should have a 'self' link".f(() =>
            {
                var link = issue.Links.FirstOrDefault(l => l.Rel == LinkFactory.Rels.Self);
                link.ShouldNotBeNull();
                link.Href.AbsoluteUri.ShouldEqual("http://localhost/issue/1");

            });
            "Then it should have a transition link".
                f(() =>
                {
                    var link = issue.Links.FirstOrDefault(l => l.Rel == IssueLinkFactory.Rels.IssueProcessor && l.Action == IssueLinkFactory.Actions.Transition);
                    link.ShouldNotBeNull();
                    link.Href.AbsoluteUri.ShouldEqual("http://localhost/issueprocessor/1?action=transition");
                });
        }
示例#3
0
        public void RetrievingNonModifiedIssue(IssueState issue, Issue fakeIssue)
        {
            "Given an existing issue".
                f(() =>
                {
                    fakeIssue = FakeIssues.FirstOrDefault();
                    fakeIssue.LastModified = new DateTime(2013, 9, 4);
                    MockIssueStore.Setup(i => i.FindAsync("1"))
                        .Returns(Task.FromResult(fakeIssue));
                });
            "When it is retrieved with an IfModifiedSince header".
                f(() =>
                {
                    Request.RequestUri = _uriIssue1;
                    Request.Headers.IfModifiedSince = fakeIssue.LastModified;
                    Response = Client.SendAsync(Request).Result;
            //                    issue = Response.Content.ReadAsAsync<IssueState>().Result;

                });

            //"Then a lastModified header is returned"
            //    .f(() => Response.Content.Headers.LastModified
            //        .ShouldEqual(new DateTimeOffset(new DateTime(2013, 9, 4))));

            "Then a CacheControl header is returned"
                .f(() =>
                {
                    Response.Headers.CacheControl.Public.ShouldBeTrue();
                    Response.Headers.CacheControl.MaxAge.ShouldEqual(TimeSpan.FromMinutes(5));
                });
            "Then a '304 NOT MODIFIED' status is returened"
                .f(() => Response.StatusCode.ShouldEqual(HttpStatusCode.NotModified));
            "Then it is not returned"
                .f(() => Assert.Null(Response.Content));
        }
示例#4
0
        public void RetrievingModifiedIssue(IssueState issue, Issue fakeIssue)
        {
            "Given an existing issue".
                f(() =>
                {
                    fakeIssue = FakeIssues.FirstOrDefault();
                    fakeIssue.LastModified = new DateTime(2013, 9, 4);
                    MockIssueStore.Setup(i => i.FindAsync("1"))
                        .Returns(Task.FromResult(fakeIssue));
                });
            "When it is retrieved with an IfModifiedSince header".
                f(() =>
                {
                    Request.RequestUri = _uriIssue1;
                    Request.Headers.IfModifiedSince = fakeIssue.LastModified
                        .Subtract(TimeSpan.FromDays(1));
                    Response = Client.SendAsync(Request).Result;
                     issue = Response.Content.ReadAsAsync<IssueState>().Result;

                });

            "Then a lastModified header is returned"
                .f(() => Response.Content.Headers.LastModified
                    .ShouldEqual(fakeIssue.LastModified));

            "Then a CacheControl header is returned"
                .f(() =>
                {
                    Response.Headers.CacheControl.Public.ShouldBeTrue();
                    Response.Headers.CacheControl.MaxAge.ShouldEqual(TimeSpan.FromMinutes(5));
                });
            "Then a '200 OK' status is returened"
                .f(() => Response.StatusCode.ShouldEqual(HttpStatusCode.OK));
            "Then it is not returned"
                .f(() => issue.ShouldNotBeNull());
        }