public void GetNode_NodeNotExists_ReturnsNotFoundResult()
        {
            // Arrange
            var treeRepository = Substitute.For <ICachedTreeRepository>();

            treeRepository.Load(Arg.Any <Guid>()).Returns((TreeNode)null);
            var cachedTreeController = new CachedTreeController(treeRepository);

            // Act
            ActionResult result = cachedTreeController.GetNode(Arg.Any <Guid>()).Result;

            // Assert
            Assert.That(result, Is.TypeOf <NotFoundResult>());
        }
        public void GetNode_NodeExists_ReturnsNode()
        {
            // Arrange
            var treeRepository = Substitute.For <ICachedTreeRepository>();
            var expectedNode   = new TreeNode
            {
                Id        = Guid.NewGuid(),
                IsDeleted = true,
                ParentId  = Guid.NewGuid(),
                Value     = "text"
            };

            treeRepository.Load(expectedNode.Id).Returns(expectedNode);
            var cachedTreeController = new CachedTreeController(treeRepository);

            // Act
            TreeNode node = cachedTreeController.GetNode(expectedNode.Id).Value;

            // Assert
            Assert.That(node, Is.EqualTo(expectedNode));
        }