Ejemplo n.º 1
0
        def it_should_run_successfully(test_db_config: PgsqlServerConfig):
            # arrange
            with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
                insert_lms_user(connection, SIS_ID, "*****@*****.**",
                                SOURCE_SYSTEM)
                insert_edfi_student(connection, UNIQUE_ID, STUDENT_ID)

                insert_lms_user(connection, NOT_MATCHING_SIS_ID, "*****@*****.**",
                                SOURCE_SYSTEM)
                insert_edfi_student(connection,
                                    "c_also_not_matching_unique_id")

            # act
            run_harmonizer(test_db_config)

            # assert
            with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
                LMSUser = query(
                    connection,
                    (f"select edfistudentid, sourcesystemidentifier from lms.lmsuser where "
                     f"sourcesystemidentifier in ('{NOT_MATCHING_SIS_ID}','{SIS_ID}')"
                     ),
                )
                assert len(LMSUser) == 2
                assert LMSUser[0][
                    "sourcesystemidentifier"] == NOT_MATCHING_SIS_ID
                assert LMSUser[0]["edfistudentid"] is None
                assert LMSUser[1]["sourcesystemidentifier"] == SIS_ID
                assert LMSUser[1]["edfistudentid"] == STUDENT_ID
Ejemplo n.º 2
0
    def it_should_return_one_exception(test_db_config: PgsqlServerConfig):
        # arrange
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            insert_lms_section(connection, SIS_ID,
                               SOURCE_SYSTEM)  # Matching section
            insert_edfi_section(connection, SIS_ID,
                                SECTION_ID)  # Matching section

            insert_lms_section(connection, NOT_MATCHING_SIS_ID,
                               SOURCE_SYSTEM)  # Not matching section
            insert_edfi_section(
                connection, "also_not_matching_sis_id")  # Not matching section

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            exceptions = query(
                connection,
                f"select sourcesystemidentifier from lmsx.exceptions_lmssection where sourcesystemidentifier = '{NOT_MATCHING_SIS_ID}'",
            )

            assert len(exceptions) == 1
            assert exceptions[0][
                "sourcesystemidentifier"] == NOT_MATCHING_SIS_ID
Ejemplo n.º 3
0
    def it_should_run_successfully(test_db_config: PgsqlServerConfig):
        # arrange
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            insert_lms_section(connection, SIS_ID,
                               SOURCE_SYSTEM)  # Matching section
            insert_edfi_section(connection, SIS_ID,
                                SECTION_ID)  # Matching section

            insert_lms_section(connection, NOT_MATCHING_SIS_ID,
                               SOURCE_SYSTEM)  # Not matching section
            insert_edfi_section(
                connection, "also_not_matching_sis_id")  # Not matching section

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            LMSSection = query(
                connection,
                "select edfisectionid, sissectionidentifier from lms.lmssection",
            )
            assert len(LMSSection) == 2
            assert LMSSection[0]["sissectionidentifier"] == NOT_MATCHING_SIS_ID
            assert LMSSection[0]["edfisectionid"] is None
            assert LMSSection[1]["sissectionidentifier"] == SIS_ID
            assert LMSSection[1]["edfisectionid"] == SECTION_ID
Ejemplo n.º 4
0
        def it_should_run_successfully(test_db_config: PgsqlServerConfig):
            # arrange
            with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
                insert_lms_user(connection, SIS_ID, EMAIL, SOURCE_SYSTEM)
                insert_lms_user(connection, NOT_MATCHING_SIS_ID,
                                NOT_MATCHING_EMAIL, SOURCE_SYSTEM)

                insert_edfi_student_with_usi(connection, 61, STUDENT_ID)
                insert_edfi_student_electronic_mail(connection, 61, EMAIL)

                insert_edfi_student_with_usi(connection, 62,
                                             NOT_MATCHING_STUDENT_ID)
                insert_edfi_student_electronic_mail(connection, 62,
                                                    "*****@*****.**")

            # act
            run_harmonizer(test_db_config)

            # assert
            with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
                LMSUser = query(
                    connection,
                    (f"select edfistudentid, sourcesystemidentifier from lms.lmsuser where "
                     f"sourcesystemidentifier in ('{NOT_MATCHING_SIS_ID}','{SIS_ID}')"
                     ),
                )
                assert len(LMSUser) == 2
                assert LMSUser[0][
                    "sourcesystemidentifier"] == NOT_MATCHING_SIS_ID
                assert LMSUser[0]["edfistudentid"] is None
                assert LMSUser[1]["sourcesystemidentifier"] == SIS_ID
                assert LMSUser[1]["edfistudentid"] == STUDENT_ID
