public void ShouldGetNoCurrentSchoolYearWhenAmbiguous()
        {
            // Under normal circumstances, 1 or 0 rows in the edfi.SchoolYearType
            // table will be marked as current. However, we should not use a
            // strict SingleOrDefault behavior when fetching the current year.
            // If we did, users would experience an exception when we would
            // rather give them the opportunity to fix their year setting.
            // So, when the table is ambiguous, we expect null, the same
            // as when there are zero records marked as current.

            GetNewSchoolYear(2000);
            GetNewSchoolYear(1999);
            GetNewSchoolYear(2001);
            GetCurrentSchoolYear().ShouldBe(null);

            // Create an ambiguous, meaningless selection of multiple years.
            using (var connection = TestConnectionProvider.CreateNewConnection(InstanceName, ApiMode))
                connection.Execute(@"UPDATE edfi.SchoolYearType SET CurrentSchoolYear='true'");

            // Rather than throwing, the user should experience this as no valid selection.
            GetCurrentSchoolYear().ShouldBe(null);

            // Users can correct the problem by selecting a year.
            SetSchoolYear(2000);
            GetCurrentSchoolYear().ShouldBeSchoolYear(2000, isCurrent: true);
        }
 private void SetStudentLimitedEnglishProficiencyDescriptor(int studentUsi, int?limitedEnglishProficiencyDescriptorId)
 {
     using (var sqlConnection = TestConnectionProvider.CreateNewConnection(null))
     {
         sqlConnection.Execute(@"
             UPDATE edfi.StudentEducationOrganizationAssociation
             SET LimitedEnglishProficiencyDescriptorId = @LimitedEnglishProficiencyDescriptorId
             WHERE StudentUSI = @StudentUsi"
                               , new { StudentUsi = studentUsi, LimitedEnglishProficiencyDescriptorId = limitedEnglishProficiencyDescriptorId });
     }
 }
 private void SetStudentCharacteristicDescriptor(int studentUsi, int studentCharacteristicDescriptorId, int edOrgId)
 {
     using (var sqlConnection = TestConnectionProvider.CreateNewConnection(null))
     {
         sqlConnection.Execute(@"
         INSERT INTO [edfi].[StudentEducationOrganizationAssociationStudentCharacteristic]
         (
             [EducationOrganizationId],
             [StudentUSI],
             [StudentCharacteristicDescriptorId]
         )
          VALUES
         (
             @EducationOrganizationId,
             @StudentUsi,
             @StudentCharacteristicDescriptorId
         )"
                               , new { EducationOrganizationId = edOrgId, StudentUsi = studentUsi, StudentCharacteristicDescriptorId = studentCharacteristicDescriptorId });
     }
 }
 private static void SetStudentRiskStatus(int studentUsi, string riskStatus, int edOrgId)
 {
     using (var sqlConnection = TestConnectionProvider.CreateNewConnection(null))
     {
         sqlConnection.Execute(@"
             INSERT INTO [edfi].[StudentEducationOrganizationAssociationStudentIndicator]
            (
                 [EducationOrganizationId],
                 [StudentUSI],
                 [IndicatorName],
                 [Indicator]
             )
             VALUES
             (
                 @EducationOrganizationId,
                 @StudentUsi,
                 @RiskStatus,
                 @RiskStatus
             )"
                               , new { EducationOrganizationId = edOrgId, StudentUsi = studentUsi, RiskStatus = riskStatus });
     }
 }
        private void EnrollInFoodServiceProgram(int studentUsi, int schoolFoodServicesEligibilityDescriptorId, int edOrgId, int programTypeDescriptorId = 1, string programName = "Fake Program", DateTime?beginDate = null, DateTime?endDate = null)
        {
            var nonNullBeginDate = beginDate ?? DateTime.Now;

            EnrollStudentInProgram(studentUsi, edOrgId, programTypeDescriptorId, programName, nonNullBeginDate, endDate);

            using (var sqlConnection = TestConnectionProvider.CreateNewConnection(null))
            {
                sqlConnection.Execute(@"
                    INSERT INTO [edfi].[StudentSchoolFoodServiceProgramAssociation]
                    (
                        [BeginDate],
                        [EducationOrganizationId],
                        [ProgramEducationOrganizationId],
                        [ProgramName],
                        [ProgramTypeDescriptorId],
                        [StudentUSI]
                    )
                    VALUES
                    (
                        @BeginDate,
                        @EducationOrganizationId,
                        @EducationOrganizationId,
                        @ProgramName,
                        @ProgramTypeDescriptorId,
                        @StudentUsi
                    )
                    ",
                                      new
                {
                    BeginDate = nonNullBeginDate,
                    EducationOrganizationId        = edOrgId,
                    ProgramEducationOrganizationId = edOrgId,
                    ProgramName             = programName,
                    ProgramTypeDescriptorId = programTypeDescriptorId,
                    StudentUsi = studentUsi
                });

                sqlConnection.Execute(@"
                    INSERT INTO [edfi].[StudentSchoolFoodServiceProgramAssociationSchoolFoodServiceProgramService]
                    (
                        [BeginDate],
                        [EducationOrganizationId],
                        [ProgramEducationOrganizationId],
                        [ProgramName],
                        [ProgramTypeDescriptorId],
                        [SchoolFoodServiceProgramServiceDescriptorId],
                        [StudentUSI]
                    )
                     VALUES
                    (
                        @BeginDate,
                        @EducationOrganizationId,
                        @EducationOrganizationId,
                        @ProgramName,
                        @ProgramTypeDescriptorId,
                        @SchoolFoodServiceProgramServiceDescriptorId,
                        @StudentUsi
                    )",
                                      new
                {
                    BeginDate = nonNullBeginDate,
                    EducationOrganizationId        = edOrgId,
                    ProgramEducationOrganizationId = edOrgId,
                    ProgramName             = programName,
                    ProgramTypeDescriptorId = programTypeDescriptorId,
                    SchoolFoodServiceProgramServiceDescriptorId = schoolFoodServicesEligibilityDescriptorId,
                    StudentUsi = studentUsi
                });
            }
        }