diff --git a/config/ci_test.yaml.example b/config/ci_test.yaml.example index 4a6d58584c241d0fdb69859df7a45cad4939bcc8..e532112d09250f186c9f60e7c243daee56b01b5f 100644 --- a/config/ci_test.yaml.example +++ b/config/ci_test.yaml.example @@ -93,6 +93,16 @@ schema: - "dim:6" metrics: - "met:9" + - + alias: "view 9" + data: "test/postgres/fixtures/view9.json" + origin: false + dimensions: + - "dim:2" + metrics: + - "met:5" + - "met:6" + - "met:7" metrics: - name: "met:0" diff --git a/src/adapter/postgres.spec.ts b/src/adapter/postgres.spec.ts index 8b77b18409a350412f1b99eceac53c716f45a535..7f1367bcc50919fa32d480375b260bd29bd84841 100644 --- a/src/adapter/postgres.spec.ts +++ b/src/adapter/postgres.spec.ts @@ -298,4 +298,23 @@ describe("postgres adapter", () => { done(); }); }); + + it("should get data using COUNT when the view is not origin", (done) => { + let view = adapterScenario.notOriginCount; + adapter.getDataFromView(view, (err, result) => { + expect(err).to.be.a("null"); + expect(result).to.be.an("array"); + expect(result).to.have.length(5); + expect(result[0]).to.be.an("object"); + let keys: string[] = []; + keys = keys.concat(view.metrics.map((item) => item.name)); + keys = keys.concat(view.dimensions.map((item) => item.name)); + result.forEach((row) => { + expect(row).to.be.an("object"); + expect(row).to.have.all.keys(keys); + }); + + done(); + }); + }); }); diff --git a/test/postgres/fixtures/view9.json b/test/postgres/fixtures/view9.json new file mode 100644 index 0000000000000000000000000000000000000000..4c5726a8f1f56fd49e1c96971a4fa580b1640d9b --- /dev/null +++ b/test/postgres/fixtures/view9.json @@ -0,0 +1,7 @@ +[ +{"dim:2":"1","met:5":"1","met:6":"1","met:7":"1"}, +{"dim:2":"2","met:5":"2","met:6":"1","met:7":"1"}, +{"dim:2":"3","met:5":"3","met:6":"1","met:7":"1"}, +{"dim:2":"4","met:5":"4","met:6":"1","met:7":"1"}, +{"dim:2":"5","met:5":"5","met:6":"1","met:7":"1"} +] diff --git a/test/scenario.ts b/test/scenario.ts index fa42a2207b4a37b80c3f5a0ad26d3ae31738fc62..19330b498258c9f25e62202e57b628d82df87227 100644 --- a/test/scenario.ts +++ b/test/scenario.ts @@ -51,6 +51,7 @@ interface AdapterScenario { gtltView: View; geleView: View; notMatchFilterView: View; + notOriginCount: View; } interface DataCtrlScenario { @@ -299,6 +300,13 @@ const withSelView = new View({ childViews: [views[0], views[4]] }); +const notOriginCount = new View({ + metrics: [mets[5], mets[6], mets[7]], + dimensions: [dims[2]], + materialized: true, + origin: false +}); + export const engineScenario: EngineScenario = { metrics: mets, dimensions: dims, @@ -322,7 +330,8 @@ export const adapterScenario: AdapterScenario = { notEqualView: notEqualView, gtltView: gtltView, geleView: geleView, - notMatchFilterView: notMatchFilterView + notMatchFilterView: notMatchFilterView, + notOriginCount: notOriginCount }; export const dataCtrlScenario: DataCtrlScenario = {