/*
* Copyright 2015-Present Entando Inc. (http://www.entando.com) All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package com.agiletec.plugins.jpwebdynamicform.aps.system.services.message;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.agiletec.plugins.jpwebdynamicform.aps.ApsPluginBaseTestCase;
import com.agiletec.plugins.jpwebdynamicform.util.JpwebdynamicformTestHelper;
import com.agiletec.aps.system.common.entity.IEntityManager;
import com.agiletec.aps.system.common.entity.model.EntitySearchFilter;
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.aps.system.services.message.model.SmallMessageType;
public class TestMessageManager extends ApsPluginBaseTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
this.activeMailManager(false);
}
public void testCreateMessageType() {
Message message = this._messageManager.createMessageType("PER");
Collection<String> attributes = message.getAttributeMap().keySet();
assertEquals(5, attributes.size());
assertTrue(attributes.contains("Name"));
assertTrue(attributes.contains("Surname"));
assertTrue(attributes.contains("Address"));
assertTrue(attributes.contains("eMail"));
assertTrue(attributes.contains("Note"));
message = this._messageManager.createMessageType("COM");
attributes = message.getAttributeMap().keySet();
assertEquals(4, attributes.size());
assertTrue(attributes.contains("Company"));
assertTrue(attributes.contains("Address"));
assertTrue(attributes.contains("eMail"));
assertTrue(attributes.contains("Note"));
message = this._messageManager.createMessageType("ART");
assertNull(message);
}
public void testGetSmallMessageTypes() {
List<SmallMessageType> smallMessageTypes = this._messageManager.getSmallMessageTypes();
assertEquals(2, smallMessageTypes.size());
for (SmallMessageType smallMessageType : smallMessageTypes) {
String typeCode = smallMessageType.getCode();
assertTrue(typeCode.equals("PER") || typeCode.equals("COM"));
}
}
public void testGetSmallMessageTypesMap() {
Map<String, SmallMessageType> smallMessageTypes = this._messageManager.getSmallMessageTypesMap();
assertEquals(2, smallMessageTypes.size());
assertTrue(smallMessageTypes.containsKey("PER"));
assertTrue(smallMessageTypes.containsKey("COM"));
}
public void testLoadMessagesId() throws Throwable {
List<String> messageIds = this._messageManager.loadMessagesId(null);
assertEquals(0, messageIds.size());
Date currentDate = new Date();
Message message1 = this._helper.createMessage(null, "admin", "it", currentDate, "MyName", "MySurname", "MyAddress", JpwebdynamicformTestHelper.EMAIL, "MyNotes");
this._helper.addMessage(message1);
messageIds = this._messageManager.loadMessagesId(null);
assertEquals(1, messageIds.size());
Message message2 = this._helper.createMessage(null, "admin", "it", currentDate, "MyCompany", "MyAddress", JpwebdynamicformTestHelper.EMAIL, "MyNotes");
this._helper.addMessage(message2);
messageIds = this._messageManager.loadMessagesId(null);
assertEquals(2, messageIds.size());
EntitySearchFilter filter = new EntitySearchFilter(IEntityManager.ENTITY_TYPE_CODE_FILTER_KEY, false, "PER", true);
messageIds = this._messageManager.loadMessagesId(new EntitySearchFilter[] { filter });
assertEquals(1, messageIds.size());
assertTrue(messageIds.contains(message1.getId()));
}
public void testAddGetMessage() throws Throwable {
Date currentDate = new Date();
Message message1 = this._helper.createMessage(null, "admin", "it", currentDate, "MyName", "MySurname", "MyAddress", JpwebdynamicformTestHelper.EMAIL, "MyNotes");
this._messageManager.addMessage(message1);
Message addedMessage = this._messageManager.getMessage(message1.getId());
this.compareMessages(message1, addedMessage);
// store = false
Message message2 = this._helper.createMessage("id", "admin", "it", currentDate, "MyCompany", "MyAddress", JpwebdynamicformTestHelper.EMAIL, "MyNotes");
this._messageManager.addMessage(message2);
assertNull(this._messageManager.getMessage(message2.getId()));
assertEquals(1, this._messageManager.loadMessagesId(null).size());
}
public void testDeleteMessage() throws Throwable {
Message message = this._helper.createMessage(null, null, "it", new Date(), "company", "address", JpwebdynamicformTestHelper.EMAIL, "note");
this._helper.addMessage(message);
String messageId = message.getId();
assertNotNull(this._messageManager.getMessage(messageId));
Answer answer1 = this._helper.createAnswer(null, messageId, "admin", new Date(), "text1");
this._helper.addAnswer(answer1);
Answer answer2 = this._helper.createAnswer(null, messageId, "admin", new Date(), "text2");
this._helper.addAnswer(answer2);
List<Answer> answers = this._messageManager.getAnswers(messageId);
assertEquals(2, answers.size());
this._messageManager.deleteMessage(messageId);
assertNull(this._messageManager.getMessage(messageId));
answers = this._messageManager.getAnswers(messageId);
assertEquals(0, answers.size());
}
public void testAddGetAnswer() throws Throwable {
Message message = this._helper.createMessage(null, "admin", "it", new Date(), "company", "address", "indirizzoemail@dominioinesistente.it", "note");
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._messageManager.sendAnswer(answer1);
Answer answer2 = this._helper.createAnswer("2", messageId, "mainEditor", new Date(), "text2");
this._messageManager.sendAnswer(answer2);
List<Answer> answers = this._messageManager.getAnswers(messageId);
assertEquals(2, answers.size());
for (Answer answer : answers) {
if (answer.getAnswerId().equals(answer1.getAnswerId())) {
this.compareAnswer(answer1, answer);
} else {
this.compareAnswer(answer2, answer);
}
}
}
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());
}
@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);
}
}
}