Skip to content

Instantly share code, notes, and snippets.

@chrislaskey
Created August 8, 2016 16:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chrislaskey/0b963092c24bc057681411c399b17e91 to your computer and use it in GitHub Desktop.
Save chrislaskey/0b963092c24bc057681411c399b17e91 to your computer and use it in GitHub Desktop.
Generate deserialized test fixtures objects from JSON:API response data
#!/usr/bin/env node
var fixtures = [
"spec/js/react/apps/fixtures/index.json",
"spec/js/react/apps/fixtures/show.json"
]
var fs = require("fs")
var Deserializer = require("jsonapi-serializer").Deserializer
var deserialize = new Deserializer({keyForAttribute: "camelCase"}).deserialize
var log = function (data) { console.log("[" + Date.now() + "] " + data) }
var template = function (data) {
var notice = "// This file is auto generated by spec/js/generate_fixtures.js\n"
var output = "export default "
return notice + output + data
}
var convert = function (file) {
var asString, asTemplate, outFile
log("Reading Data: " + file)
fs.readFile(file, "utf8", function(err, data){
if (err) { throw err }
log("Deserializing Data: " + file)
deserialize(JSON.parse(data)).then((result) => {
asString = JSON.stringify(result)
asTemplate = template(asString)
outFile = file.substring(0, file.length - 2)
log("Writing Output file: " + outFile)
fs.writeFile(outFile, asTemplate)
})
})
}
for (var i = 0; i < fixtures.length; i++) {
convert(fixtures[i])
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment