public async Task HandleAsync_WhenCommandIsCorrent_ShouldReturnSuccessResult()
        {
            // Arrange
            var handler = new CreateWebsiteHandler(_repositoryMock.Object, _unitOfWorkMock.Object, _cypherMock.Object);

            // Act
            var request = new Application.Websites.Commands.CreateWebsite.CreateWebsite("mySite", "www.mysite.com", new List <string> {
                "cat1", "cat2"
            }, new ImageManipulation("myImage.png", "image/png", new byte[1]), "*****@*****.**", "123456");
            OperationResult <WebsiteOutputModel> createWebsiteOperation = await handler.Handle(request, CancellationToken.None);

            // Assert
            _unitOfWorkMock.Verify(x => x.CommitAsync(CancellationToken.None), Times.Once);
            _repositoryMock.Verify(x => x.Add(It.IsAny <Website>()), Times.Once);

            createWebsiteOperation.Should().BeOfType(typeof(OperationResult <WebsiteOutputModel>));
            createWebsiteOperation.IsSuccessful.Should().BeTrue();
            createWebsiteOperation.Errors.Should().BeNull();

            createWebsiteOperation.Result.Name.Should().Be("mySite");
            createWebsiteOperation.Result.Url.Should().Be("www.mysite.com");
            createWebsiteOperation.Result.Categories.Count.Should().Be(2);
            createWebsiteOperation.Result.Categories[0].Should().Be("cat1");
            createWebsiteOperation.Result.Categories[1].Should().Be("cat2");
            createWebsiteOperation.Result.Image.Name.Should().Be("myImage.png");
            createWebsiteOperation.Result.Image.DownloadLink.Should().BeNull();
            createWebsiteOperation.Result.Login.Email.Should().Be("*****@*****.**");
            createWebsiteOperation.Result.Login.Password.Should().Be("123456");
        }
        public async Task HandleAsync_WhenCommitAsyncThrowsUrlExistsException_ShouldReturnFailureResult()
        {
            // Arrange
            _unitOfWorkMock.Setup(x => x.CommitAsync(CancellationToken.None)).Throws <UrlExistsException>();
            var handler = new CreateWebsiteHandler(_repositoryMock.Object, _unitOfWorkMock.Object, _cypherMock.Object);

            // Act
            var request = new Application.Websites.Commands.CreateWebsite.CreateWebsite("mySite", "www.mysite.com", new List <string> {
                "cat1,cat2"
            }, new ImageManipulation("myImage.png", "image/png", new byte[1]), "*****@*****.**", "123456");
            OperationResult <WebsiteOutputModel> createWebsiteOperation = await handler.Handle(request, CancellationToken.None);

            // Assert
            _unitOfWorkMock.Verify(x => x.CommitAsync(CancellationToken.None), Times.Once);

            createWebsiteOperation.Should().BeOfType(typeof(OperationResult <WebsiteOutputModel>));
            createWebsiteOperation.IsSuccessful.Should().BeFalse();
            createWebsiteOperation.Errors.Count.Should().Be(1);
            createWebsiteOperation.Errors.First().Key.Should().Be("Url");
            createWebsiteOperation.Errors.First().Value.Should().Be("Url already exists.");
        }