Package com.agiletec.plugins.jpwebdynamicform.apsadmin.message

Source Code of com.agiletec.plugins.jpwebdynamicform.apsadmin.message.TestOperatorMessageAction

/*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
* This file is part of Entando Enterprise Edition software.
* You can redistribute it and/or modify it
* under the terms of the Entando's EULA
*
* See the file License for the specific language governing permissions  
* and limitations under the License
*
*
*
* Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved.
*
*/
package com.agiletec.plugins.jpwebdynamicform.apsadmin.message;

import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.agiletec.plugins.jpwebdynamicform.apsadmin.ApsAdminPluginBaseTestCase;
import com.agiletec.plugins.jpwebdynamicform.util.JpwebdynamicformTestHelper;

import com.agiletec.aps.util.DateConverter;
import com.agiletec.plugins.jpmail.aps.services.JpmailSystemConstants;
import com.agiletec.plugins.jpmail.aps.services.mail.IMailManager;
import com.agiletec.plugins.jpmail.aps.services.mail.MailManager;
import com.agiletec.plugins.jpwebdynamicform.aps.system.services.message.model.Answer;
import com.agiletec.plugins.jpwebdynamicform.aps.system.services.message.model.Message;
import com.agiletec.plugins.jpwebdynamicform.apsadmin.message.common.AbstractMessageAction;
import com.opensymphony.xwork2.Action;

public class TestOperatorMessageAction extends ApsAdminPluginBaseTestCase {
 
  @Override
  protected void setUp() throws Exception {
    super.setUp();
    this.activeMailManager(false);
  }
 
  public void testView() throws Throwable {
    String result = this.executeView("admin", "PER", "1");
    assertEquals("messageNotFound", result);

    Message message = this._helper.createMessage(null, "mainEditor", "it", new Date(), "MyName", "MySurname", "MyAddress", JpwebdynamicformTestHelper.EMAIL, "MyNotes");
    this._helper.addMessage(message);
    String messageId = message.getId();
    Answer answer1 = this._helper.createAnswer("1", messageId, "mainEditor", new Date(), "text1");
    this._helper.addAnswer(answer1);
    Answer answer2 = this._helper.createAnswer("2", messageId, "mainEditor", new Date(), "text2");
    this._helper.addAnswer(answer2);
    result = this.executeView("admin", "PER", messageId);
    assertEquals(Action.SUCCESS, result);
    AbstractMessageAction action = (AbstractMessageAction) this.getAction();
    Message receivedMessage = action.getMessage();
    this.compareMessages(message, receivedMessage);
    List<Answer> answers = action.getAnswers();
    assertEquals(2, answers.size());

    for (Answer answer : answers) {
      if (answer.getAnswerId().equals(answer1.getAnswerId())) {
        this.compareAnswer(answer1, answer);
      } else {
        this.compareAnswer(answer2, answer);
      }
    }
  }

  public void testNewAnswer() throws Throwable {
    String result = this.executeNewAnswer("admin", "PER", "1");
    assertEquals("messageNotFound", result);

    Message message1 = this._helper.createMessage(null, "mainEditor", "it", new Date(), "MyName1", "MySurname1", "MyAddress1", "", "MyNotes1");
    this._helper.addMessage(message1);
    Message message2 = this._helper.createMessage(null, "mainEditor", "it", new Date(), "MyName2", "MySurname2", "MyAddress2", JpwebdynamicformTestHelper.EMAIL, "MyNotes2");
    this._helper.addMessage(message2);

    String messageId = message1.getId();
    result = this.executeNewAnswer("admin", "PER", messageId);
    assertEquals(Action.INPUT, result);
    Collection<String> actionErrors = this.getAction().getActionErrors();
    assertEquals(1, actionErrors.size());
    assertTrue(((String) actionErrors.toArray()[0]).contains(this.getAction().getText("Message.eMailAddress.notFound")));

    messageId = message2.getId();
    result = this.executeNewAnswer("admin", "PER", messageId);
    assertEquals(Action.SUCCESS, result);
  }

  public void testSendAnswerFailure() throws Throwable {
    Message message1 = this._helper.createMessage(null, "mainEditor", "it", new Date(), "MyName1", "MySurname1", "MyAddress1", "", "MyNotes1");
    this._helper.addMessage(message1);
    Message message2 = this._helper.createMessage(null, "mainEditor", "it", new Date(), "MyName2", "MySurname2", "MyAddress2", JpwebdynamicformTestHelper.EMAIL, "MyNotes2");
    this._helper.addMessage(message2);

    // Message without eMail address.
    String messageId = message1.getId();
    Map<String, String> params = new HashMap<String, String>();
    params.put("id", messageId);
    params.put("text", "Text of answer");
    String result = this.executeSendAnswer("admin", params);
    assertEquals("messageNotFound", result);

    // Incomplete fields
    messageId = message2.getId(); // Message with eMail address.
    params.put("id", messageId);
    params.put("text", "");
    result = this.executeSendAnswer("admin", params);
    assertEquals(Action.INPUT, result);
    Map<String, List<String>> fieldErrors = this.getAction().getFieldErrors();
    assertEquals(1, fieldErrors.size());
    List<String> currentFielderrors = fieldErrors.get("text");
    assertEquals(1, currentFielderrors.size());
    assertTrue(((String) currentFielderrors.get(0)).contains(this.getAction().getText("requiredstring")));
  }

