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); }
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)); }