def test__set_referenced_table(self):
        table = MySQLTable(name="session")
        table.columns.append(MySQLColumn(name="id", table=table))
        table.columns.append(MySQLColumn(name="name", table=table))
        table.columns.append(MySQLColumn(name="group_id", table=table))
        table.columns.append(MySQLColumn(name="status_id", table=table))
        mysql_column = MySQLColumn(name=self.COL_NAME, table=table)
        # Control - referenced table initially None
        self.assertEqual(mysql_column.referenced_table, None)

        tables = []
        mysql_column.set_referenced_table(tables=tables)
        # Table list is empty, referenced table still None
        self.assertEqual(mysql_column.referenced_table, None)

        table_2 = MySQLTable(name="employee")
        table_2.columns.append(MySQLColumn(name="id", table=table_2))
        table_2.columns.append(MySQLColumn(name="name", table=table_2))
        table_2.columns.append(MySQLColumn(name="group_id", table=table_2))
        table_2.columns.append(MySQLColumn(name="status_id", table=table_2))

        table_3 = MySQLTable(name="location")
        table_3.columns.append(MySQLColumn(name="id", table=table_3))
        table_3.columns.append(MySQLColumn(name="name", table=table_3))
        table_3.columns.append(MySQLColumn(name="group_id", table=table_3))
        table_3.columns.append(MySQLColumn(name="status_id", table=table_3))

        tables.append(table)
        tables.append(table_2)
        tables.append(table_3)

        mysql_column.name = "oneword"
        mysql_column.set_referenced_table(tables=tables)
        # One word column doesn't reference table
        self.assertEqual(mysql_column.referenced_table, None)

        mysql_column.name = "login_id"
        mysql_column.set_referenced_table(tables=tables)
        # Reference like name doesn't match any references tables
        self.assertEqual(mysql_column.referenced_table, None)

        mysql_column.name = "location_id"
        mysql_column.set_referenced_table(tables=tables)
        # Match sets expected.
        self.assertEqual(mysql_column.referenced_table, table_3)

        mysql_column.name = "session_id"
        mysql_column.set_referenced_table(tables=tables)
        # Matches it own table, sets expected.
        self.assertEqual(mysql_column.referenced_table, table)
        return
Exemple #2
0
    def test__defaults_for(self):
        defaults = ['writeable=False', 'IS_NOT_EMPTY()']
        by_name = FieldPropertyDefaultsByName()
        self.assertTrue(by_name)  # Creates object

        # No column provided, returns empty list
        self.assertEqual(by_name.defaults_for(), [])
        column = MySQLColumn()
        # column_name not set, returns empty list
        self.assertEqual(by_name.defaults_for(column=column), [])
        by_name.column_name = 'test_id'
        # column.name not set, returns empty list
        self.assertEqual(by_name.defaults_for(column=column), [])
        column.name = 'fake_id'
        # column.name != column_name, returns empty list
        self.assertEqual(by_name.defaults_for(column=column), [])

        column.name = 'test_id'
        # defaults not set, returns empty list
        self.assertEqual(by_name.defaults_for(column=column), [])

        by_name.defaults = defaults
        # column.name == column_name, returns expected
        self.assertEqual(by_name.defaults_for(column=column), defaults)


        class FakeClass(object):

            """Fake class with no name attribute"""

            def __init__(self):
                return


        column = FakeClass()
        # column has no 'name' attribute, raises exception
        self.assertRaises(AttributeError, by_name.defaults_for,
                          column=column)
        return
    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