Package jetbrains.communicator.commands

Source Code of jetbrains.communicator.commands.SendMessageCommandTest

/*
* 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.commands;

import jetbrains.communicator.core.impl.BaseTestCase;
import jetbrains.communicator.core.EventBroadcaster;
import jetbrains.communicator.core.impl.users.UserImpl;
import jetbrains.communicator.core.impl.users.UserModelImpl;
import jetbrains.communicator.core.users.User;
import jetbrains.communicator.ide.IDEFacade;
import jetbrains.communicator.mock.MockIDEFacade;
import jetbrains.communicator.mock.MockTransport;
import jetbrains.communicator.mock.MockUser;
import jetbrains.communicator.mock.MockUserListComponent;
import org.jmock.Mock;

import java.net.UnknownHostException;

/**
* @author kir
*/
public class SendMessageCommandTest extends BaseTestCase {
  private SendMessageCommand myCommand;

  private String myLog = "";
  private UserModelImpl myUserModel;
  private MockUserListComponent myMockUserListComponent;
  private Mock myFacadeMock;

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

    myMockUserListComponent = new MockUserListComponent();
    myFacadeMock = mock(IDEFacade.class);
    myUserModel = new UserModelImpl(getBroadcaster());
    disposeOnTearDown(myUserModel);
    myCommand = new SendMessageCommand(myUserModel, myMockUserListComponent, (IDEFacade) myFacadeMock.proxy());
  }

  public void testInvokeDialog() throws Exception {
    MockUser user1 = new MockUser("user1", null);
    MockUser user2 = new MockUser("user2", null);
    MockUser user3 = new MockUser("user3", null);
    myUserModel.addUser(user1);
    myUserModel.addUser(user2);
    myUserModel.addUser(user3);
    myMockUserListComponent.setSelectedNodes(new Object[]{"a group", user2, "grp2", user1});

    myCommand.setMessage("a text");
    myFacadeMock.expects(once()).method("invokeSendMessage").with(
        eq(myUserModel.getAllUsers()),
        eq(new User[]{user2, user1}),
        eq("a text"),
        ANYTHING);

    myCommand.execute();
  }

  public void testInvokeDialogWithExplicitUser() throws Exception {
    MockUser user1 = new MockUser();
    myUserModel.addUser(user1);
    myCommand.setUser(user1);

    myFacadeMock.expects(once()).method("invokeSendMessage").with(
        eq(myUserModel.getAllUsers()),
        eq(new User[]{user1}),
        eq(""),
        ANYTHING);

    myCommand.execute();
  }

  public void testSendMessage() throws Exception {
    addEventListener();

    final User user = UserImpl.create("user", MockTransport.NAME);
    doTest("message1", new User[]{user});

    verifySendMessageLocalEvent(user, "message1");
  }

  private MockUser createUser() {
    final MockUser user = new MockUser("user", null) {
      @Override
      public void sendMessage(String comment, EventBroadcaster eventBroadcaster) {
        myLog += toString() + ' ' + comment;
      }
    };
    return user;
  }

  public void testSendNothingWhenNoMessage() throws Exception {
    final User user = createUser();
    doTest("   \n", new User[]{user});
    assertEquals("Nothing to send", "", myLog);
  }

  public void testSendNothingWhenNoUsers() throws Exception {
    addEventListener();
    doTest("message", new User[0]);
    assertEquals("Nothing to send", 0, myEvents.size());
  }

  private void doTest(final String message, final User[] users) throws UnknownHostException {

    MockIDEFacade ideFacade = new MockIDEFacade() {
      @Override
      public void invokeSendMessage(User[] availableUsers, User[] defaultRecipients, String message1, SendMessageInvoker runOnOK) {
        runOnOK.doSendMessage(users, message);
      }
    };
    myCommand = new SendMessageCommand(myUserModel, myMockUserListComponent, ideFacade);

    myCommand.execute();
  }

}
TOP

Related Classes of jetbrains.communicator.commands.SendMessageCommandTest

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.