Beispiel #1
0
        public async Task CreateAsync_ArtistValidationFailed_ThrowsError()
        {
            // Arrange
            var fixture          = new Fixture();
            var albumUpdateModel = new AlbumUpdateModel();
            var expected         = fixture.Create <string>();

            var artistGetService = new Mock <IArtistGetService>();

            artistGetService
            .Setup(x => x.ValidateAsync(albumUpdateModel))
            .Throws(new InvalidOperationException(expected));

            var albumDataAccess = new Mock <IAlbumDataAccess>();

            var albumCreateService = new AlbumCreateService(albumDataAccess.Object, artistGetService.Object);

            // Act
            var action = new Func <Task>(() => albumCreateService.CreateAsync(albumUpdateModel));

            // Assert
            await action.Should().ThrowAsync <InvalidOperationException>().WithMessage(expected);

            albumDataAccess.Verify(x => x.InsertAsync(albumUpdateModel), Times.Never);
        }
Beispiel #2
0
        public async Task CreateAsync_ArtistValidationSucceed_CreatesAlbum()
        {
            // Arrange
            var albumUpdateModel = new AlbumUpdateModel();
            var expected         = new Album();

            var artistGetService = new Mock <IArtistGetService>();

            artistGetService.Setup(x => x.ValidateAsync(albumUpdateModel));

            var albumDataAccess = new Mock <IAlbumDataAccess>();

            albumDataAccess.Setup(x => x.InsertAsync(albumUpdateModel)).ReturnsAsync(expected);

            var albumCreateService = new AlbumCreateService(albumDataAccess.Object, artistGetService.Object);

            // Act
            var result = await albumCreateService.CreateAsync(albumUpdateModel);

            // Assert
            result.Should().Be(expected);
        }