### Question:
GetItemEstimateHandler extends WbxmlRequestHandler { @VisibleForTesting Estimate computeEstimate(UserDataRequest udr, AnalysedSyncCollection request, PIMDataType dataType, SyncCollectionResponse.Builder syncCollectionResponseBuilder) throws DaoException, InvalidSyncKeyException, CollectionNotFoundException, ProcessingEmailException, UnexpectedObmSyncServerException, ConversionException, HierarchyChangedException { SyncKey syncKey = request.getSyncKey(); ItemSyncState state = stMachine.getItemSyncState(syncKey); CollectionId collectionId = request.getCollectionId(); if (state == null) { throw new InvalidSyncKeyException(collectionId, syncKey); } Estimate.Builder estimateBuilder = Estimate.builder(); try { estimateBuilder.incrementEstimate(windowingDao.countPendingChanges(new WindowingKey(udr.getUser(), udr.getDevId(), collectionId, syncKey))); estimateBuilder.incrementEstimate(contentsExporter.getItemEstimateSize(udr, dataType, request, state)); } catch (FilterTypeChangedException e) { syncCollectionResponseBuilder.status(SyncStatus.INVALID_SYNC_KEY); } return estimateBuilder .collection(syncCollectionResponseBuilder.build()) .build(); } @Inject protected  GetItemEstimateHandler(
			IContentsExporter contentsExporter, 
			StateMachine stMachine,
			WindowingDao windowingDao, 
			GetItemEstimateProtocol protocol, 
			WBXMLTools wbxmlTools, 
			DOMDumper domDumper,
			FolderSnapshotDao folderSnapshotDao); @Override void process(IContinuation continuation, UserDataRequest udr,
			Document doc, ActiveSyncRequest request, Responder responder);  }### Answer:
@Test public void testComputeEstimateWithFilterTypeChangedException() throws Exception { SyncKey syncKey = new SyncKey("1234"); CollectionId collectionId = CollectionId.of(2); ItemSyncState syncState = ItemSyncState.builder() .syncKey(syncKey) .syncDate(DateUtils.getCurrentDate()) .build(); AnalysedSyncCollection syncCollection = AnalysedSyncCollection.builder() .collectionId(collectionId) .dataType(PIMDataType.EMAIL) .syncKey(syncKey) .build(); expect(stMachine.getItemSyncState(syncKey)) .andReturn(syncState); expect(contentsExporter.getItemEstimateSize(udr, PIMDataType.EMAIL, syncCollection, syncState)) .andThrow(new FilterTypeChangedException(FilterType.THREE_DAYS_BACK, FilterType.ONE_MONTHS_BACK)); expect(windowingDao.countPendingChanges(new WindowingKey(udr.getUser(), udr.getDevId(), collectionId, syncKey))) .andReturn(0l); control.replay(); SyncCollectionResponse.Builder builder = SyncCollectionResponse.builder() .collectionId(collectionId); Estimate estimate = testee.computeEstimate(udr, syncCollection, PIMDataType.EMAIL, builder); control.verify(); assertThat(estimate.getCollection().getStatus()).isEqualTo(SyncStatus.INVALID_SYNC_KEY); }