package com.constellio.app.services.schemas.bulkImport.data;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.List;
import org.assertj.core.api.Condition;
import com.constellio.model.services.records.ContentImport;
import com.constellio.model.services.records.ContentImportVersion;
import com.constellio.sdk.tests.ConstellioTest;
public class ImportDataIteratorTest extends ConstellioTest {
protected Condition<? super ImportData> noField(final String entryKey) {
return new Condition<ImportData>() {
@Override
public boolean matches(ImportData value) {
assertThat(value.getFields()).doesNotContainKey(entryKey);
return true;
}
};
}
protected Condition<? super ImportData> schema(final String schema) {
return new Condition<ImportData>() {
@Override
public boolean matches(ImportData value) {
assertThat(value.getSchema()).isEqualTo(schema);
return true;
}
};
}
protected Condition<? super ImportData> id(final String expectedId) {
return new Condition<ImportData>() {
@Override
public boolean matches(ImportData value) {
assertThat(value.getLegacyId()).isEqualTo(expectedId);
return true;
}
};
}
protected Condition<? super ImportData> index(final int expectedIndex) {
return new Condition<ImportData>() {
@Override
public boolean matches(ImportData value) {
assertThat(value.getIndex()).isEqualTo(expectedIndex);
return true;
}
};
}
protected Condition<? super ImportData> field(final String entryKey, final Object entryValue) {
return new Condition<ImportData>() {
@Override
public boolean matches(ImportData value) {
assertThat(value.getFields()).containsEntry(entryKey, entryValue);
return true;
}
};
}
protected Condition<? super ImportData> structure(final String entryKey, final Object entryListMap) {
return new Condition<ImportData>() {
@Override
public boolean matches(ImportData value) {
boolean hasValue = false;
assertThat(value.getFields().containsKey(entryKey));
for (Object realValues : (List) value.getValue(entryKey)) {
for (Object expectedValues : (List) entryListMap) {
if (realValues.equals(expectedValues)) {
hasValue = true;
}
}
assertThat(hasValue).isTrue();
hasValue = false;
}
for (Object expectedValues : (List) entryListMap) {
for (Object realValues : (List) value.getValue(entryKey)) {
if (expectedValues.equals(realValues)) {
hasValue = true;
}
}
assertThat(hasValue).isTrue();
hasValue = false;
}
return true;
}
};
}
protected Condition<? super ImportData> contentSize(final int sizeExpected) {
return new Condition<ImportData>() {
@Override
public boolean matches(ImportData value) {
assertThat((((ContentImport) value.getValue("content")).getVersions()).size()).isEqualTo(sizeExpected);
return true;
}
};
}
protected Condition<? super ImportData> content(final ContentImportVersion... versions) {
return new Condition<ImportData>() {
@Override
public boolean matches(ImportData value) {
int index = 0;
for (ContentImportVersion version : (((ContentImport) value.getValue("content")).getVersions())) {
assertThat((version.getFileName())).isEqualTo(versions[index].getFileName());
assertThat((version.getUrl())).isEqualTo(versions[index].getUrl());
assertThat((version.isMajor())).isEqualTo(versions[index].isMajor());
index++;
}
return true;
}
};
}
}