Exemple #1
0
        public async Task ItShouldReturnOkObjectResultWithTheShrtUrlDto()
        {
            var url           = "www.example.com/example";
            var hash          = "Xy12D7";
            var shrtUrlEntity = new ShrtUrlEntity(hash)
            {
                Url = url
            };
            var shrtUrlDto = new ShrtUrlDto().FromShrtUrlEntity(shrtUrlEntity);

            var loggerMock       = new Mock <ILogger <ShrtnController> >();
            var urlValidatorMock = new Mock <IUrlValidator>();
            var hasherMock       = new Mock <IHasher>();
            var shrtUrlRepoMock  = new Mock <IShrtUrlRepo>();

            urlValidatorMock
            .Setup(x => x.ValidateUrl(It.IsAny <string>()))
            .ReturnsAsync(new HttpResponseMessage()
            {
                StatusCode = System.Net.HttpStatusCode.OK
            });

            hasherMock
            .Setup(x => x.GetCode())
            .Returns(hash);

            shrtUrlRepoMock
            .Setup(x => x.AddShrtUrl(It.IsAny <ShrtUrlDto>()))
            .ReturnsAsync(shrtUrlDto);

            var controller = new ShrtnController(
                loggerMock.Object,
                urlValidatorMock.Object,
                shrtUrlRepoMock.Object,
                hasherMock.Object
                );
            var res = await controller.PostAsync(url);

            var expected = new OkObjectResult(new ShrtUrlDto().FromShrtUrlEntity(shrtUrlEntity));

            Assert.Equal(typeof(OkObjectResult), res.GetType());
            Assert.Equal(shrtUrlDto.Url, ((ShrtUrlDto)((OkObjectResult)res).Value).Url);
            Assert.Equal(shrtUrlDto.Code, ((ShrtUrlDto)((OkObjectResult)res).Value).Code);
        }
Exemple #2
0
        public async Task <ShrtUrlDto> AddShrtUrl(ShrtUrlDto shrtUrlDto)
        {
            if (shrtUrlDto == null)
            {
                throw new ArgumentNullException("shrtUrlDto");
            }

            var shrtUrlEntity = new ShrtUrlEntity(shrtUrlDto.Code)
            {
                Url = shrtUrlDto.Url
            };

            TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(shrtUrlEntity);

            TableResult result = await _shrtUrlTable.ExecuteAsync(insertOrMergeOperation);

            ShrtUrlEntity insertedShrtUrlEntity = result.Result as ShrtUrlEntity;

            return(new ShrtUrlDto().FromShrtUrlEntity(insertedShrtUrlEntity));
        }