public void TestInitialize() { _repository = Substitute.For <IRepository>(); _containerConverterService = Substitute.For <IDataContainerConverterService>(); _imgurGateway = Substitute.For <IImgurGateway>(); _controller = new UrlsController(_repository, _containerConverterService, new Base64ImageStringToFileConverter(), _imgurGateway, Substitute.For <ILogger>()); }
public void Expand_Always_ShouldCallExpandLogic() { var mockUrlLogic = new Mock <IUrlLogic>(); var urlsController = new UrlsController(mockUrlLogic.Object); //Act ActionResult actionResult = urlsController.Expand("shortUrl"); //Assert mockUrlLogic.Verify(x => x.Expand(It.IsAny <string>()), "expand should reach logic"); }
public void ShortenGet_Always_ShouldReturnView() { //Arrange var mockUrlLogic = new Mock <IUrlLogic>(); var urlsController = new UrlsController(mockUrlLogic.Object); //Act ActionResult actionResult = urlsController.Shorten(); //Assert actionResult.Should().BeOfType <ViewResult>(because: "shorten get action should return view"); }
public void ShortenGet_Always_ShouldReturnShortenView() { //Arrange var mockUrlLogic = new Mock <IUrlLogic>(); var urlsController = new UrlsController(mockUrlLogic.Object); //Act ActionResult actionResult = urlsController.Shorten(); //Assert (actionResult as ViewResult)?.ViewName.ShouldBeEquivalentTo("shorten"); }
public void Shorten_WithValidModel_ShouldReturnOkLink() { //Arrange var mockUrlLogic = new Mock <IUrlLogic>(); var controller = new UrlsController(mockUrlLogic.Object); var link = new Link(); //Act IHttpActionResult actionResult = controller.Shorten(link); //Assert actionResult.Should().BeOfType <OkNegotiatedContentResult <Link> >(because: "model is valid"); }
public void Expand_WithNoResultFromLogic_ShouldReturnNotFound() { var mockUrlLogic = new Mock <IUrlLogic>(); mockUrlLogic.Setup(x => x.Expand(It.IsAny <string>())).Returns((Link)null); var urlsController = new UrlsController(mockUrlLogic.Object); //Act ActionResult actionResult = urlsController.Expand("shortUrl"); //Assert actionResult.Should().BeOfType <HttpNotFoundResult>(); }
public void Expand_WithNoResultFromLogic_ShouldReturnNotFound() { var mockUrlLogic = new Mock <IUrlLogic>(); mockUrlLogic.Setup(x => x.Expand(It.IsAny <string>())).Returns((Link)null); var controller = new UrlsController(mockUrlLogic.Object); controller.Request = new HttpRequestMessage(); //Act var actionResult = controller.Expand("shortUrl"); //Assert (actionResult as HttpResponseMessage).StatusCode.ShouldBeEquivalentTo(HttpStatusCode.NotFound); }
public void Expand_WithNoResultFromLogic_ShouldReturnHttpResponseMessage() { var mockUrlLogic = new Mock <IUrlLogic>(); mockUrlLogic.Setup(x => x.Expand(It.IsAny <string>())).Returns((Link)null); var controller = new UrlsController(mockUrlLogic.Object); controller.Request = new HttpRequestMessage(); //Act var actionResult = controller.Expand("shortUrl"); //Assert actionResult.Should().BeOfType <HttpResponseMessage>(); }
public void ShortenPost_WithValidModel_ShouldCallShortenLogic() { //Arrange var mockUrlLogic = new Mock <IUrlLogic>(); var urlsController = new UrlsController(mockUrlLogic.Object); var link = new Link() { LongUrl = "nonEmpty" }; //Act ActionResult actionResult = urlsController.Shorten(link); //Assert mockUrlLogic.Verify(x => x.Shorten(It.IsAny <Link>()), "valid model should reach logic"); }
public void ShortenPost_Always_ShouldReturnModel() { //Arrange var mockUrlLogic = new Mock <IUrlLogic>(); var urlsController = new UrlsController(mockUrlLogic.Object); var link = new Link() { LongUrl = "" }; //Act ActionResult actionResult = urlsController.Shorten(link); //Assert (actionResult as ViewResult).Model.Should().BeOfType <Link>(because: "action returns model in any case"); }
public void ShortenPost_WithInalidModel_ShouldReturnModel() { //Arrange var mockUrlLogic = new Mock <IUrlLogic>(); var urlsController = new UrlsController(mockUrlLogic.Object); urlsController.ModelState.AddModelError("", ""); var link = new Link() { LongUrl = "nonEmpty" }; //Act ActionResult actionResult = urlsController.Shorten(link); //Assert (actionResult as ViewResult).Model.Should().BeOfType <Link>(because: "action returns model in any case"); }
public void ShortenPost_WithInalidModel_ShouldNotCallShortenLogic() { //Arrange var mockUrlLogic = new Mock <IUrlLogic>(); var urlsController = new UrlsController(mockUrlLogic.Object); urlsController.ModelState.AddModelError("", ""); var link = new Link() { LongUrl = "nonEmpty" }; //Act ActionResult actionResult = urlsController.Shorten(link); //Assert mockUrlLogic.Verify(x => x.Shorten(It.IsAny <Link>()), Times.Never, "invalid model should not reach logic"); }
public void Expand_WithResultFromLogic_ShouldRedirect() { var mockUrlLogic = new Mock <IUrlLogic>(); mockUrlLogic.Setup(x => x.Expand(It.IsAny <string>())).Returns(new Link() { LongUrl = "nonEmpty" }); var urlsController = new UrlsController(mockUrlLogic.Object); urlsController.ControllerContext = TestHelpers.CreateControllerContext(urlsController); //Act ActionResult actionResult = urlsController.Expand("shortUrl"); //Assert actionResult.Should().BeOfType <RedirectResult>(); }
public void Shorten_WithInvalidModel_ShouldReturnInvalidModelStateResult() { //Arrange var mockUrlLogic = new Mock <IUrlLogic>(); var controller = new UrlsController(mockUrlLogic.Object); controller.ModelState.AddModelError("", ""); var link = new Link() { LongUrl = "nonEmpty" }; //Act IHttpActionResult actionResult = controller.Shorten(link); //Assert actionResult.Should().BeOfType <InvalidModelStateResult>(because: "model is not valid"); }
public void Expand_WithValidResultFromLogic_ShouldRedirect() { var mockUrlLogic = new Mock <IUrlLogic>(); mockUrlLogic.Setup(x => x.Expand(It.IsAny <string>())).Returns(new Link() { LongUrl = "Valid.Url" }); var controller = new UrlsController(mockUrlLogic.Object); controller.Request = new HttpRequestMessage(); //Act var actionResult = controller.Expand("shortUrl"); //Assert (actionResult as HttpResponseMessage).StatusCode.ShouldBeEquivalentTo(HttpStatusCode.Moved); }
public UrlsControllerFixture() { //Mock DbSet<adverts> var tweets = new List <Tweet>() { new Tweet { Id = "twt1", Text = "Tweet 1", SentimentScore = (float)0.05, FavoriteCount = 4, RetweetCount = 2, NamedEntities = null, Timestamp = DateTime.Now, Urls = null, UserId = "usr1" }, new Tweet { Id = "twt2", Text = "Tweet 2", SentimentScore = (float)-0.3, FavoriteCount = 1, RetweetCount = 0, NamedEntities = null, Timestamp = DateTime.Now, Urls = null, UserId = "usr1" }, new Tweet { Id = "twt3", Text = "Tweet 3", SentimentScore = (float)0.55, FavoriteCount = 2, RetweetCount = 0, NamedEntities = null, Timestamp = DateTime.Now, Urls = null, UserId = "usr2" }, new Tweet { Id = "twt4", Text = "Tweet 4", SentimentScore = (float)0.95, FavoriteCount = 7, RetweetCount = 1, NamedEntities = null, Timestamp = DateTime.Now, Urls = null, UserId = "usr3" }, new Tweet { Id = "twt5", Text = "Tweet 5", SentimentScore = (float)-0.35, FavoriteCount = 3, RetweetCount = 0, NamedEntities = null, Timestamp = DateTime.Now, Urls = null, UserId = "usr2" }, new Tweet { Id = "twt6", Text = "Tweet 6", SentimentScore = (float)-0.95, FavoriteCount = 6, RetweetCount = 2, NamedEntities = null, Timestamp = DateTime.Now, Urls = null, UserId = "usr1" }, new Tweet { Id = "twt7", Text = "Tweet 7", SentimentScore = (float)0.25, FavoriteCount = 5, RetweetCount = 1, NamedEntities = null, Timestamp = DateTime.Now, Urls = null, UserId = "usr1" } }.AsQueryable(); //Mock DbSet<UrlTweet> var urls = new List <UrlTweet>() { new UrlTweet() { Tweet = tweets.Where(t => t.Id.Equals("twt1")).FirstOrDefault(), TweetId = "twt1", Url = "http://example.com/url1" }, new UrlTweet() { Tweet = tweets.Where(t => t.Id.Equals("twt2")).FirstOrDefault(), TweetId = "twt2", Url = "http://example.com/url1" }, new UrlTweet() { Tweet = tweets.Where(t => t.Id.Equals("twt3")).FirstOrDefault(), TweetId = "twt3", Url = "http://example.com/url1" }, new UrlTweet() { Tweet = tweets.Where(t => t.Id.Equals("twt4")).FirstOrDefault(), TweetId = "twt4", Url = "http://example.com/url2" }, new UrlTweet() { Tweet = tweets.Where(t => t.Id.Equals("twt5")).FirstOrDefault(), TweetId = "twt5", Url = "http://example.com/url2" }, new UrlTweet() { Tweet = tweets.Where(t => t.Id.Equals("twt6")).FirstOrDefault(), TweetId = "twt6", Url = "http://example.com/url3" }, }.AsQueryable(); //Mock DbSet<NamedEntityTweet> var namedEntities = new List <NamedEntityTweet>() { new NamedEntityTweet() { NamedEntityText = "keyword1", Tweet = tweets.Where(t => t.Id.Equals("twt1")).FirstOrDefault(), TweetId = "twt1", }, new NamedEntityTweet() { NamedEntityText = "keyword2", Tweet = tweets.Where(t => t.Id.Equals("twt1")).FirstOrDefault(), TweetId = "twt1", }, new NamedEntityTweet() { NamedEntityText = "keyword1", Tweet = tweets.Where(t => t.Id.Equals("twt4")).FirstOrDefault(), TweetId = "twt4", }, new NamedEntityTweet() { NamedEntityText = "keyword3", Tweet = tweets.Where(t => t.Id.Equals("twt3")).FirstOrDefault(), TweetId = "twt3", }, }.AsQueryable(); Mock <DbSet <Tweet> > mockTweets = new Mock <DbSet <Tweet> >(); mockTweets.As <IQueryable <Tweet> >().Setup(m => m.Provider).Returns(tweets.Provider); mockTweets.As <IQueryable <Tweet> >().Setup(m => m.Expression).Returns(tweets.Expression); mockTweets.As <IQueryable <Tweet> >().Setup(m => m.ElementType).Returns(tweets.ElementType); mockTweets.As <IQueryable <Tweet> >().Setup(m => m.GetEnumerator()).Returns(tweets.GetEnumerator()); Mock <DbSet <UrlTweet> > mockUrls = new Mock <DbSet <UrlTweet> >(); mockUrls.As <IQueryable <UrlTweet> >().Setup(m => m.Provider).Returns(urls.Provider); mockUrls.As <IQueryable <UrlTweet> >().Setup(m => m.Expression).Returns(urls.Expression); mockUrls.As <IQueryable <UrlTweet> >().Setup(m => m.ElementType).Returns(urls.ElementType); mockUrls.As <IQueryable <UrlTweet> >().Setup(m => m.GetEnumerator()).Returns(urls.GetEnumerator()); Mock <DbSet <NamedEntityTweet> > mockNamedEntities = new Mock <DbSet <NamedEntityTweet> >(); mockNamedEntities.As <IQueryable <NamedEntityTweet> >().Setup(m => m.Provider).Returns(namedEntities.Provider); mockNamedEntities.As <IQueryable <NamedEntityTweet> >().Setup(m => m.Expression).Returns(namedEntities.Expression); mockNamedEntities.As <IQueryable <NamedEntityTweet> >().Setup(m => m.ElementType).Returns(namedEntities.ElementType); mockNamedEntities.As <IQueryable <NamedEntityTweet> >().Setup(m => m.GetEnumerator()).Returns(namedEntities.GetEnumerator()); //Mock tweet repository MockRepo = new Mock <ITweetRepository>(); MockRepo.Setup(m => m.Tweets).Returns(mockTweets.Object); MockRepo.Setup(m => m.Urls).Returns(mockUrls.Object); MockRepo.Setup(m => m.NamedEntities).Returns(mockNamedEntities.Object); //Create controller Controller = new UrlsController(MockRepo.Object); }
public void TestInitialize() { _israelHikingRepository = Substitute.For <IIsraelHikingRepository>(); _containerConverterService = Substitute.For <IDataContainerConverterService>(); _controller = new UrlsController(_israelHikingRepository, _containerConverterService); }