public async Task ValidateAsync_ViewerExists_DoesNothing()
        {
            // Arrange
            var trackContainer = new Mock <IViewerContainer>();

            var track           = new Viewer();
            var trackDataAccess = new Mock <IViewerDataAccess>();

            trackDataAccess.Setup(x => x.GetByAsync(trackContainer.Object)).ReturnsAsync(track);

            var trackGetService = new ViewerGetService(trackDataAccess.Object);

            // Act
            var action = new Func <Task>(() => trackGetService.ValidateAsync(trackContainer.Object));

            // Assert
            await action.Should().NotThrowAsync <Exception>();
        }
        public async Task ValidateAsync_ViewerNotExists_ThrowsError()
        {
            // Arrange
            var fixture = new Fixture();
            var id      = fixture.Create <int>();

            var trackContainer = new Mock <IViewerContainer>();

            trackContainer.Setup(x => x.ViewerId).Returns(id);

            var track           = new Viewer();
            var trackDataAccess = new Mock <IViewerDataAccess>();

            trackDataAccess.Setup(x => x.GetByAsync(trackContainer.Object)).ReturnsAsync((Viewer)null);

            var trackGetService = new ViewerGetService(trackDataAccess.Object);

            // Act
            var action = new Func <Task>(() => trackGetService.ValidateAsync(trackContainer.Object));

            // Assert
            await action.Should().ThrowAsync <InvalidOperationException>($"Viewer not found by id {id}");
        }