package ru.hflabs.rcd.lucene.binder; import com.google.common.collect.Lists; import org.apache.lucene.document.Document; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import ru.hflabs.rcd.model.document.Dictionary; import ru.hflabs.rcd.model.document.Group; import ru.hflabs.rcd.model.document.MetaField; import ru.hflabs.rcd.model.rule.RecodeRuleSet; import ru.hflabs.util.lucene.LuceneBinderTransformer; import java.util.Iterator; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static ru.hflabs.rcd.model.MockFactory.*; public class RecodeRuleSetBinderTransformerTest extends BinderTransformerTest<RecodeRuleSet> { public RecodeRuleSetBinderTransformerTest() { super(RecodeRuleSet.class); } @DataProvider private Iterator<Object[]> createTestCases() { return Lists.newArrayList( new Object[]{Boolean.TRUE}, new Object[]{Boolean.FALSE} ).iterator(); } @Test( dataProvider = "createTestCases", dependsOnMethods = "testReverseConvert" ) public void testConvert(boolean withDefaultField) { // generate from content Group fromGroup = createMockGroup(); Dictionary fromDictionary = createMockDictionary(fromGroup); MetaField fromMetaField = createMockMetaField(fromDictionary); // generate to content Group toGroup = createMockGroup(); Dictionary toDictionary = createMockDictionary(toGroup); MetaField toMetaField = createMockMetaField(toDictionary); RecodeRuleSet ruleSet = createMockRecodeRuleSet( fromMetaField, toMetaField, withDefaultField ? createMockField(toMetaField) : null ); Document document = binderTransformer.reverseConvert(ruleSet); RecodeRuleSet result = binderTransformer.convert(document); assertNotNull(result); assertEqualsRecodeRuleSet(result, ruleSet); } @Test(dataProvider = "createTestCases") public void testReverseConvert(boolean withDefaultField) { // generate from content Group fromGroup = createMockGroup(); Dictionary fromDictionary = createMockDictionary(fromGroup); MetaField fromMetaField = createMockMetaField(fromDictionary); // generate to content Group toGroup = createMockGroup(); Dictionary toDictionary = createMockDictionary(toGroup); MetaField toMetaField = createMockMetaField(toDictionary); RecodeRuleSet ruleSet = createMockRecodeRuleSet( fromMetaField, toMetaField, withDefaultField ? createMockField(toMetaField) : null ); Document document = binderTransformer.reverseConvert(ruleSet); assertNotNull(document); int totalFieldsCount = 0; // check from content { assertEquals(document.getField(RecodeRuleSet.FROM_GROUP_ID).stringValue(), fromGroup.getId()); assertEquals(document.getField(RecodeRuleSet.FROM_GROUP_NAME).stringValue(), fromGroup.getName()); assertEquals(document.getField(RecodeRuleSet.FROM_DICTIONARY_ID).stringValue(), fromDictionary.getId()); assertEquals(document.getField(RecodeRuleSet.FROM_DICTIONARY_NAME).stringValue(), fromDictionary.getName()); assertEquals(document.getField(RecodeRuleSet.FROM_FIELD_ID).stringValue(), ruleSet.getFromFieldId()); assertEquals(document.getField(RecodeRuleSet.FROM_FIELD_NAME).stringValue(), fromMetaField.getName()); totalFieldsCount += 6; } // check to content { assertEquals(document.getField(RecodeRuleSet.TO_GROUP_ID).stringValue(), toGroup.getId()); assertEquals(document.getField(RecodeRuleSet.TO_GROUP_NAME).stringValue(), toGroup.getName()); assertEquals(document.getField(RecodeRuleSet.TO_DICTIONARY_ID).stringValue(), toDictionary.getId()); assertEquals(document.getField(RecodeRuleSet.TO_DICTIONARY_NAME).stringValue(), toDictionary.getName()); assertEquals(document.getField(RecodeRuleSet.TO_FIELD_ID).stringValue(), ruleSet.getToFieldId()); assertEquals(document.getField(RecodeRuleSet.TO_FIELD_NAME).stringValue(), toMetaField.getName()); totalFieldsCount += 6; } totalFieldsCount *= 2; // check ids { assertEquals(document.getField(RecodeRuleSet.PRIMARY_KEY).stringValue(), ruleSet.getId()); assertEquals(document.getField(RecodeRuleSet.HISTORY_ID).stringValue(), ruleSet.getHistoryId()); assertEquals(document.getField(RecodeRuleSet.CHANGE_TYPE).stringValue(), ruleSet.getChangeType().name()); if (withDefaultField) { assertEquals(document.getField(RecodeRuleSet.DEFAULT_FIELD_ID).stringValue(), ruleSet.getDefaultFieldId()); } else { assertEquals(document.getField(RecodeRuleSet.DEFAULT_FIELD_ID).stringValue(), ""); } assertNotNull(document.getField(RecodeRuleSet.CHANGE_DATE)); assertEquals(document.getField(RecodeRuleSet.NAME).stringValue(), ruleSet.getName()); totalFieldsCount += 6; } // commons { assertNotNull(document.getField(LuceneBinderTransformer.OBJECT_FIELD)); assertNotNull(document.getField(LuceneBinderTransformer.DEFAULT_SEARCH_FIELD)); totalFieldsCount += 2; } assertEquals(document.getFields().size(), totalFieldsCount); } }