public void testStart() throws Exception {
    MockControl bundleContextControl = MockControl.createControl(BundleContext.class);
    BundleContext context = (BundleContext) bundleContextControl.getMock();
    // platform determination

    // extracting bundle id from bundle
    bundleContextControl.expectAndReturn(context.getBundle(), new MockBundle());

    // look for existing resolved bundles
    bundleContextControl.expectAndReturn(context.getBundles(), new Bundle[0], 2);

    // register namespace and entity resolving service
    // context.registerService((String[]) null, null, null);
    // bundleContextControl.setMatcher(MockControl.ALWAYS_MATCHER);
    // bundleContextControl.setReturnValue(null);

    // register context service
    context.registerService((String[]) null, null, null);
    bundleContextControl.setMatcher(MockControl.ALWAYS_MATCHER);
    bundleContextControl.setReturnValue(null, MockControl.ONE_OR_MORE);

    // create task executor
    EntryLookupControllingMockBundle aBundle = new EntryLookupControllingMockBundle(null);
    aBundle.setEntryReturnOnNextCallToGetEntry(null);
    bundleContextControl.expectAndReturn(context.getBundle(), aBundle, MockControl.ONE_OR_MORE);

    // listen for bundle events
    context.addBundleListener(null);
    bundleContextControl.setMatcher(MockControl.ALWAYS_MATCHER);
    bundleContextControl.setVoidCallable(2);

    bundleContextControl.expectAndReturn(
        context.registerService(new String[0], null, new Properties()),
        new MockServiceRegistration(),
        MockControl.ONE_OR_MORE);
    bundleContextControl.setMatcher(MockControl.ALWAYS_MATCHER);

    bundleContextControl.replay();

    this.listener.start(context);
    bundleContextControl.verify();
  }
  public void testMultipleStartsAreIgnored() {
    mockTaskProcessor_.executeTaskPeriodically(0, null, false);
    controlTaskProcessor_.setMatcher(MockControl.ALWAYS_MATCHER);
    controlTaskProcessor_.setReturnValue(mockScheduledFuture_);
    replayAll();

    objectUnderTest_.startTask(2000);
    objectUnderTest_.startTask(2000);

    verifyAll();
  }
  public void testStopTask() {
    mockTaskProcessor_.executeTaskPeriodically(0, null, false);
    controlTaskProcessor_.setMatcher(MockControl.ALWAYS_MATCHER);
    controlTaskProcessor_.setReturnValue(mockScheduledFuture_);
    controlScheduledFuture_.expectAndReturn(mockScheduledFuture_.cancel(true), true);
    replayAll();

    objectUnderTest_.startTask(2000);
    objectUnderTest_.stopTask();

    verifyAll();
  }
 public void testStartTaskRegistersTask() {
   mockTaskProcessor_.executeTaskPeriodically(1000, null, true);
   controlTaskProcessor_.setMatcher(
       new AbstractMatcher() {
         public boolean matches(Object[] expected, Object[] actual) {
           return expected[0].equals(actual[0]);
         }
       });
   controlTaskProcessor_.setReturnValue(mockScheduledFuture_);
   replayAll();
   objectUnderTest_.startTask(1000);
   verifyAll();
 }
  /**
   * Test that the manager executes the correct search to find the recent comments.
   *
   * @param issueIds the issue ids to limit the comment search by.
   * @param request the search request being used to find the comments. This is the request that is
   *     normally used to find all the issue ids to form the scope of the comment search. The
   *     request may also be used to add extra "update date" criteria to the comment search.
   * @param user the user performing the search.
   * @param includeDates true if and only if the passed search request should be used to create
   *     extra "update date" criteria.
   * @param expectedQuery the query that we expect to be generated by the manager.
   * @throws Exception this is a test, just rethrow for a failure.
   */
  private void _testGetRecentComments(
      final List<Long> issueIds,
      final SearchRequest request,
      final User user,
      final boolean includeDates,
      final org.apache.lucene.search.Query expectedQuery)
      throws Exception {
    // the issue searcher is never called, but we need it there.
    final MockControl mockIssueSearcherControl =
        MockClassControl.createControl(IndexSearcher.class);
    final IndexSearcher mockIssueSearcher = (IndexSearcher) mockIssueSearcherControl.getMock();
    mockIssueSearcherControl.replay();

    // this is where we check to make sure search lucene with the correct comment.
    final MockControl mockCommentSearcherControl =
        MockClassControl.createControl(IndexSearcher.class);
    final IndexSearcher mockCommentSearcher = (IndexSearcher) mockCommentSearcherControl.getMock();

    final Sort sort =
        new Sort(
            new SortField[] {
              new SortField(DocumentConstants.COMMENT_UPDATED, SortField.STRING, true)
            });
    final ArgumentsMatcher compositeArgumentsMatcher =
        ArgumentsMatcherBuilder.newNaturalBuilder()
            .addDefaultMatcher()
            .addDefaultMatcher()
            .addArgumentMatcher(Sort.class, new LuceneSortMatcher())
            .asArgumentsMatcher();

    mockCommentSearcher.search(expectedQuery, Integer.MAX_VALUE, sort);
    mockCommentSearcherControl.setMatcher(compositeArgumentsMatcher);
    mockCommentSearcherControl.setReturnValue(null);
    mockCommentSearcherControl.replay();

    final MockSearchProviderFactory factory = new MockSearchProviderFactory();
    factory.addRegistration(SearchProviderFactory.ISSUE_INDEX, mockIssueSearcher);
    factory.addRegistration(SearchProviderFactory.COMMENT_INDEX, mockCommentSearcher);

    // create a IssueSearchProvider that will return our constant list of ids.
    MockIssueSearchProvider mockIssueSearchProvider =
        new MockIssueSearchProvider(issueIds, user, request.getQuery());
    final SearchService service = EasyMock.createMock(SearchService.class);
    EasyMock.expect(service.doesQueryFitFilterForm(user, request.getQuery()))
        .andReturn(includeDates);
    EasyMock.replay(service);

    MyLuceneQueryModifier myLuceneQueryModifier = new MyLuceneQueryModifier();

    CommentService commentService = EasyMock.createMock(CommentService.class);
    JqlOperandResolver jqlOperandResolver = MockJqlOperandResolver.createSimpleSupport();
    final DefaultRecentCommentManager defaultCommentManager =
        new DefaultRecentCommentManager(
            commentService,
            factory,
            mockIssueSearchProvider,
            dateSupport,
            jqlOperandResolver,
            service,
            myLuceneQueryModifier);
    defaultCommentManager.getRecentComments(request, user);

    mockIssueSearcherControl.verify();
    mockCommentSearcherControl.verify();
  }
 @Override
 public void setMatcher(final ArgumentsMatcher matcher) {
   delegate.setMatcher(matcher);
 }