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))
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))
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)
def test_get_database_no_config(self): expect( lambda: Config.database() ).to(raise_error(AttributeError))