def test_resource_form_definition(libres_context): collection = ResourceCollection(libres_context) resource = collection.add(title='Executive Lounge', timezone='Europe/Zurich', definition='Mail *= @@@') assert resource.form_class().mail is not None resource.definition = None assert resource.form_class is None
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))
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_resource_highlight_allocations(libres_context): collection = ResourceCollection(libres_context) resource = collection.add('Executive Lounge', 'Europe/Zurich') assert resource.date is None assert resource.highlights_min is None assert resource.highlights_max is None scheduler = resource.get_scheduler(libres_context) dates = (datetime(2015, 8, 5, 12), datetime(2015, 8, 5, 18)) allocations = scheduler.allocate(dates) resource.highlight_allocations(allocations) assert resource.date == date(2015, 8, 5) assert resource.highlights_min == allocations[0].id assert resource.highlights_min == allocations[-1].id
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