The current app at root of repo is for single frictionless dataset. Should be in its own example so we have space going forward for multiple example and for root to have core portal.js code. * Also refactor its README (moved from root) to reflect it is just an example * Move design content from the root README.md into DESIGN.md * Stub a new root README.md based largely on examples/catalog/README.md
78 lines
3.0 KiB
JavaScript
78 lines
3.0 KiB
JavaScript
import path from 'path'
|
|
import { getDataset } from "../../lib/dataset"
|
|
import { addView, getDataForViewSpec } from '../../lib/utils'
|
|
const plotlyDatasetsDirectory = path.join(process.cwd(), 'fixtures', 'datasetsPlotlyView')
|
|
const vegaDatasetsDirectory = path.join(process.cwd(), 'fixtures', 'datasetsVegaView')
|
|
const doubleDatasetsDirectory = path.join(process.cwd(), 'fixtures', 'datasetsDoubleView')
|
|
|
|
let plotlyDataset
|
|
let vegaDataset
|
|
let doubleDataset
|
|
let plotlyDatasetWithView
|
|
let vegaDatasetWithView
|
|
let doubleDatasetWithView
|
|
|
|
beforeAll(async () => {
|
|
plotlyDataset = await getDataset(plotlyDatasetsDirectory)
|
|
vegaDataset = await getDataset(vegaDatasetsDirectory)
|
|
doubleDataset = await getDataset(doubleDatasetsDirectory)
|
|
|
|
plotlyDatasetWithView = addView(plotlyDataset)
|
|
vegaDatasetWithView = addView(vegaDataset)
|
|
doubleDatasetWithView = addView(doubleDataset)
|
|
});
|
|
|
|
|
|
describe("AddView", () => {
|
|
it("_value field is added to Plotly datapackage", () => {
|
|
const resource = plotlyDatasetWithView.props.dataset.resources[0]
|
|
expect("_values" in resource).toBe(true)
|
|
expect(resource["_values"].length > 0).toBe(true)
|
|
});
|
|
it("Plotly spec is added to datapackage", () => {
|
|
const spec = JSON.parse(plotlyDatasetWithView.props.specs)[0]
|
|
expect(spec.specType).toBe("plotly")
|
|
expect(spec.layout.title).toBe("Plotly Layout Title")
|
|
expect(spec.data[0].x.length).toBeGreaterThan(0)
|
|
expect(spec.data[0].y.length).toBeGreaterThan(0)
|
|
});
|
|
it("_value field is added to datapackage with double views", () => {
|
|
const resources = doubleDatasetWithView.props.dataset.resources
|
|
resources.map((resource) => {
|
|
expect("_values" in resource).toBe(true)
|
|
expect(resource["_values"].length > 0).toBe(true)
|
|
})
|
|
|
|
});
|
|
it("view spec is created for each view in a datapackage", () => {
|
|
const specs = JSON.parse(doubleDatasetWithView.props.specs)
|
|
const simpleSpec = specs[0]
|
|
const plotlySpec = specs[1]
|
|
|
|
expect(simpleSpec.specType).toBe("simple")
|
|
expect(simpleSpec.layout.title).toBe("title1")
|
|
expect(simpleSpec.data[0].x.length).toBeGreaterThan(0)
|
|
expect(simpleSpec.data[0].y.length).toBeGreaterThan(0)
|
|
|
|
expect(plotlySpec.specType).toBe("plotly")
|
|
expect(plotlySpec.layout.title).toBe("Plotly Layout Title")
|
|
expect(plotlySpec.data[0].x.length).toBeGreaterThan(0)
|
|
expect(plotlySpec.data[0].y.length).toBeGreaterThan(0)
|
|
|
|
});
|
|
});
|
|
|
|
describe("getDataForViewSpec", () => {
|
|
it("Generates right data for vega spec", ()=>{
|
|
const resource = vegaDataset.resources[0]
|
|
const data = getDataForViewSpec(resource, "vega")
|
|
expect(data).toStrictEqual(resource.sample)
|
|
})
|
|
it("Generates right data for plotly spec", ()=>{
|
|
const resource = plotlyDataset.resources[0]
|
|
const data = getDataForViewSpec(resource, "plotly")
|
|
expect(data).not.toStrictEqual(resource.sample[0])
|
|
expect(data[0]).toStrictEqual(Object.keys(resource.sample[0]))
|
|
})
|
|
|
|
}) |