Skip to content

Commit

Permalink
Merge branch 'development' into #12605-rename_persons_involved_to_eve…
Browse files Browse the repository at this point in the history
…nt_participants_in_mobile_and_web_apps
  • Loading branch information
carina29 committed Oct 23, 2023
2 parents 5e0003c + 4d67791 commit 4c26d07
Show file tree
Hide file tree
Showing 14 changed files with 268 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,13 @@
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;

import androidx.annotation.NonNull;

import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.caze.CaseClassification;
import de.symeda.sormas.api.contact.ContactClassification;
import de.symeda.sormas.api.contact.ContactStatus;
import de.symeda.sormas.api.i18n.I18nProperties;
import de.symeda.sormas.api.i18n.Strings;
import de.symeda.sormas.api.utils.DataHelper;
import de.symeda.sormas.api.utils.ValidationException;
import de.symeda.sormas.api.utils.YesNoUnknown;
Expand Down Expand Up @@ -80,8 +81,16 @@ public static void startActivityWithEmptyReportDate(Context fromActivity) {
BaseEditActivity.startActivity(fromActivity, CaseNewActivity.class, buildBundleWithEmptyReportDate());
}

public static void startActivityFromContact(Context fromActivity, String contactUuid) {
BaseEditActivity.startActivity(fromActivity, CaseNewActivity.class, buildBundleWithContact(contactUuid));
public static void startActivityFromContact(Context fromActivity, Contact contact) {
if (contact.getContactClassification() != ContactClassification.CONFIRMED) {
NotificationHelper.showNotification(
getActiveActivity(),
NotificationType.WARNING,
I18nProperties.getString(Strings.messageContactToCaseConfirmationRequired));
return;
}

BaseEditActivity.startActivity(fromActivity, CaseNewActivity.class, buildBundleWithContact(contact.getUuid()));
}

public static void startActivityFromEventPerson(Context fromActivity, EventParticipant eventParticipant) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -372,11 +372,11 @@ private void showRepullProgressItems() {
addEntityIfViewAllowed(ImmunizationDto.class, Strings.entityImmunizations, allowedEntities);
addEntityIfViewAllowed(EventDto.class, Strings.entityEvents, allowedEntities);
addEntityIfViewAllowed(EventParticipantDto.class, Strings.entityEventParticipants, allowedEntities);
addEntityIfViewAllowed(EnvironmentDto.class, Strings.entityEnvironments, allowedEntities);
addEntityIfViewAllowed(EnvironmentSampleDto.class, Strings.entityEnvironmentSamples, allowedEntities);
addEntityIfViewAllowed(SampleDto.class, Strings.entitySamples, allowedEntities);
addEntityIfViewAllowed(PathogenTestDto.class, Strings.entityPathogenTests, allowedEntities);
addEntityIfViewAllowed(AdditionalTestDto.class, Strings.entityAdditionalTests, allowedEntities);
addEntityIfViewAllowed(EnvironmentDto.class, Strings.entityEnvironments, allowedEntities);
addEntityIfViewAllowed(EnvironmentSampleDto.class, Strings.entityEnvironmentSamples, allowedEntities);
addEntityIfViewAllowed(ContactDto.class, Strings.entityContacts, allowedEntities);
addEntityIfViewAllowed(VisitDto.class, Strings.entityVisits, allowedEntities);
addEntityIfViewAllowed(TaskDto.class, Strings.entityTasks, allowedEntities);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public static ContactEditFragment newInstance(Contact activityRootData) {
}

private void setUpControlListeners(FragmentContactEditLayoutBinding contentBinding) {
contentBinding.createCase.setOnClickListener(v -> CaseNewActivity.startActivityFromContact(getContext(), record.getUuid()));
contentBinding.createCase.setOnClickListener(v -> CaseNewActivity.startActivityFromContact(getContext(), record));

contentBinding.openSourceCase.setOnClickListener(v -> CaseReadActivity.startActivity(getActivity(), sourceCase.getUuid(), true));

Expand All @@ -115,7 +115,7 @@ private void setUpFieldVisibilities(FragmentContactEditLayoutBinding contentBind
contentBinding.contactCaseOrEventInformation.setVisibility(GONE);
}

if (record.getContactClassification() != ContactClassification.CONFIRMED) {
if (record.getContactClassification() == ContactClassification.NO_CONTACT) {
contentBinding.createCase.setVisibility(GONE);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,9 @@ protected Predicate createRelevantDataFilter(CriteriaBuilder cb, CriteriaQuery c
filter = CriteriaBuilderHelper.and(cb, filter, createUserFilter(taskQueryContext));
}

Predicate criteriaFilter = this.buildCriteriaFilter(new TaskCriteria(), taskQueryContext);
filter = CriteriaBuilderHelper.and(cb, filter, criteriaFilter);

return filter;
}

Expand All @@ -144,6 +147,9 @@ public List<String> getAllActiveUuids(User user) {
filter = CriteriaBuilderHelper.and(cb, filter, userFilter);
}

Predicate criteriaFilter = this.buildCriteriaFilter(new TaskCriteria(), taskQueryContext);
filter = CriteriaBuilderHelper.and(cb, filter, criteriaFilter);

if (RequestContextHolder.isMobileSync()) {
Predicate predicate = createLimitedChangeDateFilter(cb, from);
if (predicate != null) {
Expand Down Expand Up @@ -190,7 +196,9 @@ private boolean hasContextOrNoContext(TaskCriteria taskCriteria, TaskContext tas
|| !taskCriteria.hasContextCriteria()
|| (taskCriteria.getTaskContext() == TaskContext.TRAVEL_ENTRY || taskCriteria.getTravelEntry() != null);
case ENVIRONMENT:
return taskCriteria == null || (taskCriteria.getTaskContext() == TaskContext.ENVIRONMENT || taskCriteria.getEnvironment() != null);
return taskCriteria == null
|| !taskCriteria.hasContextCriteria()
|| (taskCriteria.getTaskContext() == TaskContext.ENVIRONMENT || taskCriteria.getEnvironment() != null);
case GENERAL:
return taskCriteria == null || !taskCriteria.hasContextCriteria() || taskCriteria.getTaskContext() == TaskContext.GENERAL;
default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,6 @@ public List<UserReferenceDto> getUsersByRegionAndRights(RegionReferenceDto regio
null,
null,
true,
true,
limitedDisease,
userRights)
.stream()
Expand Down Expand Up @@ -316,7 +315,6 @@ public List<UserReferenceDto> getUserRefsByDistrict(DistrictReferenceDto distric
districtRef != null ? Collections.singletonList(districtRef.getUuid()) : null,
null,
true,
true,
limitedDisease,
userRights)
.stream()
Expand All @@ -336,7 +334,6 @@ public List<UserReferenceDto> getUserRefsByDistrict(
districtRef != null ? Collections.singletonList(districtRef.getUuid()) : null,
null,
true,
true,
null,
excludeLimitedDiseaseUsers,
Arrays.asList(userRights))
Expand All @@ -355,7 +352,6 @@ public List<UserReferenceDto> getUserRefsByDistricts(List<DistrictReferenceDto>
districtRefs.stream().map(DistrictReferenceDto::getUuid).collect(Collectors.toList()),
null,
true,
true,
limitedDisease,
userRights)
.stream()
Expand Down Expand Up @@ -392,10 +388,7 @@ public List<UserReferenceDto> getUserRefsByInfrastructure(
@PermitAll
public List<UserReferenceDto> getAllUserRefs(boolean includeInactive) {

return userService.getUserReferences(null, null, true, !includeInactive)
.stream()
.map(UserFacadeEjb::toReferenceDto)
.collect(Collectors.toList());
return userService.getUserReferences(null, null, !includeInactive).stream().map(UserFacadeEjb::toReferenceDto).collect(Collectors.toList());
}

private List<UserReferenceDto> getAssignableUsersBasedOnContext(TaskContextIndexCriteria taskContextIndexCriteria) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,43 +198,28 @@ public List<User> getAllByDistrictsAndUserRights(List<District> districts, Colle
* @param activeOnly
* @param userRights
*/
public List<UserReference> getUserReferences(
List<String> regionUuids,
List<String> districtUuids,
boolean filterByCurrentUserJurisdiction,
boolean activeOnly,
UserRight... userRights) {
public List<UserReference> getUserReferences(List<String> regionUuids, List<String> districtUuids, boolean activeOnly, UserRight... userRights) {

return getUserReferences(regionUuids, districtUuids, null, filterByCurrentUserJurisdiction, activeOnly, userRights);
return getUserReferences(regionUuids, districtUuids, null, activeOnly, userRights);
}

public List<UserReference> getUserReferences(
List<String> regionUuids,
List<String> districtUuids,
List<String> communityUuids,
boolean filterByJurisdiction,
boolean activeOnly,
UserRight... userRights) {
return getUserReferences(regionUuids, districtUuids, communityUuids, filterByJurisdiction, activeOnly, null, userRights);
return getUserReferences(regionUuids, districtUuids, communityUuids, activeOnly, null, userRights);
}

public List<UserReference> getUserReferences(
List<String> regionUuids,
List<String> districtUuids,
List<String> communityUuids,
boolean filterByJurisdiction,
boolean activeOnly,
Disease limitedDisease,
UserRight... userRights) {
return getUserReferences(
regionUuids,
districtUuids,
communityUuids,
filterByJurisdiction,
activeOnly,
limitedDisease,
false,
Arrays.asList(userRights));
return getUserReferences(regionUuids, districtUuids, communityUuids, activeOnly, limitedDisease, false, Arrays.asList(userRights));
}

/**
Expand All @@ -254,7 +239,6 @@ public List<UserReference> getUserReferences(
List<String> regionUuids,
List<String> districtUuids,
List<String> communityUuids,
boolean filterByJurisdiction,
boolean activeOnly,
Disease limitedDisease,
boolean excludeLimitedDiseaseUsers,
Expand Down Expand Up @@ -289,7 +273,7 @@ public List<UserReference> getUserReferences(
filter = CriteriaBuilderHelper.and(cb, filter, districtFilter);
userEntityJoinUsed = true;
}
if (filterByJurisdiction) {
if (!hasRight(UserRight.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION)) {
filter = CriteriaBuilderHelper.and(cb, filter, createCurrentUserJurisdictionFilter(cb, userRoot));
userEntityJoinUsed = true;
}
Expand Down Expand Up @@ -712,10 +696,6 @@ public Predicate createUserFilter(CriteriaBuilder cb, CriteriaQuery cq, From<?,
}

public Predicate createCurrentUserJurisdictionFilter(CriteriaBuilder cb, From<?, User> from) {
if (hasRight(UserRight.SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION)) {
return cb.conjunction();
}

User currentUser = getCurrentUser();

if (currentUser.getHealthFacility() != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,40 @@ public class UserRolesPage {
public static By SAVE_BUTTON = By.cssSelector("#commit");
public static By DISCARD_BUTTON = By.cssSelector("#discard");
public static By USER_ROLE_LIST = By.cssSelector("#tab-user-userroles");
public static By EDIT_EXISTING_CASES_CHECKBOX = By.xpath("//label[text()='Edit existing cases']");
public static By EDIT_EXISTING_CASES_CHECKBOX_VALUE =
By.xpath("//label[text()='Edit existing cases']/preceding-sibling::input");
public static By EDIT_CASE_INVESTIGATION_STATUS_CHECKBOX =
By.xpath("//label[text()='Edit case investigation status']");
public static By EDIT_CASE_INVESTIGATION_STATUS_CHECKBOX_VALUE =
By.xpath("//label[text()='Edit case investigation status']/preceding-sibling::input");
public static By EDIT_CASE_DISEASE_CHECKBOX = By.xpath("//label[text()='Edit case disease']");
public static By EDIT_CASE_DISEASE_CHECKBOX_VALUE =
By.xpath("//label[text()='Edit case disease']/preceding-sibling::input");
public static By TRANSFER_CASES_TO_ANOTHER_REGION_DISTRICT_FACILITY_CHECKBOX =
By.xpath("//label[text()='Transfer cases to another region/district/facility']");
public static By TRANSFER_CASES_TO_ANOTHER_REGION_DISTRICT_FACILITY_CHECKBOX_VALUE =
By.xpath(
"//label[text()='Transfer cases to another region/district/facility']/preceding-sibling::input");
public static By EDIT_CASE_CLASSIFICATION_AND_OUTCOME_CHECKBOX =
By.xpath("//label[text()='Edit case classification and outcome']");
public static By EDIT_CASE_CLASSIFICATION_AND_OUTCOME_CHECKBOX_VALUE =
By.xpath("//label[text()='Edit case classification and outcome']/preceding-sibling::input");
public static By EDIT_CASE_EPID_NUMBER_CHECKBOX =
By.xpath("//label[text()='Edit case epid number']");
public static By EDIT_CASE_EPID_NUMBER_CHECKBOX_VALUE =
By.xpath("//label[text()='Edit case epid number']/preceding-sibling::input");
public static By REFER_CASE_FROM_POINT_OF_ENTRY_CHECKBOX =
By.xpath("//label[text()='Refer case from point of entry']");
public static By REFER_CASE_FROM_POINT_OF_ENTRY_CHECKBOX_VALUE =
By.xpath("//label[text()='Refer case from point of entry']/preceding-sibling::input");
public static By CAN_BE_RESPONSIBLE_FOR_A_CASE_CHECKBOX =
By.xpath("//label[text()='Can be responsible for a case']");
public static By CAN_BE_RESPONSIBLE_FOR_A_CASE_CHECKBOX_VALUE =
By.xpath("//label[text()='Can be responsible for a case']/preceding-sibling::input");
public static By WORK_WITH_MESSAGE_CHECKBOX = By.xpath("//label[text()='Work with messages']");
public static By WORK_WITH_MESSAGE_CHECKBOX_VALUE =
By.xpath("//label[text()='Work with messages']/preceding-sibling::input");

public static By getUserRoleCaptionByText(String caption) {
return By.xpath(String.format("//td[contains(text(), '%s')]", caption));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@
import io.qameta.allure.Allure;
import io.qameta.allure.Attachment;
import io.qameta.allure.listener.StepLifecycleListener;
import io.restassured.RestAssured;
import io.restassured.parsing.Parser;

import java.lang.management.ManagementFactory;
import java.time.Duration;
import java.time.LocalDateTime;
Expand All @@ -55,7 +54,7 @@ public class BaseSteps implements StepLifecycleListener {
public static String locale;
private final DriverManager driverManager;
private final String imageType = "image/png";
private final String pngValue = "png";
private final String jpgValue = "jpg";

@Inject
public BaseSteps(DriverManager driverManager) {
Expand All @@ -77,24 +76,16 @@ public void beforeScenario(Scenario scenario) {
driver = driverManager.borrowRemoteWebDriver(scenario.getName());
StepsLogger.setRemoteWebDriver(driver);
WebDriver.Options options = driver.manage();
options.timeouts().setScriptTimeout(Duration.ofMinutes(2));
options.timeouts().scriptTimeout(Duration.ofMinutes(2));
options.timeouts().pageLoadTimeout(Duration.ofMinutes(2));
log.info("Starting test: {} with process ID [ {} ]", scenario.getName(), PROCESS_ID);
}
}

@Before(value = "@API")
static void setup() {
RestAssured.registerParser("text/html", Parser.JSON);
}

@SneakyThrows
@After(value = "@UI")
public void afterScenario(Scenario scenario) {
if (isLanguageRiskScenario(scenario) && scenario.isFailed()) {
// TODO replace it with API call when implemented
log.info("Refreshing page to close any popups");
driver.navigate().refresh();
BackupSteps.setAppLanguageToDefault(locale);
}
if (isNonApiScenario(scenario)) {
Expand Down Expand Up @@ -168,7 +159,7 @@ private void takeScreenshot() {
"Screenshot at :"
+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd-MMM-yy hh:mm:ss")),
imageType,
pngValue,
jpgValue,
screenShot);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import static org.sormas.e2etests.pages.application.NavBarPage.*;
import static org.sormas.e2etests.pages.application.dashboard.Surveillance.SurveillanceDashboardPage.LOGOUT_BUTTON;
import static org.sormas.e2etests.steps.BaseSteps.locale;
import static org.sormas.e2etests.steps.web.application.users.CreateNewUserSteps.userName;
import static org.sormas.e2etests.steps.web.application.users.CreateNewUserSteps.userPass;

import com.google.inject.Inject;
import cucumber.api.java8.En;
Expand Down Expand Up @@ -159,6 +161,20 @@ public LoginSteps(
webDriverHelpers.clickOnWebElementBySelector(LoginPage.LOGIN_BUTTON);
webDriverHelpers.waitForPageLoaded();
});

Then(
"I login with new created user with chosen new role",
() -> {
webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(
LoginPage.USER_NAME_INPUT, 100);
log.info("Filling username");
webDriverHelpers.fillInWebElement(LoginPage.USER_NAME_INPUT, userName);
log.info("Filling password");
webDriverHelpers.fillInWebElement(LoginPage.USER_PASSWORD_INPUT, userPass);
log.info("Click on Login button");
webDriverHelpers.clickOnWebElementBySelector(LoginPage.LOGIN_BUTTON);
webDriverHelpers.waitForPageLoaded();
});
Then(
"I login with last edited user on Keycloak Enabled Environment",
() -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@
import static org.sormas.e2etests.pages.application.entries.TravelEntryPage.SELECT_ANOTHER_PERSON_DE;
import static org.sormas.e2etests.pages.application.tasks.TaskManagementPage.BULK_DELETE_BUTTON;
import static org.sormas.e2etests.steps.BaseSteps.locale;
import static org.sormas.e2etests.steps.web.application.cases.EditCaseSteps.caseUuid;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
Expand Down Expand Up @@ -289,6 +290,13 @@ public CaseDirectorySteps(
webDriverHelpers.waitForPageLoadingSpinnerToDisappear(40);
});

When(
"I open the first Case result in Case Directory",
() -> {
webDriverHelpers.waitUntilElementIsVisibleAndClickable(FIRST_CASE_ID);
webDriverHelpers.clickOnWebElementBySelector(FIRST_CASE_ID);
});

When(
"I check if downloaded zip file for Quarantine Order is correct",
() -> {
Expand All @@ -313,6 +321,15 @@ public CaseDirectorySteps(
webDriverHelpers.clickOnWebElementBySelector(SOURCE_CASE_WINDOW_SEARCH_CASE_BUTTON);
});

When(
"I search for the last {string} case on Case directory page",
(String option) -> {
webDriverHelpers.fillInWebElement(CASE_DIRECTORY_DETAILED_PAGE_FILTER_INPUT, caseUuid);
webDriverHelpers.waitUntilIdentifiedElementIsVisibleAndClickable(
CASE_APPLY_FILTERS_BUTTON);
webDriverHelpers.clickOnWebElementBySelector(CASE_APPLY_FILTERS_BUTTON);
});

When(
"^Search for Case using Case UUID from the created Task",
() -> {
Expand Down
Loading

0 comments on commit 4c26d07

Please sign in to comment.