Ejemplo n.º 1
0
 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>());
 }
Ejemplo n.º 2
0
        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");
        }
Ejemplo n.º 3
0
        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");
        }
Ejemplo n.º 4
0
        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");
        }
Ejemplo n.º 6
0
        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>();
        }
Ejemplo n.º 9
0
        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");
        }
Ejemplo n.º 10
0
        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");
        }
Ejemplo n.º 11
0
        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");
        }
Ejemplo n.º 12
0
        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");
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 17
0
 public void TestInitialize()
 {
     _israelHikingRepository    = Substitute.For <IIsraelHikingRepository>();
     _containerConverterService = Substitute.For <IDataContainerConverterService>();
     _controller = new UrlsController(_israelHikingRepository, _containerConverterService);
 }