Skip to content

Instantly share code, notes, and snippets.

@mvonrenteln
Created September 15, 2017 07:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mvonrenteln/e275c3f9856d4f4eb6edf6726a81fe70 to your computer and use it in GitHub Desktop.
Save mvonrenteln/e275c3f9856d4f4eb6edf6726a81fe70 to your computer and use it in GitHub Desktop.
trait DiffTrait {
Javers javers = JaversBuilder.javers().build()
def result
def expected
String diff(result, expected) {
Diff diff = javers.compare(result, expected);
def valueChanges = diff.getChangesByType(ValueChange)
String message = ""
valueChanges.each { message += "\n$it.propertyName = $it.left instead of expected: $it.right" }
return message
}
String diff() {
diff(result, expected)
}
def result(result) {
this.result = result
return result
}
def expected(expected) {
this.expected = expected
return expected
}
}
class MyTest extends Specification implements DiffTrait {
def testFails() {
when:
def myResult = new Person(name:"Bob", email:"test@result.org")
def myExpected = new Person(name:"Bob", email:"test@expected.org")
then:
assert result(myResult) == expected(myExpected), diff()
}
def testSucceeds() {
when:
def myResult = result(new Person(name:"Bob", email:"test@result.org"))
def myExpected = expected(new Person(name:"Bob", email:"test@expected.org"))
then:
assert myResult == myExpected, diff()
}
}
class Person {
String name
String email
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment