package fi.otavanopisto.muikku.ui.base.flags;
import static fi.otavanopisto.muikku.mock.PyramusMock.mocker;
import static org.junit.Assert.assertEquals;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import org.junit.Test;
import fi.otavanopisto.muikku.TestUtilities;
import fi.otavanopisto.muikku.atests.Workspace;
import fi.otavanopisto.muikku.mock.PyramusMock.Builder;
import fi.otavanopisto.muikku.mock.model.MockCourseStudent;
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 FlagTestsBase extends AbstractUITest {
@Test
public void createNewFlagTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "Person", UserRole.ADMINISTRATOR, "090978-1234", "testadmin@example.com", Sex.MALE);
MockStudent student = new MockStudent(3l, 3l, "Second", "User", "teststudent@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());
MockStudent student2 = new MockStudent(4l, 4l, "Thirdester", "User", "testsostudent@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "030584-5656", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
mockBuilder.addStaffMember(admin).addStudent(student).addStudent(student2).mockLogin(admin).build();
login();
Workspace workspace = createWorkspace("testscourse", "test course for testing", "3", Boolean.TRUE);
Workspace workspace2 = createWorkspace("diffentscourse", "Second test course", "4", Boolean.TRUE);
MockCourseStudent mcs = new MockCourseStudent(3l, workspace.getId(), student.getId());
MockCourseStudent mcs2 = new MockCourseStudent(4l, workspace.getId(), student2.getId());
mockBuilder.
addCourseStudent(workspace.getId(), mcs).
addCourseStudent(workspace.getId(), mcs2).
build();
long flagId = 0;
long studentFlagId = 0;
try {
navigate("/guider", true);
waitForPresentAndVisible("div.gt-user");
click("div.gt-user .gt-user-name .gt-user-meta-topic>span");
waitForPresentAndVisible("div.gt-user .mf-item-tool-btn");
click("div.gt-user .mf-item-tool-btn");
hoverOverElement(".gt-add-flag-widget-label");
waitForPresentAndVisible(".gt-new-flag");
click(".gt-new-flag");
waitForPresent("input#guider-add-flag-dialog-color");
setAttributeBySelector("input[type=\"color\"]", "value", "#009900");
waitAndSendKeys("#guider-add-flag-dialog-name", "Test flag");
waitForPresentAndVisible(".guider-add-flag-dialog .ui-dialog-buttonset .create-button");
click(".guider-add-flag-dialog .ui-dialog-buttonset .create-button");
waitForPresent(".gt-flag>span.gt-flag-label");
reloadCurrentPage();
waitForPresent("div[data-flag-id]");
flagId = Long.parseLong(getAttributeValue("div.gt-flag", "data-flag-id"));
waitForPresent("div[data-id]");
studentFlagId = Long.parseLong(getAttributeValue("div.gt-flag", "data-id"));
waitForPresent(".gt-flag>span.gt-flag-label");
assertTextIgnoreCase(".gt-flag>span.gt-flag-label", "Test flag");
} finally {
deleteStudentFlag(studentFlagId);
deleteFlag(flagId);
deleteWorkspace(workspace.getId());
deleteWorkspace(workspace2.getId());
}
}
@Test
public void filterByFlagTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "Person", UserRole.ADMINISTRATOR, "090978-1234", "testadmin@example.com", Sex.MALE);
MockStudent student = new MockStudent(3l, 3l, "Second", "User", "teststudent@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());
MockStudent student2 = new MockStudent(4l, 4l, "Thirdester", "User", "testsostudent@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "030584-5656", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
mockBuilder.addStaffMember(admin).addStudent(student).addStudent(student2).mockLogin(admin).build();
login();
Workspace workspace = createWorkspace("testscourse", "test course for testing", "3", Boolean.TRUE);
Workspace workspace2 = createWorkspace("diffentscourse", "Second test course", "4", Boolean.TRUE);
MockCourseStudent mcs = new MockCourseStudent(3l, workspace.getId(), student.getId());
MockCourseStudent mcs2 = new MockCourseStudent(4l, workspace.getId(), student2.getId());
mockBuilder.
addCourseStudent(workspace.getId(), mcs).
addCourseStudent(workspace.getId(), mcs2).
build();
Long flagId = createFlag("Test Flaggi", "#990000", "Fishing flags");
Long studentFlagId = flagStudent(student.getId(), flagId);
try {
navigate("/guider", true);
waitForPresentAndVisible("div.gt-user");
waitForPresentAndVisible(".gt-filters a.gt-filter-link");
click(".gt-filters a.gt-filter-link");
waitForPresent("div.gt-user .gt-user-name .gt-user-meta-topic>span");
assertTextIgnoreCase("div.gt-user .gt-user-name .gt-user-meta-topic>span", "Thirdester User (Test Study Programme)");
} finally {
deleteWorkspace(workspace.getId());
deleteWorkspace(workspace2.getId());
deleteStudentFlag(studentFlagId);
deleteFlag(flagId);
}
}
@Test
public void editFlagTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "Person", UserRole.ADMINISTRATOR, "090978-1234", "testadmin@example.com", Sex.MALE);
MockStudent student = new MockStudent(3l, 3l, "Second", "User", "teststudent@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());
MockStudent student2 = new MockStudent(4l, 4l, "Thirdester", "User", "testsostudent@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "030584-5656", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
mockBuilder.addStaffMember(admin).addStudent(student).addStudent(student2).mockLogin(admin).build();
login();
Workspace workspace = createWorkspace("testscourse", "test course for testing", "3", Boolean.TRUE);
Workspace workspace2 = createWorkspace("diffentscourse", "Second test course", "4", Boolean.TRUE);
MockCourseStudent mcs = new MockCourseStudent(3l, workspace.getId(), student.getId());
MockCourseStudent mcs2 = new MockCourseStudent(4l, workspace.getId(), student2.getId());
mockBuilder.
addCourseStudent(workspace.getId(), mcs).
addCourseStudent(workspace.getId(), mcs2).
build();
Long flagId = createFlag("Test Flaggi", "#990000", "Fishing flags");
Long studentFlagId = flagStudent(student.getId(), flagId);
try {
navigate("/guider", true);
waitForPresentAndVisible("div.gt-user");
waitForPresentAndVisible(".gt-filters a.gt-filter-link");
click(".gt-filters a.gt-filter-link");
waitForPresent("div.gt-user .gt-user-name .gt-user-meta-topic>span");
click("div.gt-user .gt-user-name .gt-user-meta-topic>span");
waitForPresentAndVisible(".gt-tool-view-profile>span");
click(".gt-tool-view-profile>span");
waitForPresent("div.gt-flag.icon-flag");
hoverOverElement("div.gt-flag.icon-flag");
waitForPresentAndVisible(".gt-edit-flag");
click(".gt-edit-flag");
waitForPresent("input#guider-edit-flag-dialog-color");
setAttributeBySelector("input[type=\"color\"]", "value", "#009900");
clearElement("#guider-edit-flag-dialog-name");
waitAndSendKeys("#guider-edit-flag-dialog-name", "Test flag");
waitForPresent("textarea[name=\"description\"]");
clearElement("textarea[name=\"description\"]");
waitAndSendKeys("textarea[name=\"description\"]", "Sailing flags");
waitForPresentAndVisible(".ui-dialog-buttonset .save-button");
click(".ui-dialog-buttonset .save-button");
waitForPresent(".gt-flag-action-container");
reloadCurrentPage();
waitForPresent(".mf-widget.gt-user-view-flags-container .gt-flag>span.gt-flag-label");
assertTextIgnoreCase(".mf-widget.gt-user-view-flags-container .gt-flag>span.gt-flag-label", "Test Flag");
assertEquals("#009900", getAttributeValue("div.icon-flag", "data-flag-color"));
} finally {
deleteWorkspace(workspace.getId());
deleteWorkspace(workspace2.getId());
deleteStudentFlag(studentFlagId);
deleteFlag(flagId);
}
}
@Test
public void unflagTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "Person", UserRole.ADMINISTRATOR, "090978-1234", "testadmin@example.com", Sex.MALE);
MockStudent student = new MockStudent(3l, 3l, "Second", "User", "teststudent@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());
MockStudent student2 = new MockStudent(4l, 4l, "Thirdester", "User", "testsostudent@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "030584-5656", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
mockBuilder.addStaffMember(admin).addStudent(student).addStudent(student2).mockLogin(admin).build();
login();
Workspace workspace = createWorkspace("testscourse", "test course for testing", "3", Boolean.TRUE);
Workspace workspace2 = createWorkspace("diffentscourse", "Second test course", "4", Boolean.TRUE);
MockCourseStudent mcs = new MockCourseStudent(3l, workspace.getId(), student.getId());
MockCourseStudent mcs2 = new MockCourseStudent(4l, workspace.getId(), student2.getId());
mockBuilder.
addCourseStudent(workspace.getId(), mcs).
addCourseStudent(workspace.getId(), mcs2).
build();
Long flagId = createFlag("Test Flaggi", "#990000", "Fishing flags");
flagStudent(student.getId(), flagId);
try {
navigate("/guider", true);
waitForPresentAndVisible("div.gt-user");
waitForPresentAndVisible(".gt-filters a.gt-filter-link");
click(".gt-filters a.gt-filter-link");
waitForPresent("div.gt-user .gt-user-name .gt-user-meta-topic>span");
click("div.gt-user .gt-user-name .gt-user-meta-topic>span");
waitForPresentAndVisible(".gt-tool-view-profile>span");
click(".gt-tool-view-profile>span");
waitForPresent("div.gt-flag.icon-flag");
hoverOverElement("div.gt-flag.icon-flag");
waitForPresentAndVisible(".gt-remove-flag");
click(".gt-remove-flag");
waitForPresent(".gt-user-view-headline");
reloadCurrentPage();
waitForPresent(".gt-user-view-headline");
assertNotPresent(".mf-widget.gt-user-view-flags-container .gt-flag>span.gt-flag-label");
} finally {
deleteWorkspace(workspace.getId());
deleteWorkspace(workspace2.getId());
deleteFlag(flagId);
}
}
@Test
public void shareFlagTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "Person", UserRole.ADMINISTRATOR, "090978-1234", "testadmin@example.com", Sex.MALE);
MockStaffMember testPerson = new MockStaffMember(2l, 2l, "Test", "Person", UserRole.ADMINISTRATOR, "090979-5434", "testperson@example.com", Sex.MALE);
MockStudent student = new MockStudent(3l, 3l, "Second", "User", "teststudent@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());
MockStudent student2 = new MockStudent(4l, 4l, "Thirdester", "User", "testsostudent@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "030584-5656", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
mockBuilder.addStaffMember(admin).addStaffMember(testPerson).addStudent(student).addStudent(student2).mockLogin(admin).build();
login();
Workspace workspace = createWorkspace("testscourse", "test course for testing", "3", Boolean.TRUE);
Workspace workspace2 = createWorkspace("diffentscourse", "Second test course", "4", Boolean.TRUE);
MockCourseStudent mcs = new MockCourseStudent(3l, workspace.getId(), student.getId());
MockCourseStudent mcs2 = new MockCourseStudent(4l, workspace.getId(), student2.getId());
mockBuilder.
addCourseStudent(workspace.getId(), mcs).
addCourseStudent(workspace.getId(), mcs2).
build();
Long flagId = createFlag("Test Flaggi", "#990000", "Fishing flags");
Long studentFlagId = flagStudent(student.getId(), flagId);
try {
navigate("/guider", true);
waitForPresentAndVisible("div.gt-user");
waitForPresentAndVisible(".gt-filters a.gt-filter-link");
click(".gt-filters a.gt-filter-link");
waitForPresent("div.gt-user .gt-user-name .gt-user-meta-topic>span");
click("div.gt-user .gt-user-name .gt-user-meta-topic>span");
waitForPresentAndVisible(".gt-tool-view-profile>span");
click(".gt-tool-view-profile>span");
waitForPresent("div.gt-flag.icon-flag");
hoverOverElement("div.gt-flag.icon-flag");
waitForPresentAndVisible(".gt-share-flag");
click(".gt-share-flag");
waitAndSendKeys("#guider-share-flag-dialog-users", "Test");
waitAndClick(".guider-dialog-user-search ul li.ui-menu-item");
waitForPresent("div.shares div.share label");
assertText("div.shares div.share label", "Test Person <testperson@example.com>");
waitAndClick(".ui-dialog-buttonpane .save-button>span");
waitForPresent(".gt-user-view-headline");
reloadCurrentPage();
logout();
mockBuilder.mockLogin(testPerson).build();
login();
navigate("/guider", true);
waitForPresentAndVisible("div.gt-user");
click("div.gt-user .gt-user-name .gt-user-meta-topic>span");
waitForPresentAndVisible(".gt-tool-view-profile>span");
click(".gt-tool-view-profile>span");
waitForPresentAndVisible(".gt-filters a.gt-filter-link");
assertTextIgnoreCase(".gt-filters a.gt-filter-link>span:not(.icon-flag)", "Test Flaggi");
} finally {
deleteWorkspace(workspace.getId());
deleteWorkspace(workspace2.getId());
deleteFlagShares(flagId);
deleteStudentFlag(studentFlagId);
deleteFlag(flagId);
}
}
}