  public void testSendAnswer() throws Throwable {
    Message message1 = this._helper.createMessage(null, "mainEditor", "it", new Date(), "MyName1", "MySurname1", "MyAddress1", "", "MyNotes1");
    this._helper.addMessage(message1);
    Message message2 = this._helper.createMessage(null, "mainEditor", "it", new Date(), "MyName2", "MySurname2", "MyAddress2", JpwebdynamicformTestHelper.EMAIL, "MyNotes2");
    this._helper.addMessage(message2);

    String messageId = message2.getId(); // Message with eMail address.
    Map<String, String> params = new HashMap<String, String>();
    params.put("id", messageId);
    params.put("text", "Text of answer");
    String result = this.executeSendAnswer("admin", params);
    assertEquals(Action.SUCCESS, result);
    List<Answer> addedAnswers = this._messageManager.getAnswers(messageId);
    assertEquals(1, addedAnswers.size());
    Answer answer = addedAnswers.get(0);
    assertEquals(messageId, answer.getMessageId());
    assertEquals("admin", answer.getOperator());
    assertEquals("Text of answer", answer.getText());
    assertNotNull(answer.getAnswerId());
    assertNotNull(answer.getSendDate());
  }

  public void testTrash() throws Throwable {
    Message message = this._helper.createMessage(null, "mainEditor", "it", new Date(), "MyName", "MySurname", "MyAddress", JpwebdynamicformTestHelper.EMAIL, "MyNotes");
    this._helper.addMessage(message);
    String messageId = message.getId();
    assertNotNull(this._messageManager.getMessage(messageId));
    Answer answer1 = this._helper.createAnswer("1", messageId, "mainEditor", new Date(), "text1");
    this._helper.addAnswer(answer1);

    String result = this.executeTrash("admin", messageId+"unknow");
    assertEquals("messageNotFound", result);

    result = this.executeTrash("admin", messageId);
    assertEquals(Action.SUCCESS, result);
    assertNotNull(this._messageManager.getMessage(messageId));
  }

  public void testDelete() throws Throwable {
    Message message = this._helper.createMessage(null, "mainEditor", "it", new Date(), "MyName", "MySurname", "MyAddress", JpwebdynamicformTestHelper.EMAIL, "MyNotes");
    this._helper.addMessage(message);
    String messageId = message.getId();
    assertNotNull(this._messageManager.getMessage(messageId));
    Answer answer1 = this._helper.createAnswer("1", messageId, "mainEditor", new Date(), "text1");
    this._helper.addAnswer(answer1);

    String result = this.executeDelete("admin", messageId+"unknow");
    assertEquals("messageNotFound", result);

    result = this.executeDelete("admin", messageId);
    assertEquals(Action.SUCCESS, result);
    assertNull(this._messageManager.getMessage(messageId));
  }

  private void compareMessages(Message expected, Message received) {
    assertEquals(expected.getId(), received.getId());
    assertEquals(expected.getDescr(), received.getDescr());
    assertEquals(expected.getTypeCode(), received.getTypeCode());
    assertEquals(expected.getTypeDescr(), received.getTypeDescr());
    assertEquals(expected.getXML(), received.getXML());
    assertEquals(expected.getUsername(), received.getUsername());
    assertEquals(DateConverter.getFormattedDate(expected.getCreationDate(), "dd/MM/yyyy hh:mm:ss"),
        DateConverter.getFormattedDate(received.getCreationDate(), "dd/MM/yyyy hh:mm:ss"));
  }

  private void compareAnswer(Answer expected, Answer received) {
    assertEquals(expected.getAnswerId(), received.getAnswerId());
    assertEquals(expected.getMessageId(), received.getMessageId());
    assertEquals(expected.getOperator(), received.getOperator());
    assertEquals(DateConverter.getFormattedDate(expected.getSendDate(), "dd/MM/yyyy hh:mm:ss"),
        DateConverter.getFormattedDate(received.getSendDate(), "dd/MM/yyyy hh:mm:ss"));
    assertEquals(expected.getText(), received.getText());
  }

  private String executeView(String username, String typeCode, String id) throws Throwable {
    this.setUserOnSession(username);
    this.initAction("/do/jpwebdynamicform/Message/Operator", "view");
    this.addParameter("typeCode", typeCode);
    this.addParameter("id", id);
    return this.executeAction();
  }

  private String executeNewAnswer(String username, String typeCode, String id) throws Throwable {
    this.setUserOnSession(username);
    this.initAction("/do/jpwebdynamicform/Message/Operator", "newAnswer");
    this.addParameter("typeCode", typeCode);
    this.addParameter("id", id);
    return this.executeAction();
  }

  private String executeTrash(String username, String id) throws Throwable {
    this.setUserOnSession(username);
    this.initAction("/do/jpwebdynamicform/Message/Operator", "trash");
    this.addParameter("id", id);
    return this.executeAction();
  }

  private String executeDelete(String username, String id) throws Throwable {
    this.setUserOnSession(username);
    this.initAction("/do/jpwebdynamicform/Message/Operator", "delete");
    this.addParameter("id", id);
    return this.executeAction();
  }

  private String executeSendAnswer(String username, Map<String, String> params) throws Throwable {
    this.setUserOnSession(username);
    this.initAction("/do/jpwebdynamicform/Message/Operator", "sendAnswer");
    this.addParameters(params);
    return this.executeAction();
  }
 
  @Override
  protected void tearDown() throws Exception {
    this.activeMailManager(true);
    super.tearDown();
  }
 
  private void activeMailManager(boolean active) {
    IMailManager mailManager = (IMailManager) this.getService(JpmailSystemConstants.MAIL_MANAGER);
    if (mailManager instanceof MailManager) {
      ((MailManager) mailManager).setActive(active);
    }
  }

}
TOP

Related Classes of com.agiletec.plugins.jpwebdynamicform.apsadmin.message.TestOperatorMessageAction

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.