Ejemplo n.º 5
0
        def it_should_run_successfully(test_db_config: PgsqlServerConfig):
            SIS_ID_1 = "c_sis_id_1"
            SIS_ID_2 = "c_sis_id_2"

            # arrange
            with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
                insert_lms_user(connection, SIS_ID_1, "*****@*****.**",
                                SOURCE_SYSTEM)
                insert_lms_user(connection, SIS_ID_2, "*****@*****.**",
                                SOURCE_SYSTEM)
                insert_edfi_student(connection, "c_not_matching_sis_id_1")
                insert_edfi_student(connection, "c_not_matching_sis_id_2")

            # act
            run_harmonizer(test_db_config)

            # assert
            with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
                LMSUser = query(
                    connection,
                    f"select edfistudentid from lms.lmsuser where sourcesystemidentifier in ('{SIS_ID_1}','{SIS_ID_2}')",
                )
                assert len(LMSUser) == 2
                assert LMSUser[0]["edfistudentid"] is None
                assert LMSUser[1]["edfistudentid"] is None
    def it_should_create_missing_submissions_for_associated_students(
            test_db_config: PgsqlServerConfig, source_system: str):
        # arrange
        with PgsqlConnection(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 id from edfi.section limit 1)""")

            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 id from edfi.student limit 1)""")
            insert_edfi_section_association(connection, SIS_SECTION_ID,
                                            USER_SIS_ID)

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(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_return_zero(test_db_config: PgsqlServerConfig):
        result = None
        # act
        run_harmonizer(test_db_config)
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            result = query(connection, QUERY_FOR_ASSIGNMENT_EXCEPTIONS)

        # assert
        assert result[0]['count'] == 0
    def it_should_return_no_exceptions(test_db_config: PgsqlServerConfig):
        # act
        run_harmonizer(test_db_config)

        # Assert
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            exceptions = query(
                connection,
                "select sourcesystemidentifier from lmsx.exceptions_lmsuser")

            assert len(exceptions) == 0
Ejemplo n.º 9
0
    def it_should_ignore_the_deleted_record(test_db_config: PgsqlServerConfig):
        # arrange
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            insert_lms_section_deleted(connection, SIS_ID, SOURCE_SYSTEM)
            insert_edfi_section(connection, SIS_ID, SECTION_ID)

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            LMSSection = query(connection,
                               "select edfisectionid from lms.lmssection")
            assert len(LMSSection) == 1
            assert LMSSection[0]["edfisectionid"] is None
Ejemplo n.º 10
0
    def it_should_return_no_exceptions(test_db_config: PgsqlServerConfig):
        # arrange
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            insert_lms_section_deleted(connection, SIS_ID, SOURCE_SYSTEM)
            insert_edfi_section(connection, SIS_ID, SECTION_ID)

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            exceptions = query(
                connection,
                f"select sourcesystemidentifier from lmsx.exceptions_lmssection where sourcesystemidentifier = '{SIS_ID}'",
            )

            assert len(exceptions) == 0
    def it_should_run_successfully(test_db_config: PgsqlServerConfig):
        # arrange
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            insert_lms_section(connection, SIS_ID, SOURCE_SYSTEM)
            insert_edfi_section(connection, SIS_ID, SECTION_ID)

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            LMSSection = query(
                connection,
                "select edfisectionid from lms.lmssection",
            )
            assert len(LMSSection) == 1
            assert LMSSection[0]["edfisectionid"] == SECTION_ID
    def it_should_return_no_exceptions(test_db_config: PgsqlServerConfig):
        # arrange
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            insert_lms_user(connection, SIS_ID, "*****@*****.**", SOURCE_SYSTEM)
            insert_edfi_student(connection, UNIQUE_ID, STUDENT_ID)

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            exceptions = query(
                connection,
                f"select sourcesystemidentifier from lmsx.exceptions_lmsuser where sourcesystemidentifier = '{SIS_ID}'"
            )

            assert len(exceptions) == 0
    def it_should_return_one_exception_when_theres_one_exception(
        test_db_config: PgsqlServerConfig
    ):
        descriptor_namespace = descriptor_namespace_for(SOURCE_SYSTEM)
        category_descriptor_id = 1
        source_system_descriptor_id = 2
        section_identifier = 1

        # arrange
        with PgsqlConnection(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 id from edfi.section limit 1)"""
            )

            insert_lms_assignment(
                connection,
                ASSIGNMENT_SOURCE_SYSTEM_IDENTIFIER,
                SOURCE_SYSTEM,
                section_identifier,
                ASSIGNMENT_CATEGORY,
            )

        # act
        run_harmonizer(test_db_config)
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            connection.execute(
                """delete from lmsx.assignment"""
            )

        # assert
        with PgsqlConnection(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: PgsqlServerConfig
    ):
        # arrange
        with PgsqlConnection(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 id from edfi.section limit 1)"""
            )

            insert_lms_assignment(
                connection,
                ASSIGNMENT_SOURCE_SYSTEM_IDENTIFIER,
                SOURCE_SYSTEM,
                1,
                ASSIGNMENT_CATEGORY,
            )

        run_harmonizer(test_db_config)

        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            connection.execute(
                "update lms.assignment set lastmodifieddate = now(), deletedat = now()"
            )

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            result = query(connection, QUERY_FOR_ASSIGNMENT_EXCEPTIONS)

        assert result[0]['count'] == 0
