Skip to content

Commit

Permalink
Adding Array of metadataSeq in RichMap (#72)
Browse files Browse the repository at this point in the history
  • Loading branch information
gokulsfdc authored and tovbinm committed Aug 20, 2018
1 parent fc64f2a commit 06ca844
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ object RichMetadata {
private val intSeq = TypeCase[Seq[Int]]
private val doubleSeq = TypeCase[Seq[Double]]
private val stringSeq = TypeCase[Seq[String]]
private val metadataSeq = TypeCase[Seq[Metadata]]

/**
* Enrichment functions for Maps
Expand All @@ -203,6 +204,7 @@ object RichMetadata {
case longSeq(v) => builder.putLongArray(key, v.toArray)
case doubleSeq(v) => builder.putDoubleArray(key, v.toArray)
case stringSeq(v) => builder.putStringArray(key, v.toArray)
case metadataSeq(v) => builder.putMetadataArray(key, v.toArray)
case _ => unsupported(key, seq)
}
theMap.foldLeft(builder) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,14 @@ class RichMetadataTest extends FlatSpec with TestCommon {

val mergedMetadata = meta1.deepMerge(map2.toMetadata)
mergedMetadata.json shouldBe Serialization.write(mergedMap)
}

it should "deep merge the Array of metadata" in {
val m1 = Map("1" -> Array(Map("val" -> "a").toMetadata)).toMetadata
val m2 = Map("1" -> Array(Map("val" -> "b").toMetadata)).toMetadata
val mergedValue = Map("1" -> Array(Map("val" -> "a").toMetadata, Map("val" -> "b").toMetadata)).toMetadata

m1.deepMerge(m2) shouldBe mergedValue
}

it should "throw an error on incompatible value types in deep merge" in {
Expand All @@ -100,6 +107,16 @@ class RichMetadataTest extends FlatSpec with TestCommon {
summaryMeta.containsSummaryMetadata shouldBe true
}

it should "create summary for a given metadata" in {
meta1.containsSummaryMetadata() shouldBe false

// create a summary for the metadata.
val expectedSummaryMetadata = Map("s" -> "summaryTest").toMetadata
val richMetaDataWithSummary = meta1.withSummaryMetadata(expectedSummaryMetadata)

richMetaDataWithSummary.getSummaryMetadata() shouldBe expectedSummaryMetadata
richMetaDataWithSummary.containsSummaryMetadata() shouldBe true
}
}

case class TestClass(name: String)

0 comments on commit 06ca844

Please sign in to comment.