public void Arrange()
        {
            var fixture = new Fixture();

            _standard   = fixture.Create <StandardsView>();
            _frameworks = fixture.Create <FrameworksView>();
            _service    = new Mock <IApprenticeshipInfoService>();
            _service.Setup(x => x.GetStandards(false)).ReturnsAsync(_standard);
            _service.Setup(x => x.GetFrameworks(false)).ReturnsAsync(_frameworks);
            _handler = new GetAllTrainingProgrammesQueryHandler(_service.Object);
        }
        public async Task Then_The_Frameworks_Are_Retrieved_From_The_Api_And_Added_To_Cached()
        {
            //Arrange
            var apiResponse = new GetFrameworksResponse
            {
                Frameworks = new List<FrameworkResponseItem>
                {
                    new FrameworkResponseItem
                    {
                        Id = "123",
                        FrameworkName = "test",
                        PathwayName = "test",
                        Title = "test"
                    }
                }
            };
                
            FrameworksView returnData = null;
            _apiClient.Setup(x => x.Get<GetFrameworksResponse>(It.IsAny<GetFrameworksRequest>()))
                .ReturnsAsync(apiResponse);
            _cache.Setup(x => x.Exists("Frameworks")).Returns(false);
            _cache.Setup(x => x.Set("Frameworks", It.IsAny<FrameworksView>())).Callback<string,object>(
                (key, value) =>
                {
                    returnData = value as FrameworksView;
                });

            //Act
            await _service.GetFrameworksAsync();
            
            //Assert
            _apiClient.Verify(x=>x.Get<GetFrameworksResponse>(It.IsAny<GetFrameworksRequest>()),Times.Once);
            returnData.Frameworks.Count.Should().Be(apiResponse.Frameworks.Count);
            returnData.Frameworks.ToList().First().ShouldBeEquivalentTo(apiResponse.Frameworks.First(), options=> options
                .Excluding(c=>c.Title)
                .Excluding(c=>c.ProgrammeType)
            );
        }
 public async Task Then_Frameworks_Retrieved_From_Cache_If_Cached()
 {
     //Arrange
     var cacheData = new FrameworksView
     {
         Frameworks = new List<Framework>
         {
             new Framework
             {
                 Id = "123"
             }
         }
     };
     _cache.Setup(x => x.Exists("Frameworks")).Returns(true);
     _cache.Setup(x => x.Get<FrameworksView>("Frameworks")).Returns(cacheData);
     
     //Act
     var actual = await _service.GetFrameworksAsync();
     
     //Assert
     _apiClient.Verify(x=>x.Get<GetFrameworksResponse>(It.IsAny<GetFrameworksRequest>()),Times.Never);
     actual.ShouldBeEquivalentTo(cacheData);
 }