### Question:
SolutionSynchronizer extends RunnableBase { public void synchronizeSolution(TaskAssigningSolution solution, LocalDateTime fromLastModificationDate) { synchronizeSolution(solution, fromLastModificationDate, Duration.ofMillis(0)); } SolutionSynchronizer(final SolverExecutor solverExecutor,
                                final TaskAssigningRuntimeDelegate delegate,
                                final UserSystemService userSystem,
                                final Duration syncInterval,
                                final Duration usersSyncInterval,
                                final SolverHandlerContext context,
                                final Consumer<Result> resultConsumer); void initSolverExecutor(); void synchronizeSolution(TaskAssigningSolution solution, LocalDateTime fromLastModificationDate); void synchronizeSolution(TaskAssigningSolution solution, LocalDateTime fromLastModificationDate, Duration unchangedPeriodTimeout); @Override void destroy(); @Override void run();  }### Answer:
@Test(timeout = TEST_TIMEOUT) public void synchronizeSolution() throws Exception { CompletableFuture future = startRunnableBase(); LocalDateTime startTime = LocalDateTime.now().withNano(0); List<TaskAssigningRuntimeDelegate.FindTasksResult> tasksQueryResults = mockTasksQueryExecutions(startTime); int executionsCount = tasksQueryResults.size(); usersSyncTime = false; executeSynchronizeSolution(future, startTime, tasksQueryResults, Collections.emptyList(), executionsCount); verityTasksQueryExecutions(startTime, tasksQueryResults); verify(userSystemService, never()).findAllUsers(); verify(resultConsumer).accept(resultCaptor.capture()); assertTrue(resultCaptor.getValue().hasChanges()); assertEquals(generatedChanges, resultCaptor.getValue().getChanges()); }