def test_2_renderPropertyBinding(self): binding = formless.Property('goodbye', formless.String( label="Goodbye", description="Goodbye cruel world")) # Look up an IBindingRenderer, which will render the form and the typed renderer = iformless.IBindingRenderer(binding) def later(val): self.assertSubstring('<form ', val) self.assertSubstring('<input name="change" type="submit"', val) self.assertSubstring('name="goodbye"', val) self.assertSubstring('Goodbye', val) self.assertSubstring('Goodbye cruel world', val) return self.render(tags.invisible(data=binding, render=renderer)).addCallback(later)
def test_1_renderTyped(self): binding = formless.Property('hello', formless.String( label="Hello", description="Hello, world.")) ## Look up a renderer specific to the type of our binding, typedValue; renderer = iformless.ITypedRenderer( binding.typedValue, None) ## But render the binding itself with this renderer ## The binding has the ".name" attribute we need def later(val): self.assertSubstring('hello', val) self.assertSubstring('Hello', val) self.assertSubstring('Hello, world.', val) self.failIfSubstring('</form>', val) self.failIfSubstring('<input type="submit"', val) return self.render(tags.invisible(data=binding, render=renderer)).addCallback(later)
def process(pw, val, val2=None): if val2 is None: val2 = val return flpr( formless.Property('password', pw), {'password': [val], 'password____2': [val2]})['password']