public async Task GetLearningAim_CallsAzureSearchService_GetLarsLearningAim()
        {
            var learnAimRef      = "6014838X";
            var learningAimModel = new LearningAimModel();

            var azureServiceMock = new Mock <IAzureLearningAimsService>();

            azureServiceMock
            .Setup(m => m.GetLarsLearningAim(learnAimRef))
            .ReturnsAsync(learningAimModel);

            var searchCleaningServiceMock = new Mock <ISearchCleaningService>();

            searchCleaningServiceMock
            .Setup(m => m.EscapeSearchSpecialCharacters(It.IsAny <string>()))
            .Returns(learnAimRef);

            searchCleaningServiceMock
            .Setup(m => m.EscapeFilterSpecialCharacters(It.IsAny <string>()))
            .Returns(string.Empty);

            var service = new LearningAimAzureService(azureServiceMock.Object, searchCleaningServiceMock.Object);
            var result  = await service.GetLearningAim(learnAimRef);

            azureServiceMock.Verify(m => m.GetLarsLearningAim(learnAimRef), Times.Once);
            result.Should().BeEquivalentTo(learningAimModel);
        }
        public void Map_Returns_Valid_Model()
        {
            var azureCategory        = new CategoryModel();
            var azureAcademicYear    = new AcademicYearModel();
            var learningAimFramework = new LearningAimFrameworkModel();

            var academicMapperMock = new Mock <IMapper <AcademicYearModel, Models.AcademicYearModel> >();

            academicMapperMock
            .Setup(m => m.Map(azureAcademicYear))
            .Returns(new Models.AcademicYearModel());

            var categoryMapperMock = new Mock <IMapper <CategoryModel, Models.CategoryModel> >();

            categoryMapperMock
            .Setup(m => m.Map(azureCategory))
            .Returns(new Models.CategoryModel());

            var frameworkMapperMock = new Mock <IMapper <LearningAimFrameworkModel, Models.LearningAimFrameworkModel> >();

            frameworkMapperMock
            .Setup(m => m.Map(learningAimFramework))
            .Returns(new Models.LearningAimFrameworkModel());

            var mapper = new AzureLearningAimsMapper(categoryMapperMock.Object, academicMapperMock.Object, frameworkMapperMock.Object);

            var azureModel = new LearningAimModel
            {
                LearnAimRef         = "testRef",
                LearningAimTitle    = "testTitle",
                Type                = "testType",
                AwardingBodyName    = "testAwardingBody",
                LevelDescription    = "testLevel",
                GuidedLearningHours = "12",
                IsOFQUAL            = true
            };

            var result = mapper.Map(azureModel);

            result.LearnAimRef.Should().Be(azureModel.LearnAimRef);
            result.LearningAimTitle.Should().Be(azureModel.LearningAimTitle);
            result.Type.Should().Be(azureModel.Type);
            result.AwardingBodyCode.Should().Be(azureModel.AwardingBodyCode);
            result.AwardingBodyName.Should().Be(azureModel.AwardingBodyName);
            result.Level.Should().Be(azureModel.LevelDescription);
            result.GuidedLearningHours.Should().Be(azureModel.GuidedLearningHours);
            result.IsOFQUAL.Should().Be(azureModel.IsOFQUAL);
        }
        public async Task GetLearningAimAsync_Calls_LearningAimService_GetLearningAim()
        {
            var learnAimRef      = "6014838X";
            var learningAimModel = new LearningAimModel();

            var serviceMock = new Mock <ILearningAimService>();

            serviceMock
            .Setup(m => m.GetLearningAim(learnAimRef))
            .ReturnsAsync(learningAimModel);

            var controller = new LearningAimsController(serviceMock.Object);
            var result     = await controller.GetLearningAimAsync(learnAimRef);

            serviceMock.Verify(m => m.GetLearningAim(learnAimRef), Times.Once);
            result.Should().BeEquivalentTo(learningAimModel);
        }