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