Exemplo n.º 1
0
    def test__set_referenced_column(self):

        # Test with ????_id style column

        table = MySQLTable(name="session")
        mysql_column = MySQLColumn(name="employee_id", table=table)
        # Control - referenced column initially None
        self.assertEqual(mysql_column.referenced_column, None)

        mysql_column.set_referenced_column()
        # no referenced table, referenced column is None.
        self.assertEqual(mysql_column.referenced_column, None)
        table_2 = MySQLTable(name="employee")
        mysql_column.referenced_table = table_2

        mysql_column.set_referenced_column()
        # referenced table has no columns, referenced column is None.
        self.assertEqual(mysql_column.referenced_column, None)

        t2_col_1 = MySQLColumn(name="id", table=table_2)
        t2_col_2 = MySQLColumn(name="name", table=table_2)
        t2_col_3 = MySQLColumn(name="group_id", table=table_2)
        t2_col_4 = MySQLColumn(name="status_id", table=table_2)
        table_2.columns.append(t2_col_1)
        table_2.columns.append(t2_col_2)
        table_2.columns.append(t2_col_3)
        table_2.columns.append(t2_col_4)

        mysql_column.set_referenced_column()
        # match, referenced column is expected
        self.assertEqual(mysql_column.referenced_column, t2_col_1)

        # Test with non ????_id style column

        table = MySQLTable(name="session")
        mysql_column.name = "service_username"

        table_3 = MySQLTable(name="service")
        mysql_column.referenced_table = table_3
        mysql_column.referenced_column = None
        # Control - referenced column initially None
        self.assertEqual(mysql_column.referenced_column, None)

        t3_col_1 = MySQLColumn(name="name", table=table_3)
        t3_col_2 = MySQLColumn(name="group_id", table=table_3)
        t3_col_3 = MySQLColumn(name="status_id", table=table_3)
        table_3.columns.append(t3_col_1)
        table_3.columns.append(t3_col_2)
        table_3.columns.append(t3_col_3)

        mysql_column.set_referenced_column()
        # No match, no id, uses first column
        self.assertEqual(mysql_column.referenced_column, t3_col_1)

        mysql_column.referenced_column = None
        # Control - referenced column initially None
        self.assertEqual(mysql_column.referenced_column, None)
        t3_col_4 = MySQLColumn(name="username", table=table_3)
        table_3.columns.append(t3_col_4)
        mysql_column.set_referenced_column()
        # Non-???_id column match, uses expected
        self.assertEqual(mysql_column.referenced_column, t3_col_4)

        mysql_column.referenced_column = None
        # Control - referenced column initially None
        self.assertEqual(mysql_column.referenced_column, None)
        t3_col_4.name = "id"
        mysql_column.set_referenced_column()
        # No match, uses id field
        self.assertEqual(mysql_column.referenced_column, t3_col_4)
        return