def test_register_path_with_parameters(): config = setup() app = App(testing_config=config) root = Root() lookup = app.lookup() def get_model(id, param='default'): model = Model() model.id = id model.param = param return model config.commit() register_path(app, Root, '', lambda m: {}, None, None, lambda: root) register_path(app, Model, '{id}', lambda model: {'id': model.id, 'param': model.param }, None, None, get_model) obj, request = consume(app, 'a') assert obj.id == 'a' assert obj.param == 'default' obj, request = consume(app, 'a', {'param': 'value'}) assert obj.id == 'a' assert obj.param == 'value' model = Model() model.id = 'b' model.param = 'other' assert generic.path(model, lookup=lookup) == ('b', {'param': 'other'}) assert generic.app(model, lookup=lookup) is app
def test_register_path(): config = setup() app = App(testing_config=config) root = Root() lookup = app.lookup() def get_model(id): model = Model() model.id = id return model config.commit() register_path(app, Root, '', lambda m: {}, None, None, lambda: root) register_path(app, Model, '{id}', lambda model: {'id': model.id}, None, None, get_model) obj, request = consume(app, 'a') assert obj.id == 'a' model = Model() model.id = 'b' assert generic.path(model, lookup=lookup) == ('b', {}) assert generic.app(model, lookup=lookup) is app
def app_path(model, lookup): app = generic.app(model, lookup=lookup, default=None) if app is None: raise LinkError() traject = generic.traject(app, lookup=lookup) return traject.path(model)