Skip to content

Commit a51696e

Browse files
committed
add tests
1 parent c8000aa commit a51696e

File tree

2 files changed

+130
-0
lines changed

2 files changed

+130
-0
lines changed

packages/cubejs-schema-compiler/test/integration/postgres/yaml-compiler.test.ts

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -675,4 +675,86 @@ views:
675675
}]
676676
);
677677
});
678+
679+
it('calling cube\'s sql()', async () => {
680+
const { compiler, joinGraph, cubeEvaluator } = prepareYamlCompiler(
681+
`cubes:
682+
- name: simple_orders
683+
sql: >
684+
SELECT 1 AS id, 100 AS amount, 'new' status, '2025-04-15'::TIMESTAMP AS created_at
685+
UNION ALL
686+
SELECT 2 AS id, 200 AS amount, 'new' status, '2025-04-16'::TIMESTAMP AS created_at
687+
UNION ALL
688+
SELECT 3 AS id, 300 AS amount, 'processed' status, '2025-04-17'::TIMESTAMP AS created_at
689+
UNION ALL
690+
SELECT 4 AS id, 500 AS amount, 'processed' status, '2025-04-18'::TIMESTAMP AS created_at
691+
UNION ALL
692+
SELECT 5 AS id, 600 AS amount, 'shipped' status, '2025-04-19'::TIMESTAMP AS created_at
693+
694+
measures:
695+
- name: count
696+
type: count
697+
- name: total_amount
698+
sql: amount
699+
type: sum
700+
701+
dimensions:
702+
- name: status
703+
sql: status
704+
type: string
705+
706+
- name: simple_orders_sql_ext
707+
708+
sql: >
709+
SELECT * FROM ({simple_orders.sql()}) as parent
710+
WHERE status = 'new'
711+
712+
measures:
713+
- name: count
714+
type: count
715+
716+
- name: total_amount
717+
sql: amount
718+
type: sum
719+
720+
dimensions:
721+
- name: id
722+
sql: id
723+
type: number
724+
primary_key: true
725+
726+
- name: created_at
727+
sql: created_at
728+
type: time
729+
`
730+
);
731+
732+
await compiler.compile();
733+
734+
const query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, {
735+
measures: ['simple_orders_sql_ext.count'],
736+
timeDimensions: [{
737+
dimension: 'simple_orders_sql_ext.created_at',
738+
granularity: 'day',
739+
dateRange: ['2025-04-01', '2025-05-01']
740+
}],
741+
timezone: 'UTC',
742+
preAggregationsSchema: ''
743+
});
744+
745+
const res = await dbRunner.evaluateQueryWithPreAggregations(query);
746+
747+
expect(res).toEqual(
748+
[
749+
{
750+
simple_orders_sql_ext__count: '1',
751+
simple_orders_sql_ext__created_at_day: '2025-04-15T00:00:00.000Z',
752+
},
753+
{
754+
simple_orders_sql_ext__count: '1',
755+
simple_orders_sql_ext__created_at_day: '2025-04-16T00:00:00.000Z',
756+
}
757+
]
758+
);
759+
});
678760
});

packages/cubejs-schema-compiler/test/unit/yaml-schema.test.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,4 +581,52 @@ describe('Yaml Schema Testing', () => {
581581
await compiler.compile();
582582
});
583583
});
584+
585+
it('calling cube\'s sql()', async () => {
586+
const { compiler } = prepareYamlCompiler(
587+
`cubes:
588+
- name: simple_orders
589+
sql: >
590+
SELECT 1 AS id, 100 AS amount, 'new' status, now() AS created_at
591+
592+
measures:
593+
- name: count
594+
type: count
595+
- name: total_amount
596+
sql: amount
597+
type: sum
598+
599+
dimensions:
600+
- name: status
601+
sql: status
602+
type: string
603+
604+
- name: simple_orders_sql_ext
605+
606+
sql: >
607+
SELECT * FROM {simple_orders.sql()}
608+
WHERE status = 'processed'
609+
610+
measures:
611+
- name: count
612+
type: count
613+
614+
- name: total_amount
615+
sql: amount
616+
type: sum
617+
618+
dimensions:
619+
- name: id
620+
sql: id
621+
type: number
622+
primary_key: true
623+
624+
- name: created_at
625+
sql: created_at
626+
type: time
627+
`
628+
);
629+
630+
await compiler.compile();
631+
});
584632
});

0 commit comments

Comments
 (0)