@Test public void search_qprofile_activity() throws InterruptedException { MockUserSession.set() .setGlobalPermissions(GlobalPermissions.QUALITY_PROFILE_ADMIN) .setLogin("david"); UserDto user = new UserDto() .setLogin("david") .setName("David") .setEmail("*****@*****.**") .setCreatedAt(new Date()) .setUpdatedAt(new Date()); db.userDao().insert(dbSession, user); // We need an actual rule in DB to test RuleName in Activity RuleDto rule = db.ruleDao().getByKey(dbSession, RuleTesting.XOO_X1); tester .get(ActivityService.class) .write( dbSession, Activity.Type.QPROFILE, ActiveRuleChange.createFor( ActiveRuleChange.Type.ACTIVATED, ActiveRuleKey.of(XOO_P1_KEY, RuleTesting.XOO_X1)) .setSeverity(Severity.MAJOR) .setParameter("max", "10")); dbSession.commit(); Result<QProfileActivity> activities = service.searchActivities(new QProfileActivityQuery(), new QueryContext()); assertThat(activities.getHits()).hasSize(1); QProfileActivity activity = activities.getHits().get(0); assertThat(activity.type()).isEqualTo(Activity.Type.QPROFILE); assertThat(activity.action()).isEqualTo(ActiveRuleChange.Type.ACTIVATED.name()); assertThat(activity.ruleKey()).isEqualTo(RuleTesting.XOO_X1); assertThat(activity.profileKey()).isEqualTo(XOO_P1_KEY); assertThat(activity.severity()).isEqualTo(Severity.MAJOR); assertThat(activity.ruleName()).isEqualTo(rule.getName()); assertThat(activity.login()).isEqualTo("david"); assertThat(activity.authorName()).isEqualTo("David"); assertThat(activity.parameters()).hasSize(1); assertThat(activity.parameters().get("max")).isEqualTo("10"); }
private Result<QProfileActivity> searchActivities( QProfileActivityQuery query, SearchOptions options) { DbSession session = dbClient.openSession(false); try { SearchResponse response = activityIndex.doSearch(query, options); Result<QProfileActivity> result = new Result<>(response); for (SearchHit hit : response.getHits().getHits()) { QProfileActivity profileActivity = new QProfileActivity(hit.getSource()); RuleDto ruleDto = dbClient.ruleDao().getNullableByKey(session, profileActivity.ruleKey()); profileActivity.ruleName(ruleDto != null ? ruleDto.getName() : null); String login = profileActivity.getLogin(); if (login != null) { UserDto user = dbClient.userDao().selectActiveUserByLogin(session, login); profileActivity.authorName(user != null ? user.getName() : null); } result.getHits().add(profileActivity); } return result; } finally { session.close(); } }
private UserDto insertUser(String login, String name) { return dbClient.userDao().insert(session, new UserDto().setLogin(login).setName(name)); }