All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.liferay.object.rest.test.util.BaseObjectEntryManagerImplTestCase Maven / Gradle / Ivy

The newest version!
/**
 * SPDX-FileCopyrightText: (c) 2023 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

package com.liferay.object.rest.test.util;

import com.liferay.list.type.model.ListTypeDefinition;
import com.liferay.list.type.service.ListTypeDefinitionLocalService;
import com.liferay.object.rest.dto.v1_0.ObjectEntry;
import com.liferay.object.rest.dto.v1_0.Status;
import com.liferay.object.service.ObjectDefinitionLocalService;
import com.liferay.object.service.ObjectFieldLocalService;
import com.liferay.petra.string.StringBundler;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.search.Sort;
import com.liferay.portal.kernel.search.SortFactoryUtil;
import com.liferay.portal.kernel.util.DateFormatFactoryUtil;
import com.liferay.portal.kernel.util.ListUtil;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.test.rule.Inject;
import com.liferay.portal.vulcan.dto.converter.DTOConverterContext;
import com.liferay.portal.vulcan.dto.converter.DTOConverterRegistry;
import com.liferay.portal.vulcan.dto.converter.DefaultDTOConverterContext;
import com.liferay.portal.vulcan.pagination.Page;

import java.text.DateFormat;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;

import org.junit.Assert;
import org.junit.Before;

/**
 * @author Paulo Albuquerque
 */
public abstract class BaseObjectEntryManagerImplTestCase {

	@Before
	public void setUp() throws Exception {
		dtoConverterContext = new DefaultDTOConverterContext(
			false, Collections.emptyMap(), dtoConverterRegistry, null,
			LocaleUtil.getDefault(), null, adminUser);
	}

	protected void assertEquals(
			List actualObjectEntries,
			List expectedObjectEntries)
		throws Exception {

		Assert.assertEquals(
			actualObjectEntries.toString(), expectedObjectEntries.size(),
			actualObjectEntries.size());

		for (int i = 0; i < expectedObjectEntries.size(); i++) {
			assertEquals(
				actualObjectEntries.get(i), expectedObjectEntries.get(i));
		}
	}

	protected void assertEquals(
			ObjectEntry actualObjectEntry, ObjectEntry expectedObjectEntry)
		throws Exception {

		Map> actualOjectEntryActions =
			actualObjectEntry.getActions();

		Map> expectedObjectEntryActions =
			expectedObjectEntry.getActions();

		if (expectedObjectEntryActions != null) {
			for (Map.Entry> actualActions :
					actualOjectEntryActions.entrySet()) {

				Assert.assertEquals(
					actualActions.getKey(), actualActions.getValue(),
					expectedObjectEntryActions.get(actualActions.getKey()));
			}
		}

		Map actualObjectEntryProperties =
			actualObjectEntry.getProperties();

		Map expectedObjectEntryProperties =
			expectedObjectEntry.getProperties();

		for (Map.Entry expectedEntry :
				expectedObjectEntryProperties.entrySet()) {

			assertObjectEntryProperties(
				actualObjectEntry, actualObjectEntryProperties, expectedEntry);
		}

		if (expectedObjectEntry.getStatus() != null) {
			Assert.assertEquals(
				_getObjectEntryStatusCode(expectedObjectEntry),
				_getObjectEntryStatusCode(actualObjectEntry));
		}
	}

	protected void assertObjectEntryProperties(
			ObjectEntry actualObjectEntry,
			Map actualObjectEntryProperties,
			Map.Entry expectedEntry)
		throws Exception {

		Assert.assertEquals(
			expectedEntry.getKey(), expectedEntry.getValue(),
			actualObjectEntryProperties.get(expectedEntry.getKey()));
	}

	protected String buildEqualsExpressionFilterString(
		String fieldName, Object value) {

		return StringBundler.concat(fieldName, " eq ", getValue(value));
	}

	protected String buildRangeExpression(
		Date date1, Date date2, String fieldName, String pattern) {

		DateFormat dateFormat = DateFormatFactoryUtil.getSimpleDateFormat(
			pattern);

		return StringBundler.concat(
			"(( ", fieldName, " ge ", dateFormat.format(date1), ") and ( ",
			fieldName, " le ", dateFormat.format(date2), "))");
	}

	protected Page getObjectEntries(
			Map context, Sort[] sorts)
		throws Exception {

		return null;
	}

	protected String getValue(Object value) {
		if (value == null) {
			return null;
		}

		if (value instanceof Date) {
			DateFormat dateFormat = DateFormatFactoryUtil.getSimpleDateFormat(
				"yyyy-MM-dd");

			return dateFormat.format(value);
		}
		else if (value instanceof LocalDateTime) {
			DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(
				"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

			LocalDateTime localDateTime = (LocalDateTime)value;

			return dateTimeFormatter.format(localDateTime.withNano(0));
		}
		else if (value instanceof String) {
			return StringUtil.quote(String.valueOf(value));
		}

		return String.valueOf(value);
	}

	protected void testGetObjectEntries(
			Map context, ObjectEntry... expectedObjectEntries)
		throws Exception {

		Sort[] sorts = null;

		if (context.containsKey("sort")) {
			String[] sort = StringUtil.split(context.get("sort"), ":");

			sorts = new Sort[] {
				SortFactoryUtil.create(sort[0], Objects.equals(sort[1], "desc"))
			};
		}
		else {
			sorts = new Sort[] {SortFactoryUtil.create("createDate", false)};
		}

		Page page = getObjectEntries(context, sorts);

		assertEquals(
			(List)page.getItems(),
			ListUtil.fromArray(expectedObjectEntries));
	}

	protected static User adminUser;
	protected static long companyId;
	protected static DTOConverterContext dtoConverterContext;

	@Inject
	protected static DTOConverterRegistry dtoConverterRegistry;

	protected ListTypeDefinition listTypeDefinition;

	@Inject
	protected ListTypeDefinitionLocalService listTypeDefinitionLocalService;

	@Inject
	protected ObjectDefinitionLocalService objectDefinitionLocalService;

	@Inject
	protected ObjectFieldLocalService objectFieldLocalService;

	private Integer _getObjectEntryStatusCode(ObjectEntry objectEntry) {
		Status objectEntryStatus = objectEntry.getStatus();

		return objectEntryStatus.getCode();
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy