Exemple #1
0
        public void Shorten_WithNullLink_ShouldThrowArgumentException()
        {
            //Arrange
            var mockUnitOfWork = Mock.Of <IUnitOfWork>();
            var mocklogger     = Mock.Of <ILogger>();
            var logic          = new UrlLogic(mockUnitOfWork, mocklogger);

            //Act
            logic.Shorten(null);

            //Assert
            // ExpectedException Attribute
        }
Exemple #2
0
        public void Expand_WithInvalidShortUrl_ShouldThrowFormatException()
        {
            //Arrange
            var mockLinkRepository = new Mock <IRepository <Link> >();
            var mockUnitOfWork     = new Mock <IUnitOfWork>();

            mockUnitOfWork.SetupGet(x => x.LinkRepository).Returns(mockLinkRepository.Object);
            mockLinkRepository.Setup(x => x.GetByID(It.IsAny <int>())).Returns((Link)null);
            var mocklogger = Mock.Of <ILogger>();

            var logic = new UrlLogic(mockUnitOfWork.Object, mocklogger);

            //Act
            logic.Expand("InvalidValule");

            //Assert
            // ExpectedException Attribute
        }
Exemple #3
0
        public void Expand_WithMissingUrl_ShouldThrowArgumentException()
        {
            //Arrange
            var mockLinkRepository = new Mock <IRepository <Link> >();
            var mockUnitOfWork     = new Mock <IUnitOfWork>();

            mockUnitOfWork.SetupGet(x => x.LinkRepository).Returns(mockLinkRepository.Object);
            mockLinkRepository.Setup(x => x.GetByID(0)).Returns((Link)null);
            var mocklogger = Mock.Of <ILogger>();

            var logic = new UrlLogic(mockUnitOfWork.Object, mocklogger);

            //Act
            logic.Expand("AAAAAA");

            //Assert
            // ExpectedException Attribute
        }
Exemple #4
0
        public void Shorten_WithZeroId_ShouldThrowException()
        {
            //Arrange
            var mockLinkRepository = Mock.Of <IRepository <Link> >();
            var mockUnitOfWork     = new Mock <IUnitOfWork>();

            mockUnitOfWork.SetupGet(x => x.LinkRepository).Returns(mockLinkRepository);
            var mocklogger = Mock.Of <ILogger>();

            var logic = new UrlLogic(mockUnitOfWork.Object, mocklogger);

            var link = new Link()
            {
                LongUrl = "some url",
                Id      = 0
            };

            //Act
            logic.Shorten(link);

            //Assert
            // ExpectedException Attribute
        }
Exemple #5
0
        public void Shorten_WithLink_ShouldCalculateShortUrl()
        {
            //Arrange
            var mockLinkRepository = Mock.Of <IRepository <Link> >();
            var mockUnitOfWork     = new Mock <IUnitOfWork>();

            mockUnitOfWork.SetupGet(x => x.LinkRepository).Returns(mockLinkRepository);
            var mocklogger = Mock.Of <ILogger>();

            var logic = new UrlLogic(mockUnitOfWork.Object, mocklogger);

            var link = new Link()
            {
                LongUrl = "some url",
                Id      = 1
            };

            //Act
            logic.Shorten(link);

            //Assert
            link.ShortUrl.Should().NotBeNullOrEmpty("Shorten should calculate the ShortUrl Property");
        }
Exemple #6
0
        public void Shorten_WithLink_ShouldCallRepositoryInsert()
        {
            //Arrange
            var mockLinkRepository = new Mock <IRepository <Link> >();
            var mockUnitOfWork     = new Mock <IUnitOfWork>();

            mockUnitOfWork.SetupGet(x => x.LinkRepository).Returns(mockLinkRepository.Object);
            var mocklogger = Mock.Of <ILogger>();

            var logic = new UrlLogic(mockUnitOfWork.Object, mocklogger);
            var link  = new Link()
            {
                LongUrl     = "some url",
                CreatedDate = DateTime.Now.AddDays(-1),
                Id          = 1
            };

            //Act
            logic.Shorten(link);

            //Assert
            mockLinkRepository.Verify(x => x.Insert(link), "Link Repository should call insert when shortening a url");
        }
Exemple #7
0
        public void Shorten_WithLink_ShouldSetCreatedDate()
        {
            //Arrange
            var mockLinkRepository = Mock.Of <IRepository <Link> >();
            var mockUnitOfWork     = new Mock <IUnitOfWork>();

            mockUnitOfWork.SetupGet(x => x.LinkRepository).Returns(mockLinkRepository);
            var mocklogger = Mock.Of <ILogger>();

            var logic = new UrlLogic(mockUnitOfWork.Object, mocklogger);

            var link = new Link()
            {
                LongUrl     = "some url",
                CreatedDate = DateTime.Now.AddDays(-1),
                Id          = 1
            };

            //Act
            logic.Shorten(link);

            //Assert
            link.CreatedDate.Should().BeCloseTo(DateTime.Now, precision: 500, because: "Shorten should calculate the ShortUrl Property");
        }
Exemple #8
0
        public void Expand_WithValidShortUrl_ShouldIncrementClicks()
        {
            //Arrange
            var mockLinkRepository = new Mock <IRepository <Link> >();
            var mockUnitOfWork     = new Mock <IUnitOfWork>();

            mockUnitOfWork.SetupGet(x => x.LinkRepository).Returns(mockLinkRepository.Object);
            var link = new Link()
            {
                Clicks  = 0,
                LongUrl = "longUrl"
            };

            mockLinkRepository.Setup(x => x.GetByID(It.IsAny <int>())).Returns(link);
            var mocklogger = Mock.Of <ILogger>();

            var logic = new UrlLogic(mockUnitOfWork.Object, mocklogger);

            //Act
            logic.Expand("AAAAAA");

            //Assert
            link.Clicks.ShouldBeEquivalentTo(1, because: "Expand should increment clicks by one");
        }