From mkolesni at redhat.com Sun Mar 17 05:30:36 2013 Content-Type: multipart/mixed; boundary="===============8003796970211476097==" MIME-Version: 1.0 From: Mike Kolesnik To: devel at ovirt.org Subject: [Engine-devel] Better testing for ValidationResults using ValidationResultMatchers Date: Sun, 17 Mar 2013 05:30:35 -0400 Message-ID: <1623021709.1902202.1363512635976.JavaMail.root@redhat.com> In-Reply-To: 818321091.1894972.1363510165088.JavaMail.root@redhat.com --===============8003796970211476097== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_1902201_1683252520.1363512635975 Content-Type: text/plain; charset=3Dutf-8 Content-Transfer-Encoding: 7bit Hi, = If you don't know what ValidationResult is, check out http://www.ovirt.org/= ValidationResult = In a gist, I added a new way to test this using JUnit's assertThat syntax: = // Test that validation result is valid assertThat(someValidation(), isValid()); // Test that validation result is invalid assertThat(someValidation(), failsWith(VdcBllMessages.SOME_ERROR)); // Test that validation result is invalid and has replacement assertThat(someValidation(), both(failsWith(VdcBllMessages.SOME_ERROR)).and= (replacements(hasItem(EXPECTED_REPLACEMENT)))); You need to statically impo= rt ValidationResultMatchers (and the basic JUnit matchers) for this to work= . = The rest I documented in the aforementioned wiki. = Check out the patch: http://gerrit.ovirt.org/#/c/13061 = Or how to use it: http://gerrit.ovirt.org/#/c/13062 = Regards, = Mike = ------=3D_Part_1902201_1683252520.1363512635975 Content-Type: text/html; charset=3Dutf-8 Content-Transfer-Encoding: 7bit <= div style=3D'font-family: times new roman,new york,times,serif; font-size: = 12pt; color: #000000'>Hi,

If you don't know what ValidationResult is= , check out http://www.ovirt.org/ValidationResult

In a gist, I added= a new way to test this using JUnit's assertThat syntax:
// Test th=
at validation result is valid
assertThat(someValidation(), isValid());

// Test that validation result is invalid
assertThat(someValidation(), failsWith(VdcBllMessages.SOME_ERROR));

// Test that validation result is invalid and has replacement
assertThat(someValidation(), both(failsWith(VdcBllMessages.SOME_ERROR)).and=
(replacements(hasItem(EXPECTED_REPLACEMENT))));
You need to statically import ValidationResultMatchers (and the basic= JUnit matchers) for this to work.

The rest I documented in the afor= ementioned wiki.

Check out the patch: http://gerrit.ovirt.org/#/c/13= 061

Or how to use it: http://gerrit.ovirt.org/#/c/13062

