def test_resource_collection(libres_context): collection = ResourceCollection(libres_context) assert collection.query().count() == 0 resource = collection.add('Executive Lounge', 'Europe/Zurich') assert resource.name == 'executive-lounge' assert resource.timezone == 'Europe/Zurich' assert resource.get_scheduler(libres_context).resource == resource.id assert collection.query().count() == 1 assert collection.by_id(resource.id) assert collection.by_name('executive-lounge') collection.delete(collection.by_id(resource.id)) assert collection.query().count() == 0
def test_transaction_integration(postgres_dsn): Base = declarative_base() class App(Framework, LibresIntegration): pass class Document(Base): __tablename__ = 'documents' id = Column(Integer, primary_key=True) @App.path(path='/') class Root(object): pass @App.json(model=Root) def handle_root(self, request): collection = ResourceCollection(request.app.libres_context) resource = collection.add('Test', 'Europe/Zurich') scheduler = resource.get_scheduler(request.app.libres_context) scheduler.allocate( (datetime(2015, 7, 30, 11), datetime(2015, 7, 30, 12)) ) # this will fail and then abort everything request.app.session().add(Document(id=1)) request.app.session().add(Document(id=1)) # this is required for the transactions to actually work, usually this # would be onegov.server's job scan_morepath_modules(App) morepath.commit(App) app = App() app.configure_application(dsn=postgres_dsn, base=Base) app.namespace = 'libres' app.set_application_id('libres/foo') c = Client(app) try: c.get('/', expect_errors=True) except: pass collection = ResourceCollection(app.libres_context) assert collection.query().count() == 0
def test_transaction_integration(postgres_dsn): Base = declarative_base() class App(Framework, LibresIntegration): pass class Document(Base): __tablename__ = "documents" id = Column(Integer, primary_key=True) @App.path(path="/") class Root(object): pass @App.json(model=Root) def handle_root(self, request): collection = ResourceCollection(request.app.libres_context) resource = collection.add("Test", "Europe/Zurich") scheduler = resource.get_scheduler(request.app.libres_context) scheduler.allocate((datetime(2015, 7, 30, 11), datetime(2015, 7, 30, 12))) # this will fail and then abort everything request.app.session().add(Document(id=1)) request.app.session().add(Document(id=1)) # this is required for the transactions to actually work, usually this # would be onegov.server's job scan_morepath_modules(App) morepath.commit(App) app = App() app.configure_application(dsn=postgres_dsn, base=Base) app.namespace = "libres" app.set_application_id("libres/foo") c = Client(app) try: c.get("/", expect_errors=True) except: pass collection = ResourceCollection(app.libres_context) assert collection.query().count() == 0
def test_resource_save_delete(libres_context): collection = ResourceCollection(libres_context) resource = collection.add('Executive Lounge', 'Europe/Zurich') assert resource.name == 'executive-lounge' assert resource.timezone == 'Europe/Zurich' scheduler = resource.get_scheduler(libres_context) dates = (datetime(2015, 8, 5, 12), datetime(2015, 8, 5, 18)) scheduler.allocate(dates) scheduler.reserve('*****@*****.**', dates) with pytest.raises(AssertionError): collection.delete(resource) collection.delete(resource, including_reservations=True) assert collection.query().count() == 0 assert scheduler.managed_reservations().count() == 0 assert scheduler.managed_reserved_slots().count() == 0 assert scheduler.managed_allocations().count() == 0