public List <EdFiEducationOrganizationAddress> Resolve(PostSecondaryInstitution source,
                                                               EdFiPostSecondaryInstitution destination, List <EdFiEducationOrganizationAddress> destMember,
                                                               ResolutionContext context)
        {
            var addressList = EducationOrganizationAddressResolver.ReplaceFirstAddressInList(source, destMember);

            destMember?.Clear(); // by default, automapper combines the source list with the destination list. we want to replace the destination list instead
            return(addressList);
        }
        public void ShouldValidateAddPostSecondaryInstitutionModelWithValidValues()
        {
            // Arrange
            var existingLeaWithDifferentId = new LocalEducationAgency
            {
                EducationOrganizationId = 2
            };

            _mockOdsApiFacade.Setup(x => x.GetAllLocalEducationAgencies()).Returns(new List <LocalEducationAgency>
            {
                existingLeaWithDifferentId
            });

            var existingSchoolWithDifferentId = new School
            {
                EducationOrganizationId = 3
            };

            _mockOdsApiFacade.Setup(x => x.GetAllSchools()).Returns(new List <School>
            {
                existingSchoolWithDifferentId
            });

            var existingPsiWithDifferentId = new PostSecondaryInstitution
            {
                EducationOrganizationId = 4
            };

            _mockOdsApiFacade.Setup(x => x.GetAllPostSecondaryInstitutions()).Returns(new List <PostSecondaryInstitution>
            {
                existingPsiWithDifferentId
            });

            var validator = new AddPostSecondaryInstitutionModelValidator();

            validator.ShouldValidate(_addPostSecondaryInstitutionModel);

            EducationOrganizationValidationHelper
            .ProposedEducationOrganizationIdIsInUse(_addPostSecondaryInstitutionModel.PostSecondaryInstitutionId.Value, _mockOdsApiFacade.Object)
            .ShouldBeFalse();
        }
        public void ShouldNotValidateAddSchoolModelIfGradeLevelsListIsEmpty()
        {
            // Arrange
            _addPsiSchoolModel.GradeLevels = new List <string>();

            var existingLeaWithDifferentId = new LocalEducationAgency
            {
                EducationOrganizationId = 2
            };

            _mockOdsApiFacade.Setup(x => x.GetAllLocalEducationAgencies()).Returns(new List <LocalEducationAgency>
            {
                existingLeaWithDifferentId
            });

            var existingSchoolWithDifferentId = new School
            {
                EducationOrganizationId = 3
            };

            _mockOdsApiFacade.Setup(x => x.GetAllSchools()).Returns(new List <School>
            {
                existingSchoolWithDifferentId
            });

            var existingPsiWithDifferentId = new PostSecondaryInstitution
            {
                EducationOrganizationId = 4
            };

            _mockOdsApiFacade.Setup(x => x.GetAllPostSecondaryInstitutions()).Returns(new List <PostSecondaryInstitution>
            {
                existingPsiWithDifferentId
            });

            var validator = new AddPsiSchoolModelValidator();

            validator.ShouldNotValidate(_addPsiSchoolModel, "You must choose at least one grade level");
        }
            public void When_Mapping_PostSecondaryInstitution_to_EdFiPostSecondaryInstitution_Should_Have_Expected_Values_On_Destination()
            {
                // Arrange
                var psi = new PostSecondaryInstitution
                {
                    Id = Id,
                    PostSecondaryInstitutionId = PsiId,
                    Name  = Name,
                    State = State,
                    ApartmentRoomSuiteNumber = ApartmentRoomSuiteNumber,
                    StreetNumberName         = StreetNumberName,
                    City    = City,
                    ZipCode = PostalCode,
                    EducationOrganizationCategory = PostSecondaryInstitutionCategoryType,
                    PostSecondaryInstitutionLevel = PostSecondaryInstitutionLevel,
                    AdministrativeFundingControl  = AdministrativeFundingControl
                };

                // Act
                var result = _mapper.Map <EdFiPostSecondaryInstitution>(psi);

                // Assert
                result.ShouldNotBeNull();
                result.Id.ShouldBe(Id);
                result.PostSecondaryInstitutionId.ShouldBe(PsiId);
                result.NameOfInstitution.ShouldBe(Name);
                result.PostSecondaryInstitutionLevelDescriptor.ShouldBe(PostSecondaryInstitutionLevel);
                result.AdministrativeFundingControlDescriptor.ShouldBe(AdministrativeFundingControl);
                result.Addresses.Count.ShouldBe(1);
                result.Addresses.First().StreetNumberName.ShouldBe(StreetNumberName);
                result.Addresses.First().City.ShouldBe(City);
                result.Addresses.First().StateAbbreviationDescriptor.ShouldContain(State);
                result.Addresses.First().ApartmentRoomSuiteNumber.ShouldBe(ApartmentRoomSuiteNumber);
                result.Addresses.First().PostalCode.ShouldBe(PostalCode);
                result.Categories.Count.ShouldBe(1);
                result.Categories.First().EducationOrganizationCategoryDescriptor.ShouldContain(PostSecondaryInstitutionCategoryType);
            }
        public void ShouldNotValidateAddLocalEducationAgencyModelIfPassedWithExistingLeaEdOrgId()
        {
            // Arrange
            var existingLeaWithSameId = new LocalEducationAgency
            {
                EducationOrganizationId = Id
            };

            _mockOdsApiFacade.Setup(x => x.GetAllLocalEducationAgencies()).Returns(new List <LocalEducationAgency>
            {
                existingLeaWithSameId
            });

            var existingSchoolWithDifferentId = new School
            {
                EducationOrganizationId = 2
            };

            _mockOdsApiFacade.Setup(x => x.GetAllSchools()).Returns(new List <School>
            {
                existingSchoolWithDifferentId
            });

            var existingPsiWithDifferentId = new PostSecondaryInstitution
            {
                EducationOrganizationId = 4
            };

            _mockOdsApiFacade.Setup(x => x.GetAllPostSecondaryInstitutions()).Returns(new List <PostSecondaryInstitution>
            {
                existingPsiWithDifferentId
            });

            EducationOrganizationValidationHelper
            .ProposedEducationOrganizationIdIsInUse(_addLocalEducationAgencyModel.LocalEducationAgencyId.Value, _mockOdsApiFacade.Object)
            .ShouldBeTrue();
        }