Ejemplo n.º 15
0
        def it_should_run_successfully(test_db_config: PgsqlServerConfig):
            # arrange
            with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
                insert_lms_user(connection, SIS_ID, "*****@*****.**",
                                SOURCE_SYSTEM)
                insert_edfi_student(connection, UNIQUE_ID, STUDENT_ID)

            # act
            run_harmonizer(test_db_config)

            # assert
            with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
                LMSUser = query(
                    connection,
                    f"select edfistudentid from lms.lmsuser where sourcesystemidentifier='{SIS_ID}'",
                )
                assert len(LMSUser) == 1
                assert LMSUser[0]["edfistudentid"] == STUDENT_ID
Ejemplo n.º 16
0
    def it_should_run_successfully(test_db_config: PgsqlServerConfig):
        # arrange
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            insert_lms_section(connection, "sis_id_1", SOURCE_SYSTEM)
            insert_lms_section(connection, "sis_id_2", SOURCE_SYSTEM)
            insert_edfi_section(connection, "not_matching_sis_id_1")
            insert_edfi_section(connection, "not_matching_sis_id_2")

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            LMSSection = query(connection,
                               "select edfisectionid from lms.lmssection")
            assert len(LMSSection) == 2
            assert LMSSection[0]["edfisectionid"] is None
            assert LMSSection[1]["edfisectionid"] is None
Ejemplo n.º 17
0
        def it_should_ignore_the_deleted_record(
                test_db_config: PgsqlServerConfig):
            # arrange
            with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
                insert_lms_user_deleted(connection, SIS_ID, EMAIL,
                                        SOURCE_SYSTEM)
                insert_edfi_student_with_usi(connection, 41, STUDENT_ID)
                insert_edfi_student_electronic_mail(connection, 41, EMAIL)

            # act
            run_harmonizer(test_db_config)

            # assert
            with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
                LMSUser = query(
                    connection,
                    f"select edfistudentid from lms.lmsuser where sourcesystemidentifier='{SIS_ID}'",
                )
                assert len(LMSUser) == 1
                assert LMSUser[0]["edfistudentid"] is None
Ejemplo n.º 18
0
    def it_should_return_exceptions(test_db_config: PgsqlServerConfig):
        # arrange
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            insert_lms_section(connection, SIS_ID_1, SOURCE_SYSTEM)
            insert_lms_section(connection, SIS_ID_2, SOURCE_SYSTEM)
            insert_edfi_section(connection, "e+not_matching_sis_id_1")
            insert_edfi_section(connection, "e+not_matching_sis_id_2")

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            exceptions = query(
                connection,
                f"select sourcesystemidentifier from lmsx.exceptions_lmssection where sourcesystemidentifier  IN ('{SIS_ID_1}','{SIS_ID_2}')",
            )

            assert len(exceptions) == 2
            assert exceptions[0]["sourcesystemidentifier"] == SIS_ID_1
            assert exceptions[1]["sourcesystemidentifier"] == SIS_ID_2
