@@ -47,7 +47,7 @@ cube(\`Orders\`, {
4747 measures: {
4848 count: {
4949 type: \`count\`,
50- drillMembers: [id, createdAt]
50+ drillMembers: [id, createdAt, Products.ProductCategories.name ]
5151 },
5252
5353 runningTotal: {
@@ -183,6 +183,10 @@ cube(\`ProductCategories\`, {
183183 measures: {
184184 count: {
185185 type: \`count\`,
186+ },
187+ count2: {
188+ type: \`count\`,
189+ drillMembers: [id, name]
186190 }
187191 },
188192
@@ -262,7 +266,28 @@ view(\`OrdersSimpleView\`, {
262266 includes: ['createdAt', 'count']
263267 }]
264268});
265- ` ) ;
269+
270+ view(\`OrdersViewDrillMembers\`, {
271+ cubes: [{
272+ join_path: Orders,
273+ includes: ['createdAt', 'count']
274+ }, {
275+ join_path: Orders.Products.ProductCategories,
276+ includes: ['name', 'count2']
277+ }]
278+ });
279+
280+ view(\`OrdersViewDrillMembersWithPrefix\`, {
281+ cubes: [{
282+ join_path: Orders,
283+ includes: ['createdAt', 'count']
284+ }, {
285+ join_path: Orders.Products.ProductCategories,
286+ includes: ['name', 'count2'],
287+ prefix: true
288+ }]
289+ });
290+ ` ) ;
266291
267292 async function runQueryTest ( q : any , expectedResult : any , additionalTest ?: ( query : BaseQuery ) => any ) {
268293 await compiler . compile ( ) ;
@@ -441,10 +466,10 @@ view(\`OrdersSimpleView\`, {
441466 await compiler . compile ( ) ;
442467 const cube = metaTransformer . cubes . find ( c => c . config . name === 'OrdersView' ) ;
443468 const countMeasure = cube . config . measures . find ( ( m ) => m . name === 'OrdersView.count' ) ;
444- expect ( countMeasure . drillMembers ) . toEqual ( [ 'OrdersView.id' , 'OrdersView.createdAt ' ] ) ;
469+ expect ( countMeasure . drillMembers ) . toEqual ( [ 'OrdersView.id' , 'OrdersView.ProductCategories_name ' ] ) ;
445470 expect ( countMeasure . drillMembersGrouped ) . toEqual ( {
446471 measures : [ ] ,
447- dimensions : [ 'OrdersView.id' , 'OrdersView.createdAt ' ]
472+ dimensions : [ 'OrdersView.id' , 'OrdersView.ProductCategories_name ' ]
448473 } ) ;
449474 } ) ;
450475
@@ -454,7 +479,7 @@ view(\`OrdersSimpleView\`, {
454479 // Check that the source Orders cube has drill members
455480 const sourceOrdersCube = metaTransformer . cubes . find ( c => c . config . name === 'Orders' ) ;
456481 const sourceCountMeasure = sourceOrdersCube . config . measures . find ( ( m ) => m . name === 'Orders.count' ) ;
457- expect ( sourceCountMeasure . drillMembers ) . toEqual ( [ 'Orders.id' , 'Orders.createdAt' ] ) ;
482+ expect ( sourceCountMeasure . drillMembers ) . toEqual ( [ 'Orders.id' , 'Orders.createdAt' , 'ProductCategories.name' ] ) ;
458483
459484 // Check that the OrdersView cube inherits these drill members with correct naming
460485 const viewCube = metaTransformer . cubes . find ( c => c . config . name === 'OrdersView' ) ;
@@ -498,4 +523,42 @@ view(\`OrdersSimpleView\`, {
498523 dimensions : [ 'OrdersSimpleView.createdAt' ]
499524 } ) ;
500525 } ) ;
526+
527+ it ( 'verify drill member inheritance functionality (with transitive joins)' , async ( ) => {
528+ await compiler . compile ( ) ;
529+
530+ // Check that the OrdersView cube inherits these drill members with correct naming
531+ const viewCube = metaTransformer . cubes . find ( c => c . config . name === 'OrdersViewDrillMembers' ) ;
532+
533+ const viewCountMeasure = viewCube . config . measures . find ( ( m ) => m . name === 'OrdersViewDrillMembers.count' ) ;
534+ expect ( viewCountMeasure . drillMembers ) . toBeDefined ( ) ;
535+ expect ( Array . isArray ( viewCountMeasure . drillMembers ) ) . toBe ( true ) ;
536+ expect ( viewCountMeasure . drillMembers . length ) . toEqual ( 2 ) ;
537+ expect ( viewCountMeasure . drillMembers ) . toEqual ( [ 'OrdersViewDrillMembers.createdAt' , 'OrdersViewDrillMembers.name' ] ) ;
538+
539+ const viewCount2Measure = viewCube . config . measures . find ( ( m ) => m . name === 'OrdersViewDrillMembers.count2' ) ;
540+ expect ( viewCount2Measure . drillMembers ) . toBeDefined ( ) ;
541+ expect ( Array . isArray ( viewCount2Measure . drillMembers ) ) . toBe ( true ) ;
542+ expect ( viewCount2Measure . drillMembers . length ) . toEqual ( 1 ) ;
543+ expect ( viewCount2Measure . drillMembers ) . toContain ( 'OrdersViewDrillMembers.name' ) ;
544+ } ) ;
545+
546+ it ( 'verify drill member inheritance functionality (with transitive joins + prefix)' , async ( ) => {
547+ await compiler . compile ( ) ;
548+
549+ // Check that the OrdersView cube inherits these drill members with correct naming
550+ const viewCube = metaTransformer . cubes . find ( c => c . config . name === 'OrdersViewDrillMembersWithPrefix' ) ;
551+
552+ const viewCountMeasure = viewCube . config . measures . find ( ( m ) => m . name === 'OrdersViewDrillMembersWithPrefix.count' ) ;
553+ expect ( viewCountMeasure . drillMembers ) . toBeDefined ( ) ;
554+ expect ( Array . isArray ( viewCountMeasure . drillMembers ) ) . toBe ( true ) ;
555+ expect ( viewCountMeasure . drillMembers . length ) . toEqual ( 2 ) ;
556+ expect ( viewCountMeasure . drillMembers ) . toEqual ( [ 'OrdersViewDrillMembersWithPrefix.createdAt' , 'OrdersViewDrillMembersWithPrefix.ProductCategories_name' ] ) ;
557+
558+ const viewCount2Measure = viewCube . config . measures . find ( ( m ) => m . name === 'OrdersViewDrillMembersWithPrefix.ProductCategories_count2' ) ;
559+ expect ( viewCount2Measure . drillMembers ) . toBeDefined ( ) ;
560+ expect ( Array . isArray ( viewCount2Measure . drillMembers ) ) . toBe ( true ) ;
561+ expect ( viewCount2Measure . drillMembers . length ) . toEqual ( 1 ) ;
562+ expect ( viewCount2Measure . drillMembers ) . toContain ( 'OrdersViewDrillMembersWithPrefix.ProductCategories_name' ) ;
563+ } ) ;
501564} ) ;
0 commit comments