package io.monokkel.core; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import io.monokkel.domain.PageData; import org.junit.Test; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.Map; import static org.junit.Assert.assertEquals; public class DataCleanerTest{ @Test public void clean_withNestedCleanObject_expectSubFieldToBeCleaned(){ Map<String, Object> fieldsAndCleanExpressions = setupMap(); DataCleaner dataCleaner = new DataCleaner(fieldsAndCleanExpressions); Map data = Maps.newHashMap(); data.put("fristobject","1 577"); final Map<String, Object> submap = new LinkedHashMap<>(); submap.put("object","1 577"); data.put("subobject",submap); PageData pageData = new PageData(null,null,1L,null,null,null,data); final PageData clean = dataCleaner.clean(pageData); Map cleanedTransformed = clean.getTransformed(); final Map subObject = (Map)cleanedTransformed.get("subobject"); assertEquals("1577",subObject.get("object")); } @Test public void clean_withNestedCleanObjectButNoneMatching_expectNothingToBeMatched(){ Map<String, Object> fieldsAndCleanExpressions = setupMap(); DataCleaner dataCleaner = new DataCleaner(fieldsAndCleanExpressions); Map<String, Object> data = Maps.newHashMap(); data.put("nothingMatchedField","1 577"); final Map<String, Object> submap = new LinkedHashMap<>(); submap.put("nothingMatchedObject","1 577"); data.put("subobject",submap); PageData pageData = new PageData(null,null,1L,null,null,null,data); final PageData clean = dataCleaner.clean(pageData); Map cleanedTransformed = clean.getTransformed(); final Map subObject = (Map)cleanedTransformed.get("subobject"); assertEquals(subObject.get("nothingMatchedObject"), "1 577"); } @Test @SuppressWarnings("unchecked") public void clean_withMultiExpressions_expectPatternToClean(){ Map<String, Object> fieldsAndCleanExpressions = setupMultiExpressionMap(); DataCleaner dataCleaner = new DataCleaner(fieldsAndCleanExpressions); Map data = Maps.newHashMap(); data.put("object","1 577pattern"); PageData pageData = new PageData(null,null,1L,null,null,null,data); final PageData clean = dataCleaner.clean(pageData); Map cleanedTransformed = clean.getTransformed(); assertEquals("1577",cleanedTransformed.get("object")); } @Test public void clean_withMultiExpressionsContainingObjects_expectPatternToClean(){ Map<String, Object> fieldsAndCleanExpressions = setupMultiExpressionMap(); DataCleaner dataCleaner = new DataCleaner(fieldsAndCleanExpressions); Map data = Maps.newHashMap(); data.put("object","1 577pattern"); PageData pageData = new PageData(null,null,1L,null,null,null,data); final PageData clean = dataCleaner.clean(pageData); Map cleanedTransformed = clean.getTransformed(); assertEquals("1577",cleanedTransformed.get("object")); } @Test public void clean_withMultiExpressionsWithLongType_expectNotToCastTypeAndClean(){ Map<String, Object> fieldsAndCleanExpressions = setupMultiExpressionMap(); DataCleaner dataCleaner = new DataCleaner(fieldsAndCleanExpressions); Map data = Maps.newHashMap(); data.put("object",1577); PageData pageData = new PageData(null,null,1L,null,null,null,data); final PageData clean = dataCleaner.clean(pageData); Map cleanedTransformed = clean.getTransformed(); assertEquals(1577,cleanedTransformed.get("object")); } @Test public void clean_withMultiExpressionsWithBooleanType_expectNotToCastTypeAndClean(){ Map<String, Object> fieldsAndCleanExpressions = setupMultiExpressionMap(); DataCleaner dataCleaner = new DataCleaner(fieldsAndCleanExpressions); Map data = Maps.newHashMap(); data.put("object",true); PageData pageData = new PageData(null,null,1L,null,null,null,data); final PageData clean = dataCleaner.clean(pageData); Map cleanedTransformed = clean.getTransformed(); assertEquals(true,cleanedTransformed.get("object")); } @Test public void clean_withMultiExpressionsWithDoubleType_expectNotToCastTypeAndClean(){ Map<String, Object> fieldsAndCleanExpressions = setupMultiExpressionMap(); DataCleaner dataCleaner = new DataCleaner(fieldsAndCleanExpressions); Map data = Maps.newHashMap(); data.put("object",1.0); PageData pageData = new PageData(null,null,1L,null,null,null,data); final PageData clean = dataCleaner.clean(pageData); Map cleanedTransformed = clean.getTransformed(); assertEquals(1.0,cleanedTransformed.get("object")); } @Test public void clean_withMultiSubExpressingsInSubObjects_expectPatternToClean(){ Map<String, Object> fieldsAndCleanExpressions = setupMultiExpressionMap(); DataCleaner dataCleaner = new DataCleaner(fieldsAndCleanExpressions); Map data = Maps.newHashMap(); data.put("object","1 577pattern"); final Map<String, Object> submap = new LinkedHashMap<>(); submap.put("object","1 577pattern"); data.put("subobject",submap); PageData pageData = new PageData(null,null,1L,null,null,null,data); final PageData clean = dataCleaner.clean(pageData); Map cleanedTransformed = clean.getTransformed(); final Map subobject = (Map)cleanedTransformed.get("subobject"); assertEquals("1577", subobject.get("object")); } private Map<String, Object> setupMultiExpressionMap() { Map<String,Object> fieldsAndCleanExpressions = Maps.newHashMap(); // The hashmap is added to detect if the filtering work final ArrayList subObjectList = Lists.newArrayList("\\s", "pattern",Maps.newHashMap()); fieldsAndCleanExpressions.put("object", subObjectList); Map<String, Object> subMap = Maps.newHashMap(); subMap.put("object", subObjectList); fieldsAndCleanExpressions.put("subobject",subMap); return fieldsAndCleanExpressions; } private Map<String, Object> setupMap() { Map<String,Object> fieldsAndCleanExpressions = Maps.newHashMap(); fieldsAndCleanExpressions.put("object","\\s"); final LinkedHashMap<String, Object> submap = new LinkedHashMap<>(); submap.put("object","\\s"); fieldsAndCleanExpressions.put("subobject", submap); return fieldsAndCleanExpressions; } }