Ejemplo n.º 19
0
        def it_should_run_successfully(test_db_config: PgsqlServerConfig):
            # arrange
            with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
                insert_lms_user(connection, SIS_ID, EMAIL, SOURCE_SYSTEM)
                insert_edfi_student_with_usi(connection, 51, STUDENT_ID)
                insert_edfi_student_electronic_mail(connection, 51,
                                                    "*****@*****.**")
                insert_edfi_student_electronic_mail(connection, 51, EMAIL)
                insert_edfi_student_electronic_mail(connection, 51,
                                                    "*****@*****.**")

            # act
            run_harmonizer(test_db_config)

            # assert
            with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
                LMSUser = query(
                    connection,
                    f"select edfistudentid from lms.lmsuser where sourcesystemidentifier='{SIS_ID}'",
                )
                assert len(LMSUser) == 1
                assert LMSUser[0]["edfistudentid"] == STUDENT_ID
    def it_should_return_one_exception(test_db_config: PgsqlServerConfig):
        # arrange
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            insert_lms_user(connection, SIS_ID, "*****@*****.**", SOURCE_SYSTEM)
            insert_edfi_student(connection, UNIQUE_ID, STUDENT_ID)

            insert_lms_user(connection, NOT_MATCHING_SIS_ID, "*****@*****.**",
                            SOURCE_SYSTEM)
            insert_edfi_student(connection, "v+also_not_matching_unique_id")

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            exceptions = query(
                connection,
                f"select sourcesystemidentifier from lmsx.exceptions_lmsuser where sourcesystemidentifier = '{NOT_MATCHING_SIS_ID}'"
            )

            assert len(exceptions) == 1
            assert exceptions[0][
                "sourcesystemidentifier"] == NOT_MATCHING_SIS_ID
Ejemplo n.º 21
0
    def it_should_run_successfully(
        test_db_config: PgsqlServerConfig, source_system: str, source_namspace: str
    ):
        section_id_1 = "sis_id_1"
        section_id_2 = "sis_id_2"

        # arrange
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            insert_lms_section(connection, section_id_1, source_system)
            insert_lms_section(connection, section_id_2, source_system)
            insert_edfi_section(connection, "not_matching_sis_id_1")
            insert_edfi_section(connection, "not_matching_sis_id_2")

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            LMSSection = query(
                connection,
                "select assignmentidentifier from lmsx.assignment",
            )

            assert len(LMSSection) == 0
Ejemplo n.º 22
0
    def it_should_run_successfully(
        test_db_config: PgsqlServerConfig, 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 PgsqlConnection(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 id from edfi.section limit 1)"""
            )

            insert_lms_assignment(
                connection,
                ASSIGNMENT_SOURCE_SYSTEM_IDENTIFIER,
                source_system,
                section_identifier,
                ASSIGNMENT_CATEGORY,
            )

        # act
        run_harmonizer(test_db_config)

        # assert
        with PgsqlConnection(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: PgsqlServerConfig):
        # arrange
        with PgsqlConnection(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 id from edfi.section limit 1)""")

            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 id from edfi.student limit 1)""")

            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 PgsqlConnection(test_db_config).pyodbc_conn() as connection:
            result = query(connection,
                           QUERY_FOR_ASSIGNMENT_SUBMISSION_EXCEPTIONS)

        result[0]['count'] == 0
    def it_should_insert_the_submissions_successfully(
            test_db_config: PgsqlServerConfig, source_system: str):
        # arrange
        with PgsqlConnection(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 id from edfi.section limit 1)""")

            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 id from edfi.student limit 1)""")

            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 PgsqlConnection(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_runs_query_for_sections_without_error(
     test_db_config: PgsqlServerConfig, setup_harmonizer: Adapter
 ):
     with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
         query(connection, QUERY_FOR_SECTIONS)
 def it_runs_query_for_users_summary_without_error(
     test_db_config: PgsqlServerConfig, setup_harmonizer: Adapter
 ):
     with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
         query(connection, QUERY_FOR_USERS_SUMMARY)
 def it_runs_query_for_assignment_category_descriptors_summary_without_error(
     test_db_config: PgsqlServerConfig, setup_harmonizer: Adapter
 ):
     with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
         query(connection, QUERY_FOR_ASSIGNMENT_CAT_DESCRIPTORS_SUMMARY)
 def it_runs_query_for_submission_status_descriptors_summary_without_error(
     test_db_config: PgsqlServerConfig, setup_harmonizer: Adapter
 ):
     with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
         query(connection, QUERY_FOR_SUBMISSION_STATUS_DESCRIPTORS_SUMMARY)
 def it_runs_query_for_assignment_submission_exceptions_without_error(
     test_db_config: PgsqlServerConfig, setup_harmonizer: Adapter
 ):
     with PgsqlConnection(test_db_config).pyodbc_conn() as connection:
         query(connection, QUERY_FOR_ASSIGNMENT_SUBMISSION_EXCEPTIONS)