Skip to content

Instantly share code, notes, and snippets.

@andyczerwonka
Created May 9, 2012 18:05
Show Gist options
  • Save andyczerwonka/2647420 to your computer and use it in GitHub Desktop.
Save andyczerwonka/2647420 to your computer and use it in GitHub Desktop.
Specs2 test for parsing JSON and extracting into a case class
package models
case class ProductionType(
key: String,
name: String,
blended: Boolean,
forecast: Boolean,
actual: Boolean,
field: Boolean,
financial: Boolean,
curtailed: Boolean)
case class ProductionDefinition(
name: String,
wi: Boolean,
risk: Boolean,
shrinkage: Boolean,
royalty: Boolean)
case class Production(
types: List[ProductionType],
definitions: List[ProductionDefinition],
units: List[String])
case class Configuration(
programs: List[String],
production: Production)
}
package json
import org.specs2.mutable._
import play.api.test._
import play.api.test.Helpers._
import controllers.JsonHelper._
import models.Measure
import java.util.Date
import play.api.libs.json._
import play.api.libs.json.Json._
import java.text.SimpleDateFormat
import play.api.libs.json.JsValue
import play.api.libs.json._
import play.api.libs.json.Json._
class JsonHelperSpec extends SpecificationWithJUnit {
"The JsonHelper" should {
"extract a Configuration value" in {
val json = Json.parse("""{
"projectSets": [
"2012 In-Budget Shale Gas Program",
"PAR-9519"
],
"production": {
"types": [
{
"key": "Actuals",
"name": "Production Actuals",
"blended": false,
"forecast": false,
"actual": true,
"field": false,
"financial": false,
"curtailed": false
},
{
"key": "Blended",
"name": "Blended Production Figures",
"blended": true,
"forecast": false,
"actual": false,
"field": false,
"financial": false,
"curtailed": true
}
],
"definitions": [
{
"name": "Gross Risked Raw",
"wi": false,
"risk": true,
"shrinkage": false,
"royalty": false
}
],
"units": [
"mcfe",
"boe",
"GJe",
"mmboe"
]
}
}""")
val config = configuration(json)
config.programs must have size (2)
}
}
}
{
"projectSets": [
"2012 In-Budget Shale Gas Program",
"PAR-9519"
],
"production": {
"types": [
{
"key": "Actuals",
"name": "Production Actuals",
"blended": false,
"forecast": false,
"actual": true,
"field": false,
"financial": false,
"curtailed": false
},
{
"key": "Blended",
"name": "Blended Production Figures",
"blended": true,
"forecast": false,
"actual": false,
"field": false,
"financial": false,
"curtailed": true
},
{
"key": "Field Est",
"name": "Production Field Estimate",
"blended": false,
"forecast": false,
"actual": false,
"field": true,
"financial": false,
"curtailed": false
},
{
"key": "Fin Actls",
"name": "Production Actuals - Financial",
"blended": false,
"forecast": false,
"actual": true,
"field": false,
"financial": true,
"curtailed": false
},
{
"key": "Fin Blend",
"name": "Blended Production - Financial",
"blended": true,
"forecast": false,
"actual": false,
"field": false,
"financial": true,
"curtailed": false
},
{
"key": "Forecast",
"name": "Production Forecast",
"blended": false,
"forecast": true,
"actual": false,
"field": false,
"financial": false,
"curtailed": true
}
],
"definitions": [
{
"name": "Gross Risked Raw",
"wi": false,
"risk": true,
"shrinkage": false,
"royalty": false
},
{
"name": "Gross Risked Shrunk",
"wi": false,
"risk": true,
"shrinkage": true,
"royalty": false
},
{
"name": "Gross Unrisked Raw",
"wi": false,
"risk": false,
"shrinkage": false,
"royalty": false
},
{
"name": "Gross Unrisked Shrunk",
"wi": false,
"risk": false,
"shrinkage": true,
"royalty": false
},
{
"name": "Net Risked After Royalty",
"wi": true,
"risk": true,
"shrinkage": true,
"royalty": true
},
{
"name": "Net Risked Raw",
"wi": true,
"risk": true,
"shrinkage": false,
"royalty": false
},
{
"name": "Net Risked Sales",
"wi": true,
"risk": true,
"shrinkage": true,
"royalty": false
},
{
"name": "Net Unrisked After Royalty",
"wi": true,
"risk": false,
"shrinkage": true,
"royalty": true
},
{
"name": "Net Unrisked Raw",
"wi": true,
"risk": false,
"shrinkage": false,
"royalty": false
},
{
"name": "Net Unrisked Sales",
"wi": true,
"risk": false,
"shrinkage": true,
"royalty": false
}
],
"units": [
"mcfe",
"boe",
"GJe",
"mmcfe",
"mboe",
"bcfe",
"mmboe"
]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment