package com.constellio.model.entities; import static com.constellio.sdk.tests.TestUtils.asList; import static com.constellio.sdk.tests.TestUtils.assertThatToEqualsAndToStringThrowNoException; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.regex.Pattern; import org.junit.Before; import org.junit.Test; import com.constellio.data.dao.managers.config.values.BinaryConfiguration; import com.constellio.data.dao.managers.config.values.PropertiesConfiguration; import com.constellio.data.dao.managers.config.values.XMLConfiguration; import com.constellio.model.entities.calculators.MetadataValueCalculator; import com.constellio.model.entities.calculators.dependencies.LocalDependency; import com.constellio.model.entities.calculators.dependencies.ReferenceDependency; import com.constellio.model.entities.records.Record; import com.constellio.model.entities.records.wrappers.RecordWrapper; import com.constellio.model.entities.schemas.AllowedReferences; import com.constellio.model.entities.schemas.Metadata; import com.constellio.model.entities.schemas.MetadataAccessRestriction; import com.constellio.model.entities.schemas.MetadataNetwork; import com.constellio.model.entities.schemas.MetadataPopulateConfigs; import com.constellio.model.entities.schemas.MetadataSchema; import com.constellio.model.entities.schemas.MetadataSchemaType; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.model.entities.schemas.RegexConfig; import com.constellio.model.entities.schemas.RegexConfig.RegexConfigType; import com.constellio.model.entities.schemas.Schemas; import com.constellio.model.entities.schemas.entries.CalculatedDataEntry; import com.constellio.model.entities.schemas.entries.CopiedDataEntry; import com.constellio.model.entities.schemas.entries.ManualDataEntry; import com.constellio.model.entities.schemas.validation.RecordValidator; import com.constellio.model.services.records.extractions.DefaultMetadataPopulator; import com.constellio.model.services.records.extractions.MetadataPopulator; import com.constellio.model.services.records.extractions.MetadataToText; import com.constellio.model.services.records.extractions.RegexExtractor; import com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators; import com.constellio.model.services.search.query.logical.LogicalSearchValueCondition; import com.constellio.model.services.search.query.logical.condition.LogicalSearchCondition; import com.constellio.model.services.search.query.logical.criteria.MeasuringUnitTime; import com.constellio.sdk.tests.ConstellioTest; public class POJOEntitiesTest extends ConstellioTest { Map<Language, String> labels; @Before public void setUp() throws Exception { labels = new HashMap<>(); labels.put(Language.French, "a"); } @Test public void testThatRecordWrapperHasValidEqualsHashcodeAndToStringBehaviors() { Record record = mock(Record.class); when(record.getSchemaCode()).thenReturn("folder_default"); MetadataSchemaTypes types1 = mock(MetadataSchemaTypes.class); MetadataSchemaTypes types2 = mock(MetadataSchemaTypes.class); RecordWrapper o = new RecordWrapper(record, types1, "folder"); RecordWrapper o2 = new RecordWrapper(record, types1, "folder"); assertThatToEqualsAndToStringThrowNoException(o, o2); assertThat(o).isInstanceOf(Serializable.class); } @Test public void testThatCalculatedDataEntryHasValidEqualsHashcodeAndToStringBehaviors() { MetadataValueCalculator calculator = mock(MetadataValueCalculator.class); CalculatedDataEntry o = new CalculatedDataEntry(calculator); CalculatedDataEntry o2 = new CalculatedDataEntry(calculator); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatCopiedDataEntryHasValidEqualsHashcodeAndToStringBehaviors() { CopiedDataEntry o = new CopiedDataEntry("a", "b"); CopiedDataEntry o2 = new CopiedDataEntry("a", "b"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatManualDataEntryHasValidEqualsHashcodeAndToStringBehaviors() { ManualDataEntry o = new ManualDataEntry(); ManualDataEntry o2 = new ManualDataEntry(); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatLocalDependencyHasValidEqualsHashcodeAndToStringBehaviors() { LocalDependency o = LocalDependency.toABoolean("a"); LocalDependency o2 = LocalDependency.toABoolean("a"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatReferenceDependencyHasValidEqualsHashcodeAndToStringBehaviors() { ReferenceDependency o = ReferenceDependency.toABoolean("a", "b"); ReferenceDependency o2 = ReferenceDependency.toABoolean("a", "b"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatAllowedReferencesHasValidEqualsHashcodeAndToStringBehaviors() { AllowedReferences o = new AllowedReferences("type", null); AllowedReferences o2 = new AllowedReferences("type", null); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatMetadataPopulateConfigsHasValidEqualsHashcodeAndToStringBehaviors() { Pattern regex = Pattern.compile("regex"); RegexConfig regexConfig = new RegexConfig("inpuptMetadata", regex, "value", RegexConfigType.SUBSTITUTION); MetadataPopulator metadataPopulator = new DefaultMetadataPopulator( new RegexExtractor(regexConfig.getRegex().pattern(), regexConfig.getRegexConfigType() == RegexConfigType.TRANSFORMATION, regexConfig.getValue()), new MetadataToText(regexConfig.getInputMetadata())); MetadataPopulateConfigs o = new MetadataPopulateConfigs(asList("style"), asList("property"), asList(regexConfig), asList(metadataPopulator)); MetadataPopulateConfigs o2 = new MetadataPopulateConfigs(asList("style"), asList("property"), asList(regexConfig), asList(metadataPopulator)); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatMetadataHasValidEqualsHashcodeAndToStringBehaviors() { Metadata o = Schemas.IDENTIFIER; Metadata o2 = Schemas.IDENTIFIER; assertThatToEqualsAndToStringThrowNoException(o, o2); assertThat(o).isNotInstanceOf(Serializable.class); } @Test public void testThatMetadataSchemaHasValidEqualsHashcodeAndToStringBehaviors() { MetadataSchema o = new MetadataSchema("a", "a", "a", labels, new ArrayList<Metadata>(), true, true, new HashSet<RecordValidator>(), null); MetadataSchema o2 = new MetadataSchema("a", "a", "a", labels, new ArrayList<Metadata>(), true, true, new HashSet<RecordValidator>(), null); assertThatToEqualsAndToStringThrowNoException(o, o2); assertThat(o).isNotInstanceOf(Serializable.class); } @Test public void testThatMetadataSchemaTypeHasValidEqualsHashcodeAndToStringBehaviors() { MetadataSchema defaultSchema = new MetadataSchema("a", "a", "a", labels, new ArrayList<Metadata>(), true, true, new HashSet<RecordValidator>(), null); MetadataSchema defaultSchema2 = new MetadataSchema("a", "a", "a", labels, new ArrayList<Metadata>(), true, true, new HashSet<RecordValidator>(), null); MetadataSchemaType o = new MetadataSchemaType("a", "a", labels, new ArrayList<MetadataSchema>(), defaultSchema, true, true, true, false); MetadataSchemaType o2 = new MetadataSchemaType("a", "a", labels, new ArrayList<MetadataSchema>(), defaultSchema2, true, true, true, false); assertThatToEqualsAndToStringThrowNoException(o, o2); assertThat(o).isNotInstanceOf(Serializable.class); } @Test public void testThatMetadataSchemaTypesHasValidEqualsHashcodeAndToStringBehaviors() { MetadataSchemaTypes o = new MetadataSchemaTypes(zeCollection, 1, new ArrayList<MetadataSchemaType>(), new ArrayList<String>(), new ArrayList<String>(), Arrays.asList(Language.French), MetadataNetwork.EMPTY()); MetadataSchemaTypes o2 = new MetadataSchemaTypes(zeCollection, 1, new ArrayList<MetadataSchemaType>(), new ArrayList<String>(), new ArrayList<String>(), Arrays.asList(Language.French), MetadataNetwork.EMPTY()); assertThatToEqualsAndToStringThrowNoException(o, o2); assertThat(o).isNotInstanceOf(Serializable.class); } @Test public void testThatMetadataAccessRestrictionsHasValidEqualsHashcodeAndToStringBehaviors() { MetadataValueCalculator calculator = mock(MetadataValueCalculator.class); MetadataAccessRestriction o = new MetadataAccessRestriction(Arrays.asList("a"), Arrays.asList("b"), Arrays.asList("c"), Arrays.asList("d")); MetadataAccessRestriction o2 = new MetadataAccessRestriction(Arrays.asList("a"), Arrays.asList("b"), Arrays.asList("c"), Arrays.asList("d")); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatBinaryConfigurationHasValidEqualsHashcodeAndToStringBehaviors() { BinaryConfiguration o = new BinaryConfiguration("a", null); BinaryConfiguration o2 = new BinaryConfiguration("a", null); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatXMLConfigurationHasValidEqualsHashcodeAndToStringBehaviors() { XMLConfiguration o = new XMLConfiguration("a", null, null); XMLConfiguration o2 = new XMLConfiguration("a", null, null); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatPropertiesConfigurationHasValidEqualsHashcodeAndToStringBehaviors() { PropertiesConfiguration o = new PropertiesConfiguration("a", null); PropertiesConfiguration o2 = new PropertiesConfiguration("a", null); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatTaxonomiesHasValidEqualsHashcodeAndToStringBehaviors() { Taxonomy o = Taxonomy.createPublic("a", "b", "zeCollection", Arrays.asList("c")); Taxonomy o2 = Taxonomy.createPublic("a", "b", "zeCollection", Arrays.asList("c")); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_AllConditions_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchCondition nested = mock(LogicalSearchCondition.class); LogicalSearchCondition o = LogicalSearchQueryOperators.allConditions(Arrays.asList(nested)); LogicalSearchCondition o2 = LogicalSearchQueryOperators.allConditions(Arrays.asList(nested)); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_AnyConditions_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchCondition nested = mock(LogicalSearchCondition.class); LogicalSearchCondition o = LogicalSearchQueryOperators.anyConditions(Arrays.asList(nested)); LogicalSearchCondition o2 = LogicalSearchQueryOperators.anyConditions(Arrays.asList(nested)); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_Is_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.is("4"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.is("4"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_IsNotEqual_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.isNotEqual("4"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.isNotEqual("4"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_In_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.in(Arrays.asList("4", "5")); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.in(Arrays.asList("4", "5")); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_NotIn_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.notIn(Arrays.asList("4", "5")); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.notIn(Arrays.asList("4", "5")); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_Containing_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.containing(Arrays.asList("4", "5")); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.containing(Arrays.asList("4", "5")); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_notContainingElements_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.notContainingElements(Arrays.asList("4", "5")); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.notContainingElements(Arrays.asList("4", "5")); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_isNull_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.isNull(); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.isNull(); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_isNotNull_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.isNotNull(); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.isNotNull(); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_containingText_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.containingText("a"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.containingText("a"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_startingWithText_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.startingWithText("a"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.startingWithText("a"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_endingWithText_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.endingWithText("a"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.endingWithText("a"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_all_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.all(new ArrayList<LogicalSearchValueCondition>()); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.all(new ArrayList<LogicalSearchValueCondition>()); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_any_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.any(new ArrayList<LogicalSearchValueCondition>()); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.any(new ArrayList<LogicalSearchValueCondition>()); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_not_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.not(LogicalSearchQueryOperators.startingWithText("text")); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.not(LogicalSearchQueryOperators.startingWithText("text")); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_isTrue_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.isTrue(); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.isTrue(); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_isTrueOrNull_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.isTrueOrNull(); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.isTrueOrNull(); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_isFalse_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.isFalse(); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.isFalse(); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_isFalseOrNull_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.isFalseOrNull(); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.isFalseOrNull(); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_valueInRange_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.valueInRange("1", "2"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.valueInRange("1", "2"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_lessThan_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.lessThan("1"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.lessThan("1"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_greaterThan_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.greaterThan("1"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.greaterThan("1"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_lessOrEqualThan_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.lessOrEqualThan("1"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.lessOrEqualThan("1"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_greaterOrEqualThan_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.greaterOrEqualThan("1"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.greaterOrEqualThan("1"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_equal_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.equal("1"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.equal("1"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_notEqual_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.notEqual("1"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.notEqual("1"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_query_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.query("1"); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.query("1"); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatMetadataSchemaTypesIsNotSerializable() { } @Test public void testThatSpeCriterion_newerThan_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.newerThan(1.0, MeasuringUnitTime.DAYS); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.newerThan(1.0, MeasuringUnitTime.DAYS); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_olderThan_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.olderThan(1.0, MeasuringUnitTime.DAYS); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.olderThan(1.0, MeasuringUnitTime.DAYS); assertThatToEqualsAndToStringThrowNoException(o, o2); } @Test public void testThatSpeCriterion_olderLike_HasValidEqualsHashcodeAndToStringBehaviors() { LogicalSearchValueCondition o = LogicalSearchQueryOperators.oldLike(1.0, MeasuringUnitTime.DAYS); LogicalSearchValueCondition o2 = LogicalSearchQueryOperators.oldLike(1.0, MeasuringUnitTime.DAYS); assertThatToEqualsAndToStringThrowNoException(o, o2); } }