@Test
  public void update_only_scm_accounts() throws Exception {
    Map<String, Object> params = newHashMap();
    params.put("login", "john");
    params.put("scm_accounts", newArrayList("jn"));
    service.update(params);

    ArgumentCaptor<UpdateUser> userCaptor = ArgumentCaptor.forClass(UpdateUser.class);
    verify(userService).update(userCaptor.capture());
    assertThat(userCaptor.getValue().isNameChanged()).isFalse();
    assertThat(userCaptor.getValue().isEmailChanged()).isFalse();
    assertThat(userCaptor.getValue().isScmAccountsChanged()).isTrue();
    assertThat(userCaptor.getValue().isPasswordChanged()).isFalse();
  }
  @Test
  public void update() throws Exception {
    Map<String, Object> params = newHashMap();
    params.put("login", "john");
    params.put("name", "John");
    params.put("email", "*****@*****.**");
    params.put("scm_accounts", newArrayList("jn"));
    params.put("password", "1234");
    params.put("password_confirmation", "1234");

    service.update(params);

    ArgumentCaptor<UpdateUser> userCaptor = ArgumentCaptor.forClass(UpdateUser.class);
    verify(userService).update(userCaptor.capture());
    assertThat(userCaptor.getValue().login()).isEqualTo("john");
    assertThat(userCaptor.getValue().name()).isEqualTo("John");
    assertThat(userCaptor.getValue().email()).isEqualTo("*****@*****.**");
    assertThat(userCaptor.getValue().scmAccounts()).containsOnly("jn");
    assertThat(userCaptor.getValue().password()).isEqualTo("1234");
    assertThat(userCaptor.getValue().passwordConfirmation()).isEqualTo("1234");
  }