def it_should_return_one_exception_when_theres_one_exception( test_db_config: MssqlServerConfig ): descriptor_namespace = descriptor_namespace_for(SOURCE_SYSTEM) category_descriptor_id = 1 source_system_descriptor_id = 2 section_identifier = 1 # arrange with MSSqlConnection(test_db_config).pyodbc_conn() as connection: insert_descriptor(connection, descriptor_namespace, ASSIGNMENT_CATEGORY) insert_lmsx_assignmentcategory_descriptor( connection, category_descriptor_id ) insert_descriptor(connection, descriptor_namespace, SOURCE_SYSTEM) insert_lmsx_sourcesystem_descriptor(connection, source_system_descriptor_id) insert_lms_section(connection, SIS_SECTION_ID, SOURCE_SYSTEM) insert_edfi_section(connection, SIS_SECTION_ID) connection.execute( """UPDATE LMS.LMSSECTION SET EdFiSectionId = (SELECT TOP 1 ID FROM EDFI.SECTION)""" ) insert_lms_assignment( connection, ASSIGNMENT_SOURCE_SYSTEM_IDENTIFIER, SOURCE_SYSTEM, section_identifier, ASSIGNMENT_CATEGORY, ) # act run_harmonizer(test_db_config) with MSSqlConnection(test_db_config).pyodbc_conn() as connection: connection.execute( """DELETE FROM LMSX.ASSIGNMENT""" ) # assert with MSSqlConnection(test_db_config).pyodbc_conn() as connection: result = query(connection, QUERY_FOR_ASSIGNMENT_EXCEPTIONS) assert result[0]['count'] == 1
def it_should_not_count_it_as_an_exception( test_db_config: MssqlServerConfig ): # arrange with MSSqlConnection(test_db_config).pyodbc_conn() as connection: insert_descriptor( connection, descriptor_namespace_for(SOURCE_SYSTEM), ASSIGNMENT_CATEGORY ) insert_lmsx_assignmentcategory_descriptor(connection, 1) insert_descriptor( connection, descriptor_namespace_for(SOURCE_SYSTEM), SOURCE_SYSTEM ) insert_lmsx_sourcesystem_descriptor(connection, 2) insert_lms_section(connection, SIS_SECTION_ID, SOURCE_SYSTEM) insert_edfi_section(connection, SIS_SECTION_ID) connection.execute( """UPDATE LMS.LMSSECTION SET EdFiSectionId = (SELECT TOP 1 ID FROM EDFI.SECTION)""" ) insert_lms_assignment( connection, ASSIGNMENT_SOURCE_SYSTEM_IDENTIFIER, SOURCE_SYSTEM, 1, ASSIGNMENT_CATEGORY, ) run_harmonizer(test_db_config) with MSSqlConnection(test_db_config).pyodbc_conn() as connection: connection.execute( "UPDATE LMS.ASSIGNMENT SET LastModifiedDate = GETDATE(), DeletedAt = GETDATE()" ) # act run_harmonizer(test_db_config) # assert with MSSqlConnection(test_db_config).pyodbc_conn() as connection: result = query(connection, QUERY_FOR_ASSIGNMENT_EXCEPTIONS) assert result[0]['count'] == 0
def it_should_update_existing_assignments( test_db_config: MssqlServerConfig, source_system: str, source_namespace: str): # arrange with MSSqlConnection(test_db_config).pyodbc_conn() as connection: insert_descriptor(connection, descriptor_namespace_for(source_system), ASSIGNMENT_CATEGORY) insert_lmsx_assignmentcategory_descriptor(connection, 1) insert_descriptor(connection, descriptor_namespace_for(source_system), source_system) insert_lmsx_sourcesystem_descriptor(connection, 2) insert_lms_section(connection, SIS_SECTION_ID, source_system) insert_edfi_section(connection, SIS_SECTION_ID) connection.execute("""UPDATE LMS.LMSSECTION SET EdFiSectionId = (SELECT TOP 1 ID FROM EDFI.SECTION)""") insert_lms_assignment( connection, ASSIGNMENT_SOURCE_SYSTEM_IDENTIFIER, source_system, 1, ASSIGNMENT_CATEGORY, ) run_harmonizer(test_db_config) with MSSqlConnection(test_db_config).pyodbc_conn() as connection: connection.execute( "UPDATE LMS.ASSIGNMENT SET TITLE = 'AN UPDATED TITLE', LastModifiedDate = GETDATE()" ) # act run_harmonizer(test_db_config) # assert with MSSqlConnection(test_db_config).pyodbc_conn() as connection: LMSAssignment = query(connection, "SELECT Title from [lmsx].[Assignment]") assert len(LMSAssignment) == 1 assert LMSAssignment[0]["Title"] == "AN UPDATED TITLE"
def it_should_run_successfully(test_db_config: MssqlServerConfig): # arrange with MSSqlConnection(test_db_config).pyodbc_conn() as connection: insert_descriptor( connection, descriptor_namespace_for(UNKNOWN_SOURCE_SYSTEM), ASSIGNMENT_CATEGORY, ) insert_lmsx_assignmentcategory_descriptor(connection, 1) insert_descriptor( connection, descriptor_namespace_for(UNKNOWN_SOURCE_SYSTEM), UNKNOWN_SOURCE_SYSTEM, ) insert_lmsx_sourcesystem_descriptor(connection, 2) insert_lms_section(connection, SIS_SECTION_ID, UNKNOWN_SOURCE_SYSTEM) insert_edfi_section(connection, SIS_SECTION_ID) connection.execute("""UPDATE LMS.LMSSECTION SET EdFiSectionId = (SELECT TOP 1 ID FROM EDFI.SECTION)""") insert_lms_assignment( connection, ASSIGNMENT_SOURCE_SYSTEM_IDENTIFIER, UNKNOWN_SOURCE_SYSTEM, 1, ASSIGNMENT_CATEGORY, ) # act run_harmonizer(test_db_config) # assert with MSSqlConnection(test_db_config).pyodbc_conn() as connection: LMSAssignment = query(connection, "SELECT * from [lmsx].[Assignment]") assert len(LMSAssignment) == 0
def it_should_create_missing_submissions_for_associated_students( test_db_config: MssqlServerConfig, source_system: str): # arrange with MSSqlConnection(test_db_config).pyodbc_conn() as connection: insert_descriptor( connection, descriptor_namespace_for(source_system), ASSIGNMENT_CATEGORY ) insert_lmsx_assignmentcategory_descriptor(connection, 1) insert_descriptor( connection, descriptor_namespace_for(source_system), source_system ) insert_lmsx_sourcesystem_descriptor(connection, 2) insert_descriptor( connection, submission_descriptor_namespace_for(source_system), ASSIGNMENT_SUBMISSION_STATUS_MISSING, ) insert_lmsx_assignmentsubmissionstatus_descriptor(connection, 3) insert_descriptor( connection, submission_descriptor_namespace_for(source_system), ASSIGNMENT_SUBMISSION_STATUS_UPCOMING, ) insert_lmsx_assignmentsubmissionstatus_descriptor(connection, 4) insert_lms_section(connection, SIS_SECTION_ID, source_system) insert_edfi_section(connection, SIS_SECTION_ID) connection.execute( """UPDATE LMS.LMSSECTION SET EdFiSectionId = (SELECT TOP 1 ID FROM EDFI.SECTION)""" ) insert_lms_assignment( connection, ASSIGNMENT_SOURCE_SYSTEM_IDENTIFIER, source_system, 1, ASSIGNMENT_CATEGORY ) insert_lms_user(connection, USER_SIS_ID, USER_TEST_EMAIL, source_system) insert_edfi_student(connection, USER_SIS_ID) connection.execute( """UPDATE LMS.LMSUSER SET EdFiStudentId = (SELECT TOP 1 ID FROM EDFI.Student)""" ) insert_edfi_section_association( connection, SIS_SECTION_ID, USER_SIS_ID ) # act run_harmonizer(test_db_config) # assert with MSSqlConnection(test_db_config).pyodbc_conn() as connection: LMSAssignmentSubmission = query( connection, "SELECT * from [lmsx].[AssignmentSubmission]" ) # We are only creating records for Schoology if (source_system == SOURCE_SYSTEM.SCHOOLOGY): assert len(LMSAssignmentSubmission) == 1 else: assert len(LMSAssignmentSubmission) == 0
def it_should_insert_the_submissions_successfully( test_db_config: MssqlServerConfig, source_system: str ): # arrange with MSSqlConnection(test_db_config).pyodbc_conn() as connection: insert_descriptor( connection, descriptor_namespace_for(source_system), ASSIGNMENT_CATEGORY ) insert_lmsx_assignmentcategory_descriptor(connection, 1) insert_descriptor( connection, descriptor_namespace_for(source_system), source_system ) insert_lmsx_sourcesystem_descriptor(connection, 2) insert_descriptor( connection, submission_descriptor_namespace_for(source_system), ASSIGNMENT_SUBMISSION_STATUS, ) insert_lmsx_assignmentsubmissionstatus_descriptor(connection, 3) insert_lms_section(connection, SIS_SECTION_ID, source_system) insert_edfi_section(connection, SIS_SECTION_ID) connection.execute( """UPDATE LMS.LMSSECTION SET EdFiSectionId = (SELECT TOP 1 ID FROM EDFI.SECTION)""" ) assignment_id = insert_lms_assignment( connection, ASSIGNMENT_SOURCE_SYSTEM_IDENTIFIER, source_system, 1, ASSIGNMENT_CATEGORY, ) insert_lms_user(connection, USER_SIS_ID, USER_TEST_EMAIL, source_system) insert_edfi_student(connection, USER_SIS_ID) connection.execute( """UPDATE LMS.LMSUSER SET EdFiStudentId = (SELECT TOP 1 ID FROM EDFI.Student)""" ) insert_lms_assignment_submissions( connection, SUBMISSION_TEST_LMS_IDENTIFIER, SUBMISSION_TEST_IDENTIFIER, assignment_id, 1, ASSIGNMENT_SUBMISSION_STATUS, source_system, False, ) # act run_harmonizer(test_db_config) # assert with MSSqlConnection(test_db_config).pyodbc_conn() as connection: LMSAssignmentSubmission = query( connection, "SELECT * from [lmsx].[AssignmentSubmission]" ) assert len(LMSAssignmentSubmission) == 1 assert ( LMSAssignmentSubmission[0]["AssignmentSubmissionIdentifier"] == SUBMISSION_TEST_IDENTIFIER )
def it_should_run_successfully(test_db_config: MssqlServerConfig, source_system: str, source_namespace: str): descriptor_namespace = descriptor_namespace_for(source_system) category_descriptor_id = 1 source_system_descriptor_id = 2 section_identifier = 1 # arrange with MSSqlConnection(test_db_config).pyodbc_conn() as connection: insert_descriptor(connection, descriptor_namespace, ASSIGNMENT_CATEGORY) insert_lmsx_assignmentcategory_descriptor(connection, category_descriptor_id) insert_descriptor(connection, descriptor_namespace, source_system) insert_lmsx_sourcesystem_descriptor(connection, source_system_descriptor_id) insert_lms_section(connection, SIS_SECTION_ID, source_system) insert_edfi_section(connection, SIS_SECTION_ID) connection.execute("""UPDATE LMS.LMSSECTION SET EdFiSectionId = (SELECT TOP 1 ID FROM EDFI.SECTION)""") insert_lms_assignment( connection, ASSIGNMENT_SOURCE_SYSTEM_IDENTIFIER, source_system, section_identifier, ASSIGNMENT_CATEGORY, ) # act run_harmonizer(test_db_config) # assert with MSSqlConnection(test_db_config).pyodbc_conn() as connection: result = query(connection, "SELECT * from [lmsx].[Assignment]") assert len(result) == 1, "There should be one result." LMSAssignment = result[0] assert (LMSAssignment["AssignmentIdentifier"] == ASSIGNMENT_SOURCE_SYSTEM_IDENTIFIER ), "It should map the assignment identifier" # We know the id of the descriptors based in the order how they are inserted. assert (int(LMSAssignment["LMSSourceSystemDescriptorId"]) == source_system_descriptor_id ), "It should map the SourceSystem descriptor" assert (int(LMSAssignment["AssignmentCategoryDescriptorId"]) == category_descriptor_id ), "It should map the assignment category descriptor" assert (LMSAssignment["SectionIdentifier"] == SIS_SECTION_ID ), "It should map the section identifier" assert (LMSAssignment["LocalCourseCode"] == COURSE_CODE ), "It should map the local course code" assert (LMSAssignment["SessionName"] == SESSION_NAME ), "It should map the SessionName" assert (int(LMSAssignment["SchoolYear"]) == SCHOOL_YEAR ), "It should map the SchoolYear" assert int(LMSAssignment["SchoolId"] ) == SCHOOL_ID, "It should map the SchoolId" assert (LMSAssignment["Namespace"] == source_namespace ), "It should map the Namespace"
def it_should_return_zero( test_db_config: MssqlServerConfig ): # arrange with MSSqlConnection(test_db_config).pyodbc_conn() as connection: insert_descriptor( connection, descriptor_namespace_for(SOURCE_SYSTEM), ASSIGNMENT_CATEGORY ) insert_lmsx_assignmentcategory_descriptor(connection, 1) insert_descriptor( connection, descriptor_namespace_for(SOURCE_SYSTEM), SOURCE_SYSTEM ) insert_lmsx_sourcesystem_descriptor(connection, 2) insert_descriptor( connection, submission_descriptor_namespace_for(SOURCE_SYSTEM), ASSIGNMENT_SUBMISSION_STATUS, ) insert_lmsx_assignmentsubmissionstatus_descriptor(connection, 3) insert_lms_section(connection, SIS_SECTION_ID, SOURCE_SYSTEM) insert_edfi_section(connection, SIS_SECTION_ID) connection.execute( """UPDATE LMS.LMSSECTION SET EdFiSectionId = (SELECT TOP 1 ID FROM EDFI.SECTION)""" ) assignment_id = insert_lms_assignment( connection, ASSIGNMENT_SOURCE_SYSTEM_IDENTIFIER, SOURCE_SYSTEM, 1, ASSIGNMENT_CATEGORY, ) insert_lms_user(connection, USER_SIS_ID, USER_TEST_EMAIL, SOURCE_SYSTEM) insert_edfi_student(connection, USER_SIS_ID) connection.execute( """UPDATE LMS.LMSUSER SET EdFiStudentId = (SELECT TOP 1 ID FROM EDFI.Student)""" ) insert_lms_assignment_submissions( connection, SUBMISSION_TEST_LMS_IDENTIFIER, SUBMISSION_TEST_IDENTIFIER, assignment_id, 1, ASSIGNMENT_SUBMISSION_STATUS, SOURCE_SYSTEM, False, ) # act result = None run_harmonizer(test_db_config) # assert with MSSqlConnection(test_db_config).pyodbc_conn() as connection: result = query(connection, QUERY_FOR_ASSIGNMENT_SUBMISSION_EXCEPTIONS) result[0]['count'] == 0