Created
May 9, 2012 18:05
-
-
Save andyczerwonka/2647420 to your computer and use it in GitHub Desktop.
Specs2 test for parsing JSON and extracting into a case class
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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