public void Constructor_SutIsCmdlet()
        {
            // When
            var sut = new GetPostCommand();

            // Then
            Assert.IsAssignableFrom<Cmdlet>(sut);
        }
        public void Invoke_DoesNotReturnNull()
        {
            // Given
            var sut = new GetPostCommand();

            // When
            var result = sut.Invoke();

            // Then
            Assert.NotNull(result);
        }
        public void Invoke_EagerLoadsAssociatedTags(
            Mock<Common.IServiceLocator> serviceLocator,
            Mock<IRepository<Post>> repository)
        {
            // Given
            serviceLocator.Setup(s => s.GetInstance<IRepository<Post>>()).Returns(repository.Object);
            var sut = new GetPostCommand();
            ServiceLocator.SetCurrentInstance(serviceLocator.Object);

            // When
            sut.Invoke<Post>().Any();

            // Then
            repository.Verify(m => m.Find("Tags"));
        }
        public void Invoke_WithException_ThrowsSameException(
            Mock<Common.IServiceLocator> serviceLocator,
            Mock<IRepository<Post>> repository,
            InvalidOperationException exception)
        {
            // Given
            serviceLocator.Setup(s => s.GetInstance<IRepository<Post>>()).Returns(repository.Object);
            repository.Setup(s => s.Find(It.IsAny<string[]>())).Throws(exception);
            var sut = new GetPostCommand();
            ServiceLocator.SetCurrentInstance(serviceLocator.Object);

            // Then
            Assert.Throws(exception.GetType(), () => sut.Invoke<Post>().Any());
        }
        public void Invoke_WithSomePosts_ReturnsSameNumberOfPosts(
            Mock<Common.IServiceLocator> serviceLocator,
            Mock<IRepository<Post>> repository,
            Post[] posts)
        {
            // Given
            serviceLocator.Setup(s => s.GetInstance<IRepository<Post>>()).Returns(repository.Object);
            repository.Setup(s => s.Find(It.IsAny<string[]>())).Returns(posts);
            var sut = new GetPostCommand();
            ServiceLocator.SetCurrentInstance(serviceLocator.Object);

            // When
            var result = sut.Invoke<Post>();

            // Then
            Assert.Equal(posts.Count(), result.Count());
        }
        public void Invoke_WithNoPosts_ReturnsEmptySequenceOfPost(
            Mock<Common.IServiceLocator> serviceLocator,
            Mock<IRepository<Post>> repository)
        {
            // Given
            serviceLocator.Setup(s => s.GetInstance<IRepository<Post>>()).Returns(repository.Object);
            var sut = new GetPostCommand();
            ServiceLocator.SetCurrentInstance(serviceLocator.Object);

            // When
            var result = sut.Invoke<Post>();

            // Then
            Assert.False(result.Any());
        }