예제 #1
0
        public void TestGetNewsReturns200OkWhenTheNewsIsInTheDatabase()
        {
            this.businessValidation.Setup(validation => validation.IsValidGetNews(this.newsStorageMock.Object, It.IsAny <string>(), It.IsAny <DateTime>(), It.IsAny <Guid>())).Returns(Task.FromResult(true));
            this.newsStorageMock.Setup(storage => storage.GetNews(It.IsAny <string>(), It.IsAny <DateTime>(), It.IsAny <Guid>())).Returns(Task.FromResult(News.ToNewsBll(Id, DefaultNews, City, DefaultUser.Nickname, DateTime.Parse(Date))));

            var newsController = new NewsController(this.newsStorageMock.Object, this.inputValidation.Object, this.businessValidation.Object);

            var request = new HttpRequestMessage(HttpMethod.Get, GOUriBuilder.BuildAbsoluteNewsUri(Scheme, Host, Port, City, Date, Id.ToString()));

            request.Headers.Referrer = new Uri(GOUriBuilder.BuildAbsoluteNewsUri(Scheme, Host, Port, City, Date, Id.ToString()));

            newsController.ConfigureForTesting(request, "ListNews", new HttpRoute(GOUriBuilder.GetNewsTemplate));

            HttpResponseMessage response = newsController.Get(City, Date, Id.ToString()).Result;

            HttpContent content     = response.Content;
            string      jsonContent = content.ReadAsStringAsync().Result;
            var         actualNews  = JsonConvert.DeserializeObject <NewsREST>(jsonContent);

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.IsTrue(new NewsCompleteEqualityComparer().Equals(DefaultNews, NewsREST.ToNews(actualNews)));
            Assert.IsTrue(actualNews.Links.Any(link => string.Equals("self", link.Rel)));
            Assert.AreEqual(new Uri(GOUriBuilder.BuildAbsoluteNewsUri(Scheme, Host, Port, City, Date, Id.ToString())), actualNews.Links.First(link => string.Equals("self", link.Rel)).Href);
            Assert.IsTrue(actualNews.Links.Any(link => string.Equals("author", link.Rel)));
            Assert.AreEqual(new Uri(GOUriBuilder.BuildAbsoluteUserUri(Scheme, Host, Port, NewsControllerTest.DefaultUser.Nickname)), actualNews.Links.First(link => string.Equals("author", link.Rel)).Href);
        }
예제 #2
0
        private async Task <HttpResponseMessage> ExecuteGetAsync(params object[] parameters)
        {
            var city   = (string)parameters[0];
            var date   = (string)parameters[1];
            var newsId = (string)parameters[2];

            await this.ValidateGetNewsOperation(city, date, newsId);

            NewsREST news = NewsREST.FromNewsBll(await this.repository.GetNews(city, DateTime.Parse(date), Guid.Parse(newsId)), this.Request);

            HttpResponseMessage response = this.Request.CreateResponse(HttpStatusCode.OK, news);

            return(response);
        }
예제 #3
0
        private async Task <HttpResponseMessage> ExecuteGetAsync(params object[] parameters)
        {
            var city = (string)parameters[0];

            DateTime day = DateTime.Now;

            await this.ValidateGetOperation(city, day);

            List <NewsREST> retrievedNews =
                (await this.repository.ListNews(city, day)).Select(
                    news => NewsREST.FromNewsBll(news, this.Request)).Take(10).ToList();

            HttpResponseMessage response = this.Request.CreateResponse(HttpStatusCode.OK, retrievedNews);

            return(response);
        }
예제 #4
0
 public static NewsClient FromNewsREST(NewsREST newsREST)
 {
     return(new NewsClient {
         Title = newsREST.Title, Content = newsREST.Content
     });
 }