def it_should_match_the_record(
        test_mssql_db: Tuple[MssqlLmsOperations, Connection]
    ):
        adapter, connection = test_mssql_db

        # arrange - note csv file has only B123456 from BestLMS
        insert_user(connection, "U123456", SOURCE_SYSTEM, 1)
        insert_record(connection, "B123456", SOURCE_SYSTEM)
        insert_record(connection, "F234567", "FirstLMS")

        # act
        run_loader(main_arguments(adapter, CSV_PATH))

        # assert - records are unchanged
        LMSSystemActivity = connection.execute(
            "SELECT SourceSystem, SourceSystemIdentifier, DeletedAt from lms.LMSSystemActivity"
        ).fetchall()
        assert len(LMSSystemActivity) == 2
        assert [SOURCE_SYSTEM, "FirstLMS"] == [
            x["SourceSystem"] for x in LMSSystemActivity
        ]
        assert ["B123456", "F234567"] == [
            x["SourceSystemIdentifier"] for x in LMSSystemActivity
        ]
        assert [None, None] == [x["DeletedAt"] for x in LMSSystemActivity]
    def it_should_match_the_record(test_mssql_db: Tuple[MssqlLmsOperations,
                                                        Connection]):
        adapter, connection = test_mssql_db
        insert_user(connection, "U123456", SOURCE_SYSTEM, 1)
        insert_user(connection, "U123456", "FirstLMS", 2)

        insert_section(connection, "B098765", SOURCE_SYSTEM, 1)
        insert_section(connection, "F098765", "FirstLMS", 2)

        insert_record(connection, "B123456", SOURCE_SYSTEM, 1, 1)
        insert_record(connection, "F234567", "FirstLMS", 2, 2)

        # act
        run_loader(main_arguments(adapter, CSV_PATH))

        # assert - records are unchanged
        LMSUserLMSSectionAssociation = connection.execute(
            "SELECT SourceSystem, SourceSystemIdentifier, DeletedAt from lms.LMSUserLMSSectionAssociation"
        ).fetchall()
        assert len(LMSUserLMSSectionAssociation) == 2
        assert [SOURCE_SYSTEM, "FirstLMS"
                ] == [x["SourceSystem"] for x in LMSUserLMSSectionAssociation]
        assert ["B123456", "F234567"] == [
            x["SourceSystemIdentifier"] for x in LMSUserLMSSectionAssociation
        ]
        assert [None, None
                ] == [x["DeletedAt"] for x in LMSUserLMSSectionAssociation]
    def it_should_soft_delete_the_record(
        test_mssql_db: Tuple[MssqlLmsOperations, Connection]
    ):
        adapter, connection = test_mssql_db

        # arrange - note csv file has only B123456
        insert_user(connection, "U123456", SOURCE_SYSTEM, 1)
        insert_record(connection, "B123456", SOURCE_SYSTEM)
        insert_record(connection, "B234567", SOURCE_SYSTEM)

        # act
        run_loader(main_arguments(adapter, CSV_PATH))

        # assert - B234567 has been soft deleted
        LMSSystemActivity = connection.execute(
            "SELECT SourceSystemIdentifier from lms.LMSSystemActivity WHERE DeletedAt IS NOT NULL"
        ).fetchall()
        assert len(LMSSystemActivity) == 1
        assert LMSSystemActivity[0]["SourceSystemIdentifier"] == "B234567"