package fi.otavanopisto.muikku.ui.base.communicator;
import static fi.otavanopisto.muikku.mock.PyramusMock.mocker;
import static org.junit.Assert.assertTrue;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import org.junit.Test;
import fi.otavanopisto.muikku.TestUtilities;
import fi.otavanopisto.muikku.mock.PyramusMock.Builder;
import fi.otavanopisto.muikku.mock.model.MockStaffMember;
import fi.otavanopisto.muikku.mock.model.MockStudent;
import fi.otavanopisto.muikku.ui.AbstractUITest;
import fi.otavanopisto.pyramus.rest.model.Sex;
import fi.otavanopisto.pyramus.rest.model.UserRole;
public class CommunicatorTestsBase extends AbstractUITest {
@Test
public void communicatorSendMessageTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
try{
try{
login();
navigate("/communicator", true);
waitAndClick(".mf-primary-function .mf-primary-function-content");
waitForPresent("#recipientContent");
sendKeys("#recipientContent", "Test");
waitAndClick(".ui-autocomplete li.ui-menu-item");
waitForPresent(".mf-textfield-subject");
sendKeys(".mf-textfield-subject", "Test");
waitAndClick("#cke_1_contents");
addTextToCKEditor("Communicator test");
waitAndClick("*[name='send']");
waitForPresent(".mf-content-master");
getWebDriver().get("about:blank");
navigate("/communicator#sent", true);
waitForPresent(".cm-message-header-content-secondary");
assertText(".cm-message-header-content-secondary", "Test");
}finally{
deleteCommunicatorMessages();
}
}finally {
mockBuilder.wiremockReset();
}
}
@Test
public void communicatorSentMessagesTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
try{
try{
login();
navigate("/communicator", true);
waitAndClick(".mf-primary-function .mf-primary-function-content");
waitForPresent("#recipientContent");
sendKeys("#recipientContent", "Test");
waitAndClick(".ui-autocomplete li.ui-menu-item");
waitForPresent(".mf-textfield-subject");
sendKeys(".mf-textfield-subject", "Test");
waitAndClick("#cke_1_contents");
addTextToCKEditor("Communicator test");
waitAndClick("*[name='send']");
waitForPresent(".mf-content-master");
getWebDriver().get("about:blank");
navigate("/communicator#sent", true);
waitForPresent(".cm-message-header-content-secondary");
assertText(".cm-message-header-content-secondary", "Test");
}finally{
deleteCommunicatorMessages();
}
}finally {
mockBuilder.wiremockReset();
}
}
@Test
public void communicatorPagingTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try{
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
try{
long sender = getUserIdByEmail("admin@example.com");
long recipient = getUserIdByEmail("student@example.com");
for(int i = 0; i < 30; i++)
createCommunicatorMesssage("Test " + i, "Test content " + i, sender, recipient);
logout();
mockBuilder.mockLogin(student).build();
login();
navigate("/communicator", true);
waitScrollAndClick(".cm-page-link-load-more");
assertTrue(String.format("Elements list is not greater than %d in size", 10), waitForMoreThanSize("div.cm-message-header-content-secondary", 10));
}finally{
deleteCommunicatorMessages();
}
}finally {
mockBuilder.wiremockReset();
}
}
@Test
public void communicatorReadMessageTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try{
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
try{
long sender = getUserIdByEmail("admin@example.com");
long recipient = getUserIdByEmail("student@example.com");
createCommunicatorMesssage("Test caption", "Test content.", sender, recipient);
logout();
mockBuilder.mockLogin(student).build();
login();
navigate("/communicator", true);
waitAndClick("div.cm-message-header-content-secondary");
waitForPresent(".cm-message-content-text");
assertText("div.cm-message-content-text", "Test content.");
}finally{
deleteCommunicatorMessages();
}
}finally {
mockBuilder.wiremockReset();
}
}
@Test
public void communicatorDeleteInboxMessageTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try{
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
try{
long sender = getUserIdByEmail("admin@example.com");
long recipient = getUserIdByEmail("student@example.com");
createCommunicatorMesssage("Test caption", "Test content.", sender, recipient);
logout();
mockBuilder.mockLogin(student).build();
login();
navigate("/communicator", true);
waitAndClick("div.cm-message-select input[type=\"checkbox\"]");
waitAndClick(".icon-delete");
// waitForPresentVisible(".notification-queue-item-success");
waitForPresent(".cm-messages-container");
assertTrue("Element found even though it shouldn't be there", isElementPresent("div.mf-item-select input[type=\"checkbox\"]") == false);
}finally{
deleteCommunicatorMessages();
}
}finally {
mockBuilder.wiremockReset();
}
}
@Test
public void communicatorDeleteSentMessageTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try{
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
try{
long sender = getUserIdByEmail("admin@example.com");
long recipient = getUserIdByEmail("student@example.com");
createCommunicatorMesssage("Test caption", "Test content.", sender, recipient);
navigate("/communicator#sent", true);
waitForPresent(".cm-message-select input[name=\"messageSelect\"]");
click(".cm-message-select input[name=\"messageSelect\"]");
waitForPresent(".icon-delete");
click(".icon-delete");
waitForPresent(".cm-messages-container");
waitForPresent(".content");
String currentUrl = getWebDriver().getCurrentUrl();
assertTrue("Communicator does not stay in sent messages box.", currentUrl.equals("https://dev.muikku.fi:" + getPortHttps() + "/communicator#sent"));
assertTrue("Element found even though it shouldn't be there", isElementPresent("div.cm-message-select input[type=\"checkbox\"]") == false);
}finally{
deleteCommunicatorMessages();
}
}finally {
mockBuilder.wiremockReset();
}
}
@Test
public void communicatorCreateLabelTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
Builder mockBuilder = mocker();
mockBuilder.addStaffMember(admin).mockLogin(admin).build();
try{
try{
login();
navigate("/communicator", true);
waitAndClick(".mf-tool-container .cm-add-label-menu");
waitForPresent("#communicatorNewlabelField");
sendKeys("#communicatorNewlabelField", "Test");
waitAndClick("#newLabelSubmit");
waitForPresent(".mf-label-name a span");
assertText(".mf-label-name a span", "Test");
}finally{
deleteCommunicatorUserLabels(admin.getId());
}
}finally {
mockBuilder.wiremockReset();
}
}
@Test
public void communicatorAddLabelTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try{
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
try{
long recipient = getUserIdByEmail("admin@example.com");
long sender = getUserIdByEmail("student@example.com");
createCommunicatorMesssage("Test caption", "Test content.", sender, recipient);
createCommunicatorUserLabel(admin.getId(), "test");
navigate("/communicator#inbox", true);
waitAndClick("input[name=\"messageSelect\"]");
waitAndClick(".mf-tool-container .cm-add-label-menu");
waitAndClick(".cm-label-link-name");
reloadCurrentPage();
waitForPresent(".cm-message-header-content-primary");
assertText(".cm-message-header-content-secondary .cm-message-label span", "test");
waitAndClick(".cm-folder .cm-label-name");
waitForPresent(".cm-message-header-container");
assertText(".cm-message-header-container .cm-message-caption", "Test captiontest");
}finally{
deleteCommunicatorUserLabels(admin.getId());
deleteCommunicatorMessages();
}
}finally {
mockBuilder.wiremockReset();
}
}
@Test
public void communicatorEditLabelTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try{
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
try{
long recipient = getUserIdByEmail("admin@example.com");
long sender = getUserIdByEmail("student@example.com");
createCommunicatorMesssage("Test caption", "Test content.", sender, recipient);
createCommunicatorUserLabel(admin.getId(), "test");
navigate("/communicator#inbox", true);
waitAndClick(".mf-label-functions");
waitAndClick(".mf-label-function-edit");
waitForPresent(".mf-label-edit-dialog input[name=\"name\"]");
clearElement(".mf-label-edit-dialog input[name=\"name\"]");
waitAndSendKeys(".mf-label-edit-dialog input[name=\"name\"]", "edited");
waitAndClick(".save-button span");
assertText(".cm-folder .cm-label-name a span", "edited");
}finally{
deleteCommunicatorUserLabels(admin.getId());
deleteCommunicatorMessages();
}
}finally {
mockBuilder.wiremockReset();
}
}
@Test
public void communicatorDeleteLabelTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try{
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
try{
long recipient = getUserIdByEmail("admin@example.com");
long sender = getUserIdByEmail("student@example.com");
createCommunicatorMesssage("Test caption", "Test content.", sender, recipient);
createCommunicatorUserLabel(admin.getId(), "test");
navigate("/communicator#inbox", true);
waitAndClick(".mf-label-functions");
waitAndClick(".mf-label-function-delete");
waitAndClick(".save-button span");
assertGoesAway(".cm-folder .cm-label-name a span", 5l);
}finally{
deleteCommunicatorUserLabels(admin.getId());
deleteCommunicatorMessages();
}
}finally {
mockBuilder.wiremockReset();
}
}
@Test
public void communicatorMoveToTrashTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try{
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
try{
long recipient = getUserIdByEmail("admin@example.com");
long sender = getUserIdByEmail("student@example.com");
createCommunicatorMesssage("Test caption", "Test content.", sender, recipient);
navigate("/communicator#inbox", true);
waitAndClick("input[name=\"messageSelect\"]");
waitAndClick(".icon-delete");
assertGoesAway(".cm-message .cm-message-caption", 10l);
waitAndClick("a[href$=\"trash\"]");
waitForPresent(".cm-message-header-container .cm-message-caption");
assertText(".cm-message-header-container .cm-message-caption", "Test caption");
}finally{
deleteCommunicatorMessages();
}
}finally {
mockBuilder.wiremockReset();
}
}
}