/*
*
* 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.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.agiletec.plugins.jpwebdynamicform.apsadmin.ApsAdminPluginBaseTestCase;
import com.agiletec.aps.util.DateConverter;
import com.agiletec.apsadmin.system.entity.IApsEntityFinderAction;
import com.agiletec.plugins.jpwebdynamicform.aps.system.services.message.model.Answer;
import com.agiletec.plugins.jpwebdynamicform.aps.system.services.message.model.Message;
import com.opensymphony.xwork2.Action;
public class TestMessageFinderAction extends ApsAdminPluginBaseTestCase {
public void testList() throws Throwable {
String username = "admin";
String result = this.executeList(username, "PER");
assertEquals(Action.SUCCESS, result);
List<String> messageIds = ((IApsEntityFinderAction) this.getAction()).getSearchResult();
assertEquals(0, messageIds.size());
Date currentDate = new Date();
Message message1 = this._helper.createMessage(null, "mainEditor", "it", currentDate, "MyName", "MySurname", "MyAddress", "MyEmail1@aaaaaaaaaaaa.ittt", "MyNotes");
this._helper.addMessage(message1);
Message message2 = this._helper.createMessage(null, "admin", "it", currentDate, "MyCompany2", "MyAddress2", "MyEmail2@aaaaaaaaaaaa.ittt", "MyNotes");
this._helper.addMessage(message2);
Message message3 = this._helper.createMessage(null, "mainEditor", "it", currentDate, "MyCompany3", "MyAddress3", "MyEmail3@aaaaaaaaaaaa.ittt", "MyNotes");
this._helper.addMessage(message3);
Message message4 = this._helper.createMessage(null, null, "it", currentDate, "MyCompany4", "MyAddress4", "MyEmail4@aaaaaaaaaaaa.ittt", "MyNotes");
this._helper.addMessage(message4);
result = this.executeList(username, "PER");
assertEquals(Action.SUCCESS, result);
messageIds = ((IApsEntityFinderAction) this.getAction()).getSearchResult();
this.checkMessageIds(messageIds, new String[] { message1.getId() });
result = this.executeList(username, "COM");
assertEquals(Action.SUCCESS, result);
messageIds = ((IApsEntityFinderAction) this.getAction()).getSearchResult();
this.checkMessageIds(messageIds, new String[] { message2.getId(), message3.getId(), message4.getId() });
}
public void testSearch() throws Throwable {
String username = "admin";
Date today = new Date();
Date yesterday = new Date(today.getTime()-86400000);
Date tomorrow = new Date(today.getTime()+86400000);
Message message1 = this._helper.createMessage(null, "mainEditor", "it", today, "MyName", "MySurname", "MyAddress", "MyEmail1@aaaaaaaaaaaa.ittt", "MyNotes");
this._helper.addMessage(message1);
Message message2 = this._helper.createMessage(null, "admin", "it", yesterday, "MyCompany2", "MyAddress2", "MyEmail2@aaaaaaaaaaaa.ittt", "MyNotes");
this._helper.addMessage(message2);
Message message3 = this._helper.createMessage(null, "mainEditor", "it", today, "MyCompany3", "MyAddress3", "MyEmail3@aaaaaaaaaaaa.ittt", "MyNotes");
this._helper.addMessage(message3);
Message message4 = this._helper.createMessage(null, null, "it", tomorrow, "MyCompany4", "MyAddress4", "MyEmail4@aaaaaaaaaaaa.ittt", "MyNotes");
this._helper.addMessage(message4);
Answer answer = this._helper.createAnswer("1", message4.getId(), "mainEditor", new Date(), "text1");
this._helper.addAnswer(answer);
Map<String, String> params = new HashMap<String, String>();
params.put("entityTypeCode", "PER");
String result = this.executeSearch(username, params);
assertEquals(Action.SUCCESS, result);
List<String> messageIds = ((IApsEntityFinderAction) this.getAction()).getSearchResult();
this.checkMessageIds(messageIds, new String[] { message1.getId() });
params.put("entityTypeCode", "COM");
result = this.executeSearch(username, params);
assertEquals(Action.SUCCESS, result);
messageIds = ((IApsEntityFinderAction) this.getAction()).getSearchResult();
this.checkMessageIds(messageIds, new String[] { message2.getId(), message3.getId(), message4.getId() });
params.put("from", DateConverter.getFormattedDate(today, "dd/MM/yyyy"));
result = this.executeSearch(username, params);
assertEquals(Action.SUCCESS, result);
messageIds = ((IApsEntityFinderAction) this.getAction()).getSearchResult();
this.checkMessageIds(messageIds, new String[] { message3.getId(), message4.getId() });
params.put("to", DateConverter.getFormattedDate(yesterday, "dd/MM/yyyy"));
result = this.executeSearch(username, params);
assertEquals(Action.SUCCESS, result);
messageIds = ((IApsEntityFinderAction) this.getAction()).getSearchResult();
this.checkMessageIds(messageIds, new String[] { });
params.put("from", DateConverter.getFormattedDate(yesterday, "dd/MM/yyyy"));
params.put("to", DateConverter.getFormattedDate(today, "dd/MM/yyyy"));
result = this.executeSearch(username, params);
assertEquals(Action.SUCCESS, result);
messageIds = ((IApsEntityFinderAction) this.getAction()).getSearchResult();
this.checkMessageIds(messageIds, new String[] { message2.getId(), message3.getId() });
params.put("to", DateConverter.getFormattedDate(tomorrow, "dd/MM/yyyy"));
result = this.executeSearch(username, params);
assertEquals(Action.SUCCESS, result);
messageIds = ((IApsEntityFinderAction) this.getAction()).getSearchResult();
this.checkMessageIds(messageIds, new String[] { message2.getId(), message3.getId(), message4.getId() });
params.put("answered", "1");
result = this.executeSearch(username, params);
assertEquals(Action.SUCCESS, result);
messageIds = ((IApsEntityFinderAction) this.getAction()).getSearchResult();
this.checkMessageIds(messageIds, new String[] { message4.getId() });
params.put("answered", "0");
result = this.executeSearch(username, params);
assertEquals(Action.SUCCESS, result);
messageIds = ((IApsEntityFinderAction) this.getAction()).getSearchResult();
this.checkMessageIds(messageIds, new String[] { message2.getId(), message3.getId() });
params.put("author", "mainEditor");
result = this.executeSearch(username, params);
assertEquals(Action.SUCCESS, result);
messageIds = ((IApsEntityFinderAction) this.getAction()).getSearchResult();
this.checkMessageIds(messageIds, new String[] { message3.getId() });
}
private void checkMessageIds(List<String> received, String[] expected) {
assertEquals(expected.length, received.size());
for (int i=0; i<expected.length; i++) {
assertTrue(received.contains(expected[i]));
}
}
private String executeList(String username, String typeCode) throws Throwable {
this.setUserOnSession(username);
this.initAction("/do/jpwebdynamicform/Message/Operator", "list");
this.addParameter("entityTypeCode", typeCode);
String result = this.executeAction();
return result;
}
private String executeSearch(String username, Map<String, String> params) throws Throwable {
this.setUserOnSession(username);
this.initAction("/do/jpwebdynamicform/Message/Operator", "search");
this.addParameters(params);
String result = this.executeAction();
return result;
}
}