package ru.hflabs.rcd.lucene.binder; import org.apache.lucene.document.Document; 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.RecodeRule; import ru.hflabs.util.lucene.LuceneBinderTransformer; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static ru.hflabs.rcd.model.MockFactory.*; public class RecodeRuleBinderTransformerTest extends BinderTransformerTest<RecodeRule> { public RecodeRuleBinderTransformerTest() { super(RecodeRule.class); } @Test(dependsOnMethods = "testReverseConvert") public void testConvert() { // 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); RecodeRule rule = createMockRecodeRule( createMockRecodeRuleSet(fromMetaField, toMetaField, null), createMockField(fromMetaField), createMockField(toMetaField) ); Document document = binderTransformer.reverseConvert(rule); RecodeRule result = binderTransformer.convert(document); assertNotNull(result); assertEqualsRecodeRule(result, rule); } @Test public void testReverseConvert() { // 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); RecodeRule rule = createMockRecodeRule( createMockRecodeRuleSet(fromMetaField, toMetaField, null), createMockField(fromMetaField), createMockField(toMetaField) ); Document document = binderTransformer.reverseConvert(rule); assertNotNull(document); int totalFieldsCount = 0; // check IDs { assertEquals(document.getField(RecodeRule.FROM_FIELD_ID).stringValue(), rule.getFromFieldId()); assertEquals(document.getField(RecodeRule.TO_FIELD_ID).stringValue(), rule.getToFieldId()); totalFieldsCount += 2; } totalFieldsCount *= 2; // check to content { assertEquals(document.getField(RecodeRule.VALUE).stringValue(), rule.getFrom().getValue()); totalFieldsCount += 1; } // check ids { assertEquals(document.getField(RecodeRule.PRIMARY_KEY).stringValue(), rule.getId()); assertEquals(document.getField(RecodeRule.HISTORY_ID).stringValue(), rule.getHistoryId()); assertEquals(document.getField(RecodeRule.CHANGE_TYPE).stringValue(), rule.getChangeType().name()); assertNotNull(document.getField(RecodeRule.CHANGE_DATE)); assertEquals(document.getField(RecodeRule.RECODE_RULE_SET_ID).stringValue(), rule.getRecodeRuleSetId()); totalFieldsCount += 5; } // commons { assertNotNull(document.getField(LuceneBinderTransformer.OBJECT_FIELD)); assertNotNull(document.getField(LuceneBinderTransformer.DEFAULT_SEARCH_FIELD)); totalFieldsCount += 2; } assertEquals(document.getFields().size(), totalFieldsCount); } }