Package jetbrains.communicator.idea.findUsers

Source Code of jetbrains.communicator.idea.findUsers.SelectionProcessorTest

/*
* Copyright 2000-2006 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package jetbrains.communicator.idea.findUsers;

import jetbrains.communicator.core.impl.BaseTestCase;
import jetbrains.communicator.core.users.User;
import jetbrains.communicator.core.users.UserModel;
import jetbrains.communicator.mock.MockUser;
import jetbrains.communicator.util.KirTree;
import jetbrains.communicator.util.TreeUtils;

import javax.swing.*;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Set;

/**
* @author Kir
*/
public class SelectionProcessorTest extends BaseTestCase {
  private KirTree myTree;
  private JComboBox myGroupSelector;
  private SelectionProcessor mySelectionProcessor;

  @Override
  protected void setUp() throws Exception {
    super.setUp();

    myTree = new KirTree();
    setUsers(new User[]{user("foo", null)});
    myGroupSelector = new JComboBox();
    mySelectionProcessor = new SelectionProcessor(myTree, myGroupSelector,
        new String[]{"developers", "bosses"});
  }

  public void testGroupSelectorInitialization() throws Exception {
    assertEquals("Should add 'auto' item", UserModel.AUTO_GROUP,
        myGroupSelector.getModel().getElementAt(0));
    assertEquals("bosses", myGroupSelector.getModel().getElementAt(1));
    assertEquals("developers", myGroupSelector.getModel().getElementAt(2));
    assertEquals(3, myGroupSelector.getModel().getSize());
  }

  public void testGetSelectedUsers_UserSelected() throws Exception {
    setUsers(new User[]{user("bob", "Fabrique")});
    myTree.setSelectionRow(1);
    assertSelectedUsers(new String[]{"bob"});
  }

  public void testGetSelectedUsers_GroupSelected() throws Exception {
    setUsers(new User[]{user("bob", "Fabrique"), user("alice", "Fabrique")});
    myTree.setSelectionRow(0);
    assertSelectedUsers(new String[]{"bob", "alice"});
  }

  public void testGetSelectedUsers_UsersAndGroupSelected() throws Exception {
    setUsers(new User[]{user("bob", "Fabrique"), user("alice", "Idea")});
    myTree.setSelectionRow(0);
    myTree.addSelectionRow(3);
    assertSelectedUsers(new String[]{"bob", "alice"});
  }

  public void testDefaultUserSelection() throws Exception {
    assertEquals("Default selection expected", 0, myTree.getSelectionRows()[0]);
  }

  public void testSelectUserWhenHisGroupSelected() throws Throwable {
    setUsers(new User[]{user("bob", "Idea")});
    myTree.setSelectionRow(0);
    myTree.addSelectionRow(1);
    assertEquals("Only user should be selected: " + selection(), 1, myTree.getSelectionRows()[0]);
  }

  private String selection() {
    return Arrays.asList(myTree.getSelectionPaths()).toString();
  }

  public void testSelectGroupWhenUserSelected() throws Throwable {
    setUsers(new User[]{user("bob", "Idea")});
    myTree.setSelectionRow(1);
    myTree.addSelectionRow(0);
    assertEquals("Only group should be selected: " + selection(), 0, myTree.getSelectionRows()[0]);
  }

  public void testSelectGroupAndUser_AtOnce() throws Throwable {
    setUsers(new User[]{user("bob", "Idea")});
    myTree.setSelectionInterval(0, 100);
    assertEquals("Only group should be selected: " + selection(), 0, myTree.getSelectionRows()[0]);
  }

  public void testSelectUser_FromUnnamedProject() throws Throwable {
    setUsers(new User[]{user("bob", null)});
    myTree.setSelectionRow(1);

    assertEquals("Expect general group name", UserModel.DEFAULT_GROUP, myGroupSelector.getSelectedItem());
  }

  public void testSelectUser_FromNamedProject() throws Throwable {
    setUsers(new User[]{user("bob", "Irida")});
    myTree.setSelectionRow(1);

    assertEquals("Expect project group name", "Irida", myGroupSelector.getSelectedItem());
  }

  public void testSelectUsers_FromDifferentProjects() throws Throwable {
    setUsers(new User[]{user("bob", "Irida"), user("anton", "IDEtalk")});
    myTree.setSelectionRows(new int[]{1,2});

    assertEquals("Expect <Auto> group name", UserModel.AUTO_GROUP, myGroupSelector.getSelectedItem());
  }

  private void assertSelectedUsers(String[] userNames) {

    Set selectedUsers = mySelectionProcessor.getSelectedUsers();

    assertEquals("Wrong number of selected users: " + selectedUsers,
        userNames.length, selectedUsers.size());
    for (Iterator it = selectedUsers.iterator(); it.hasNext();) {
      User user = (User) it.next();
      assertTrue("Unknown user:" + user, Arrays.asList(userNames).contains(user.getName()));
    }
  }

  private void setUsers(User[] users) {
    myTree.setModel(new FoundUsersModel(Arrays.asList(users)));
    TreeUtils.expandAll(myTree);
  }

  private User user(String userName, String project) {
    MockUser user = new MockUser(userName, null);
    if (project != null) {
      user.setProjects(new String[]{project});
    }
    return user;
  }


}
TOP

Related Classes of jetbrains.communicator.idea.findUsers.SelectionProcessorTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.