public async Task GetCalculationCircularDependencies_ApiReturnsError_ResponseHasErrorState()
        {
            GraphCalculationService graphCalculationService = CreateGraphCalculationService();

            GivenGetCalculationCircularDependencies(HttpStatusCode.NotFound);

            IActionResult actionResult = await graphCalculationService.GetCalculationCircularDependencies(SpecificationId);

            ThenErrorObjectResultReturned <NotFoundObjectResult>(actionResult);
        }
        public async Task GetCalculationCircularDependencies_ApiReturnsOk_ResponseHasApiObject()
        {
            const string          CalculationId   = "CalculationId";
            const string          CalculationName = "CalculationName";
            const CalculationType CalculationType = Common.ApiClient.Graph.Models.CalculationType.Additional;
            const string          FundingStream   = "FundingStream";
            const string          SpecificationId = "SpecificationId";

            IEnumerable <Entity <Calculation> > calculationEntities = new List <Entity <Calculation> >
            {
                new Entity <Calculation>
                {
                    Node = new Calculation
                    {
                        CalculationId   = CalculationId,
                        CalculationName = CalculationName,
                        CalculationType = CalculationType,
                        FundingStream   = FundingStream,
                        SpecificationId = SpecificationId,
                    }
                }
            };

            GraphCalculationService graphCalculationService = CreateGraphCalculationService();

            GivenGetCalculationCircularDependencies(HttpStatusCode.OK, calculationEntities);

            IActionResult actionResult = await graphCalculationService.GetCalculationCircularDependencies(SpecificationId);

            actionResult
            .Should()
            .NotBeNull()
            .And
            .BeOfType <OkObjectResult>();

            OkObjectResult okObjectResult = actionResult as OkObjectResult;

            okObjectResult
            .Value
            .Should()
            .NotBeNull()
            .And
            .BeOfType <List <GraphCalculationEntityViewModel <GraphCalculationViewModel> > >();

            List <GraphCalculationEntityViewModel <GraphCalculationViewModel> > actualCalculationEntities
                = okObjectResult.Value as List <GraphCalculationEntityViewModel <GraphCalculationViewModel> >;

            actualCalculationEntities
            .Count()
            .Should()
            .Be(calculationEntities.Count());

            actualCalculationEntities
            .FirstOrDefault()
            .Should()
            .NotBeNull();

            GraphCalculationEntityViewModel <GraphCalculationViewModel> firstCalculationEntity
                = actualCalculationEntities.FirstOrDefault();

            firstCalculationEntity
            .Node
            .Should()
            .NotBeNull();

            GraphCalculationViewModel firstCalculationNode = firstCalculationEntity.Node;

            firstCalculationNode
            .CalculationId
            .Should()
            .Be(CalculationId);

            firstCalculationNode
            .CalculationName
            .Should()
            .Be(CalculationName);

            firstCalculationNode
            .CalculationType
            .Should()
            .Be(CalculationType.ToString());

            firstCalculationNode
            .SpecificationId
            .Should()
            .Be(SpecificationId);

            firstCalculationNode
            .FundingStream
            .Should()
            .Be(FundingStream);
        }