Prop

case class Prop[T, S](label: String, actual: Property[T], expected: Property[S], constraint: (T, S) => Result, decorator: Decorator) extends Executable with DecoratedProperty[Prop[T, S]]

The Prop class is a named property which holds:

  • an actual value
  • an expected value
  • a constraint to check if the actual value conforms to the expected one

This property can be executed and can be inserted in a Form.

A Prop is meant to be declared as "bound" to an actual value:

val customerName = Prop("Customer name", person.name)

[the actual value is not evaluated until the Prop is executed]

Then it can be associated an expected value with the apply method (usually in a Form declaration):

customerName("Bill")

The actual and the expected values can have different types and the constraint which is applied to them can be anything returning a result.

However the Prop companion object provides a method to create a Property with a constraint using a beEqualTo matcher:

Prop("Name", "Eric")("Eric") must ===(Success("'Eric' is equal to 'Eric'"))

Companion:
object
trait Serializable
trait Product
trait Equals
trait DecoratedProperty[Prop[T, S]]
trait DecoratedLabel[Prop[T, S]]
trait Executable
class Object
trait Matchable
class Any

Value members

Concrete methods

def apply(e: => S): Prop[T, S]

The apply method sets the expected value and returns the Prop

The apply method sets the expected value and returns the Prop

def decoratorIs(d: Decorator): Prop[T, S]

set a new Decorator

set a new Decorator

override def equals(other: Any): Boolean
Definition Classes
Equals -> Any
def execute: Result

execute the constraint set on this property, with the expected value

execute the constraint set on this property, with the expected value

override def hashCode: Int
Definition Classes
Any
def matchWith(c: (T, S) => Result): Prop[T, S]

set a specific constraint between the actual and expected value

set a specific constraint between the actual and expected value

def resultIs(r: => Result): Prop[T, S]

set a specific result on the property

set a specific result on the property

override def toString: String

Display the property:

Display the property:

label: "this" (actual: "that")

Definition Classes
Any

Inherited methods

def decorateLabel(ns: Any): Any

do the decoration

do the decoration

Inherited from:
DecoratedLabel
def decorateLabelWith(f: Any => Any): Prop[T, S]

set a new Decorator for the label

set a new Decorator for the label

Inherited from:
DecoratedLabel
def decorateValue(ns: Any): Any

do the decoration

do the decoration

Inherited from:
DecoratedProperty
def decorateValueWith(f: Any => Any): Prop[T, S]

set a new Decorator for the value

set a new Decorator for the value

Inherited from:
DecoratedProperty
def decorateWith(f: Any => Any): Prop[T, S]

set a new Decorator

set a new Decorator

Inherited from:
DecoratedProperty
def labelStyles: String

return the label styles

return the label styles

Inherited from:
DecoratedLabel
def map(f: Result => Result): Executable

modify the result to return

modify the result to return

Inherited from:
Executable
def productElementNames: Iterator[String]
Inherited from:
Product
def productIterator: Iterator[Any]
Inherited from:
Product
def styleLabelWith(s: (String, String)): Prop[T, S]

set a new style for the label

set a new style for the label

Inherited from:
DecoratedLabel
def styleValueWith(s: (String, String)): Prop[T, S]

set a new style for the value

set a new style for the value

Inherited from:
DecoratedProperty
def styleWith(s: (String, String)): Prop[T, S]

set a new style

set a new style

Inherited from:
DecoratedProperty
def valueStyles: String
Inherited from:
DecoratedProperty

Concrete fields

lazy val actualValue: Either[Result, T]
Returns:

the actual value as either Right(value) or Left(result)

lazy val expectedValue: Either[Result, S]
Returns:

the expected value as an option