Ejemplo n.º 1
0
    def test_database_is_memoized(self):
        self.config['databases'] = {
            "connection": {
                "driver": "sqlite",
                "database": ":memory:",
            },
        }
        self.write_config()
        Config.reload()

        db1 = Config.database()
        db2 = Config.database()

        expect(db1).to(be(db2))

        Config.reload()
        db3 = Config.database()

        expect(db1).not_to(be(db3))
Ejemplo n.º 2
0
    def test_get_database(self):
        self.config['databases'] = {
            "connection": {
                "driver": "sqlite",
                "database": ":memory:",
            },
        }
        self.write_config()
        Config.reload()

        db = Config.database()
        expect(db).to(be_an(orator.DatabaseManager))
Ejemplo n.º 3
0
class _Model(orator.Model):
    __resolver = Config.database()

    __primary_key__ = 'pk'
    __guarded__ = []

    @classmethod
    def _table_name(cls):
        return cls.__table__ or inflection.tableize(cls.__name__)

    @classmethod
    def _columns(cls):
        connection = cls.resolve_connection()
        columns = connection.get_schema_manager().list_table_columns(
            cls._table_name())
        return {name: column.get_type() for name, column in columns.items()}

    # HACK!!!
    #   Done to allow templates to use column names as a variable
    #       {% set column = 'pk' %}
    #       {{ user[column] }}
    def __getitem__(self, item):
        return getattr(self, item)
Ejemplo n.º 4
0
 def test_get_database_no_config(self):
     expect(
         lambda: Config.database()
     ).to(raise_error(AttributeError))