public async Task GetCode_ReturnsBadRequest_WhenCodeIsEmpty()
        {
            //arange
            var urlService = new Mock <IUrlService>();

            var logger     = new Mock <ILogger <ShortenedUrlsController> >();
            var controller = new ShortenedUrlsController(logger.Object, urlService.Object);

            //act
            var action = await controller.Get("");

            //assert
            Assert.IsType <BadRequestResult>(action);
        }
        public void Get_ReturnsOk()
        {
            //arange
            var urlService = new Mock <IUrlService>();
            var logger     = new Mock <ILogger <ShortenedUrlsController> >();
            var controller = new ShortenedUrlsController(logger.Object, urlService.Object);

            //act
            var action = controller.Get();

            //assert
            var result = Assert.IsType <OkObjectResult>(action);
            var value  = Assert.IsAssignableFrom <string>(result.Value);

            Assert.Equal("Ok", value);
        }
        public async Task GetCode_ReturnsNotFound_WhenNoUrlProvidedByUrlService()
        {
            //arange
            var urlService = new Mock <IUrlService>();

            urlService.Setup(x => x.GetUrlByCode(It.IsAny <string>()))
            .ReturnsAsync(() => "");

            var logger     = new Mock <ILogger <ShortenedUrlsController> >();
            var controller = new ShortenedUrlsController(logger.Object, urlService.Object);

            //act
            var action = await controller.Get(ranCod);

            //assert
            Assert.IsType <NotFoundResult>(action);
        }
        public async Task GetCode_ReturnsUrlAsync()
        {
            //arange
            var urlService = new Mock <IUrlService>();

            urlService.Setup(x => x.GetUrlByCode(It.IsAny <string>()))
            .ReturnsAsync(() => constUrl);
            var logger     = new Mock <ILogger <ShortenedUrlsController> >();
            var controller = new ShortenedUrlsController(logger.Object, urlService.Object);

            //act
            var action = await controller.Get(ranCod);

            //assert
            var result = Assert.IsType <OkObjectResult>(action);
            var value  = Assert.IsAssignableFrom <string>(result.Value);

            Assert.Equal(constUrl, value);
        }