/** Make sure we can delete a search request that is in the cache. */ @Test public void testDeleteInCache() { deletegateStore.getAllOwnedSearchRequests(adminUser); mockController.setReturnValue(EasyList.build(searchRequest1, searchRequest2)); deletegateStore.delete(searchRequest2.getId()); deletegateStore.getSearchRequest(searchRequest2.getId()); mockController.setReturnValue(searchRequest2); mockController.replay(); // prime the cache. cachingStore.getAllOwnedSearchRequests(adminUser); // execute the tests. cachingStore.delete(searchRequest2.getId()); // these should be cached. assertEqualsNotSame(searchRequest1, cachingStore.getSearchRequest(searchRequest1.getId())); assertEqualsNotSame( EasyList.build(searchRequest1), cachingStore.getAllOwnedSearchRequests(adminUser)); // this should not be cached. assertEqualsNotSame(searchRequest2, cachingStore.getSearchRequest(searchRequest2.getId())); mockController.verify(); }
/** Check that we can cache the owned search. */ @Test public void testGetAllOwnedSearchRequest() { final List expectedRequests = EasyList.build(searchRequest1, searchRequest2, searchRequest3); deletegateStore.getSearchRequest(searchRequest1.getId()); mockController.setReturnValue(searchRequest1); deletegateStore.getSearchRequest(searchRequest4.getId()); mockController.setReturnValue(searchRequest4); deletegateStore.getAllOwnedSearchRequests(adminUser); mockController.setReturnValue(expectedRequests); mockController.replay(); // put a value in the cache for the test. cachingStore.getSearchRequest(searchRequest1.getId()); cachingStore.getSearchRequest(searchRequest4.getId()); // this first call should not be cached and should delegate to getAllOwnedSearchRequests. assertEqualsNotSame(expectedRequests, cachingStore.getAllOwnedSearchRequests(adminUser)); // these calls will now be cached. assertEqualsNotSame(expectedRequests, cachingStore.getAllOwnedSearchRequests(adminUser)); assertEqualsNotSame(expectedRequests, cachingStore.getAllOwnedSearchRequests(adminUser)); assertEqualsNotSame(expectedRequests, cachingStore.getAllOwnedSearchRequests(adminUser)); // these should not also be cached. assertEqualsNotSame(searchRequest2, cachingStore.getSearchRequest(searchRequest2.getId())); assertEqualsNotSame(searchRequest3, cachingStore.getSearchRequest(searchRequest3.getId())); mockController.verify(); }
/** Check that we can get the owned search when a null value from the store is returned. */ @Test public void testGetAllOwnedSearchRequestNullList() { deletegateStore.getAllOwnedSearchRequests(adminUser); mockController.setReturnValue(null, 3); mockController.replay(); // failure should not be cached. assertNull(cachingStore.getAllOwnedSearchRequests(adminUser)); assertNull(cachingStore.getAllOwnedSearchRequests(adminUser)); assertNull(cachingStore.getAllOwnedSearchRequests(adminUser)); mockController.verify(); }
/** Check that exception is propgated and the results is not stored. */ @Test public void testGetAllOwnedSearchRequestError() { deletegateStore.getAllOwnedSearchRequests(adminUser); mockController.setThrowable(new RuntimeException("testGetAllOwnedSearchRequestError")); deletegateStore.getAllOwnedSearchRequests(adminUser); mockController.setReturnValue(null); mockController.replay(); try { cachingStore.getAllOwnedSearchRequests(adminUser); fail("Expecting an error."); } catch (RuntimeException expected) { } // these calls will now be cached. assertNull(cachingStore.getAllOwnedSearchRequests(adminUser)); mockController.verify(); }
/** Check what happens when try to save a search whose user has changed. */ @Test public void testUpdateChangedUserName() { SearchRequest expectedRequest = new SearchRequest(searchRequest1); expectedRequest.setOwnerUserName(fredUser.getName()); deletegateStore.getAllOwnedSearchRequests(adminUser); mockController.setReturnValue(EasyList.build(searchRequest1, searchRequest2, searchRequest3)); deletegateStore.getAllOwnedSearchRequests(fredUser); mockController.setReturnValue(EasyList.build(searchRequest4)); deletegateStore.update(expectedRequest); mockController.setReturnValue(expectedRequest); mockController.replay(); // put a value in the cache for the test. cachingStore.getAllOwnedSearchRequests(adminUser); cachingStore.getAllOwnedSearchRequests(fredUser); // this call should work. assertEqualsNotSame(expectedRequest, cachingStore.update(expectedRequest)); // all of these calls should be cache. assertEqualsNotSame(searchRequest2, cachingStore.getSearchRequest(searchRequest2.getId())); assertEqualsNotSame(searchRequest3, cachingStore.getSearchRequest(searchRequest3.getId())); assertEqualsNotSame(searchRequest4, cachingStore.getSearchRequest(searchRequest4.getId())); assertEqualsNotSame(expectedRequest, cachingStore.getSearchRequest(expectedRequest.getId())); assertEqualsNotSame( EasyList.build(searchRequest2, searchRequest3), cachingStore.getAllOwnedSearchRequests(adminUser)); assertEqualsNotSame( EasyList.build(expectedRequest, searchRequest4), cachingStore.getAllOwnedSearchRequests(fredUser)); mockController.verify(); }