@Test(enabled = TESTS_ENABLED)
public void testFindBundlesByCriteria() throws Exception {
Bundle b1 = createBundle("one");
Bundle b2 = createBundle("two");
BundleVersion bv1 = createBundleVersion(b1.getName(), "1.0", b1);
BundleVersion bv2 = createBundleVersion(b2.getName(), "1.0", b2);
BundleCriteria c = new BundleCriteria();
PageList<Bundle> bundles;
Bundle b;
String name;
// return all with no optional data
c.addFilterName(TEST_PREFIX);
c.addSortName(PageOrdering.ASC);
bundles = bundleManager.findBundlesByCriteria(overlord, c);
assertNotNull(bundles);
assertEquals(2, bundles.size());
b = bundles.get(0);
name = "one";
assertNotNull(b);
assertTrue(b.getName() + " does not contain [" + name + "]", b.getName().contains(name));
assertTrue(b.getBundleType().getName() + " does not contain [" + name + "]", b.getBundleType().getName()
.contains(name));
try {
b.getBundleVersions().isEmpty();
fail("Should have thrown LazyInitializationException");
} catch (LazyInitializationException e) {
// expected
} catch (Exception e) {
fail("Should have thrown LazyInitializationException");
}
b = bundles.get(1);
name = "two";
assertNotNull(b);
assertTrue(b.getName() + " does not contain [" + name + "]", b.getName().contains(name));
assertTrue(b.getBundleType().getName() + " does not contain [" + name + "]", b.getBundleType().getName()
.contains(name));
// return bundle "two" using all criteria and with all optional data
c.addFilterId(b.getId());
c.addFilterName(b.getName());
c.addFilterBundleTypeName(b.getBundleType().getName());
c.fetchBundleVersions(true);
c.fetchRepo(true);
bundles = bundleManager.findBundlesByCriteria(overlord, c);
assertNotNull(bundles);
assertEquals(1, bundles.size());
b = bundles.get(0);
assertTrue(b.getName() + " does not contain [" + name + "]", b.getName().contains(name));
assertTrue(b.getBundleType().getName() + " does not contain [" + name + "]", b.getBundleType().getName()
.contains(name));
assertNotNull(b.getBundleVersions());
assertEquals(1, b.getBundleVersions().size());
BundleVersion bv = b.getBundleVersions().get(0);
assertEquals(bv2, bv);
assertEquals(b, bv.getBundle());
Repo r = b.getRepo();
assertNotNull(r);
assertEquals(b.getName(), r.getName());
}