= Regards,
Mike
<= br> ------=3D_Part_1902201_1683252520.1363512635975-- --===============8003796970211476097== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzE5MDIyMDFfMTY4MzI1MjUyMC4xMzYzNTEyNjM1OTc1CkNvbnRlbnQtVHlw ZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3 Yml0CgpIaSwgCgpJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IFZhbGlkYXRpb25SZXN1bHQgaXMsIGNo ZWNrIG91dCBodHRwOi8vd3d3Lm92aXJ0Lm9yZy9WYWxpZGF0aW9uUmVzdWx0IAoKSW4gYSBnaXN0 LCBJIGFkZGVkIGEgbmV3IHdheSB0byB0ZXN0IHRoaXMgdXNpbmcgSlVuaXQncyBhc3NlcnRUaGF0 IHN5bnRheDogCi8vIFRlc3QgdGhhdCB2YWxpZGF0aW9uIHJlc3VsdCBpcyB2YWxpZAphc3NlcnRU aGF0KHNvbWVWYWxpZGF0aW9uKCksIGlzVmFsaWQoKSk7CgovLyBUZXN0IHRoYXQgdmFsaWRhdGlv biByZXN1bHQgaXMgaW52YWxpZAphc3NlcnRUaGF0KHNvbWVWYWxpZGF0aW9uKCksIGZhaWxzV2l0 aChWZGNCbGxNZXNzYWdlcy5TT01FX0VSUk9SKSk7CgovLyBUZXN0IHRoYXQgdmFsaWRhdGlvbiBy ZXN1bHQgaXMgaW52YWxpZCBhbmQgaGFzIHJlcGxhY2VtZW50CmFzc2VydFRoYXQoc29tZVZhbGlk YXRpb24oKSwgYm90aChmYWlsc1dpdGgoVmRjQmxsTWVzc2FnZXMuU09NRV9FUlJPUikpLmFuZChy ZXBsYWNlbWVudHMoaGFzSXRlbShFWFBFQ1RFRF9SRVBMQUNFTUVOVCkpKSk7IFlvdSBuZWVkIHRv IHN0YXRpY2FsbHkgaW1wb3J0IFZhbGlkYXRpb25SZXN1bHRNYXRjaGVycyAoYW5kIHRoZSBiYXNp YyBKVW5pdCBtYXRjaGVycykgZm9yIHRoaXMgdG8gd29yay4gCgpUaGUgcmVzdCBJIGRvY3VtZW50 ZWQgaW4gdGhlIGFmb3JlbWVudGlvbmVkIHdpa2kuIAoKQ2hlY2sgb3V0IHRoZSBwYXRjaDogaHR0 cDovL2dlcnJpdC5vdmlydC5vcmcvIy9jLzEzMDYxIAoKT3IgaG93IHRvIHVzZSBpdDogaHR0cDov L2dlcnJpdC5vdmlydC5vcmcvIy9jLzEzMDYyIAoKClJlZ2FyZHMsIApNaWtlIAoKCi0tLS0tLT1f UGFydF8xOTAyMjAxXzE2ODMyNTI1MjAuMTM2MzUxMjYzNTk3NQpDb250ZW50LVR5cGU6IHRleHQv aHRtbDsgY2hhcnNldD11dGYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0Cgo8aHRt bD48aGVhZD48c3R5bGUgdHlwZT0ndGV4dC9jc3MnPnAgeyBtYXJnaW46IDA7IH08L3N0eWxlPjwv aGVhZD48Ym9keT48ZGl2IHN0eWxlPSdmb250LWZhbWlseTogdGltZXMgbmV3IHJvbWFuLG5ldyB5 b3JrLHRpbWVzLHNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiAjMDAwMDAwJz5IaSw8YnI+ PGJyPklmIHlvdSBkb24ndCBrbm93IHdoYXQgVmFsaWRhdGlvblJlc3VsdCBpcywgY2hlY2sgb3V0 IGh0dHA6Ly93d3cub3ZpcnQub3JnL1ZhbGlkYXRpb25SZXN1bHQ8YnI+PGJyPkluIGEgZ2lzdCwg SSBhZGRlZCBhIG5ldyB3YXkgdG8gdGVzdCB0aGlzIHVzaW5nIEpVbml0J3MgYXNzZXJ0VGhhdCBz eW50YXg6PGJyPjxwcmU+Ly8gVGVzdCB0aGF0IHZhbGlkYXRpb24gcmVzdWx0IGlzIHZhbGlkCmFz c2VydFRoYXQoc29tZVZhbGlkYXRpb24oKSwgaXNWYWxpZCgpKTsKCi8vIFRlc3QgdGhhdCB2YWxp ZGF0aW9uIHJlc3VsdCBpcyBpbnZhbGlkCmFzc2VydFRoYXQoc29tZVZhbGlkYXRpb24oKSwgZmFp bHNXaXRoKFZkY0JsbE1lc3NhZ2VzLlNPTUVfRVJST1IpKTsKCi8vIFRlc3QgdGhhdCB2YWxpZGF0 aW9uIHJlc3VsdCBpcyBpbnZhbGlkIGFuZCBoYXMgcmVwbGFjZW1lbnQKYXNzZXJ0VGhhdChzb21l VmFsaWRhdGlvbigpLCBib3RoKGZhaWxzV2l0aChWZGNCbGxNZXNzYWdlcy5TT01FX0VSUk9SKSku YW5kKHJlcGxhY2VtZW50cyhoYXNJdGVtKEVYUEVDVEVEX1JFUExBQ0VNRU5UKSkpKTsKPC9wcmU+ WW91IG5lZWQgdG8gc3RhdGljYWxseSBpbXBvcnQgVmFsaWRhdGlvblJlc3VsdE1hdGNoZXJzIChh bmQgdGhlIGJhc2ljIEpVbml0IG1hdGNoZXJzKSBmb3IgdGhpcyB0byB3b3JrLjxicj48YnI+VGhl IHJlc3QgSSBkb2N1bWVudGVkIGluIHRoZSBhZm9yZW1lbnRpb25lZCB3aWtpLjxicj48YnI+Q2hl Y2sgb3V0IHRoZSBwYXRjaDogaHR0cDovL2dlcnJpdC5vdmlydC5vcmcvIy9jLzEzMDYxPGJyPjxi cj5PciBob3cgdG8gdXNlIGl0OiBodHRwOi8vZ2Vycml0Lm92aXJ0Lm9yZy8jL2MvMTMwNjI8YnI+ PGJyPjxkaXY+PHNwYW4gbmFtZT0ieCI+PC9zcGFuPlJlZ2FyZHMsPGJyPk1pa2U8c3BhbiBuYW1l PSJ4Ij48L3NwYW4+PGJyPjwvZGl2Pjxicj48L2Rpdj48L2JvZHk+PC9odG1sPgotLS0tLS09X1Bh cnRfMTkwMjIwMV8xNjgzMjUyNTIwLjEzNjM1MTI2MzU5NzUtLQo= --===============8003796970211476097==--