Skip to content

Commit a25da65

Browse files
author
Matt Mazzola
committed
Update mockApp to use proper interfaces and validation from powerbi-models.
1 parent 2587e26 commit a25da65

File tree

3 files changed

+31
-61
lines changed

3 files changed

+31
-61
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
"dependencies": {
6262
"http-post-message": "^0.1.0",
6363
"jsen": "^0.6.1",
64-
"powerbi-models": "^0.2.0",
64+
"powerbi-models": "^0.2.2",
6565
"powerbi-router": "^0.1.0",
6666
"window-post-message-proxy": "^0.1.0"
6767
},

test/utility/mockApp.ts

Lines changed: 19 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,46 @@
1-
/**
2-
* These are the methods that should be implemented and exposed in the PowerBI angular application which can be invoked from the ReportEmbed iframe.
3-
*/
4-
5-
export interface ILoad {
6-
reportId: string;
7-
accessToken: string;
8-
options: IOptions;
9-
}
10-
11-
export interface IOptions {
12-
filterPaneEnabled: boolean;
13-
pageNavigationEnabled: boolean;
14-
}
15-
16-
export interface IPage {
17-
name: string;
18-
displayName: string;
19-
}
20-
21-
export interface ITarget {
22-
// TODO?
23-
}
24-
25-
// TODO: Replace with actual filters from 'powerbi-filters' package
26-
export interface IFilter {
27-
// TODO?
28-
}
29-
30-
export interface IValidationResponse {
31-
errors: any[];
32-
}
1+
import * as models from 'powerbi-models';
332

343
export interface IApp {
354
// Load
36-
load(config: ILoad): Promise<void>;
37-
validateLoad(config: ILoad): Promise<IValidationResponse>;
5+
load(config: models.ILoadConfiguration): Promise<void>;
6+
validateLoad(config: models.ILoadConfiguration): Promise<models.IError[]>;
387
// Settings
39-
updateSettings(settings: IOptions): Promise<void>;
40-
validateSettings(settigns: IOptions): Promise<IValidationResponse>;
8+
updateSettings(settings: models.ISettings): Promise<void>;
9+
validateSettings(settigns: models.ISettings): Promise<models.IError[]>;
4110

4211
// Pages
43-
getPages(): Promise<IPage>;
12+
getPages(): Promise<models.IPage>;
4413
setPage(pageName: string): Promise<void>;
4514
togglePageNavigation(): Promise<void>;
46-
validatePage(page: IPage): Promise<IValidationResponse>;
15+
validatePage(page: models.IPage): Promise<models.IError[]>;
4716
// Filters
48-
validateFilter(filter: IFilter): Promise<IValidationResponse>;
49-
validateTarget(target: ITarget): Promise<IValidationResponse>;
50-
getFilters(target?: ITarget): Promise<IFilter[]>;
51-
addFilter(filter: IFilter, target?: ITarget): Promise<void>;
52-
updateFilter(filter: IFilter, target?: ITarget): Promise<void>;
53-
removeFilter(filter: IFilter, target?: ITarget): Promise<void>;
54-
clearFilters(target?: ITarget): Promise<void>;
17+
validateFilter(filter: models.IFilter): Promise<models.IError[]>;
18+
validateTarget(target: models.ITarget): Promise<models.IError[]>;
19+
getFilters(target?: models.ITarget): Promise<models.IFilter[]>;
20+
addFilter(filter: models.IFilter, target?: models.ITarget): Promise<void>;
21+
updateFilter(filter: models.IFilter, target?: models.ITarget): Promise<void>;
22+
removeFilter(filter: models.IFilter, target?: models.ITarget): Promise<void>;
23+
clearFilters(target?: models.ITarget): Promise<void>;
5524
toggleFilterPane(): Promise<void>;
5625
// Other
57-
exportData(target: ITarget): Promise<void>;
26+
exportData(target: models.ITarget): Promise<void>;
5827
}
5928

6029
export const mockAppSpyObj = {
6130
// Load
6231
load: jasmine.createSpy("load").and.returnValue(Promise.resolve(null)),
63-
validateLoad: jasmine.createSpy("validateLoad").and.returnValue(Promise.resolve(null)),
32+
validateLoad: jasmine.createSpy("validateLoad").and.callFake(models.validateLoad),
6433
// Settings
6534
updateSettings: jasmine.createSpy("updateSettings").and.returnValue(Promise.resolve(null)),
66-
validateSettings: jasmine.createSpy("validateSettings").and.returnValue(Promise.resolve(null)),
35+
validateSettings: jasmine.createSpy("validateSettings").and.callFake(models.validateSettings),
6736
// Pages
6837
getPages: jasmine.createSpy("getPages").and.returnValue(Promise.resolve(null)),
6938
setPage: jasmine.createSpy("setPage").and.returnValue(Promise.resolve(null)),
7039
togglePageNavigation: jasmine.createSpy("togglePageNavigation").and.returnValue(Promise.resolve(null)),
7140
validatePage: jasmine.createSpy("validatePage").and.returnValue(Promise.resolve(null)),
7241
// Filters
73-
validateFilter: jasmine.createSpy("validateFilter").and.returnValue(Promise.resolve(null)),
74-
validateTarget: jasmine.createSpy("validateTarget").and.returnValue(Promise.resolve(null)),
42+
validateFilter: jasmine.createSpy("validateFilter").and.callFake(models.validateFilter),
43+
validateTarget: jasmine.createSpy("validateTarget").and.callFake(models.validateTarget),
7544
getFilters: jasmine.createSpy("getFilters").and.returnValue(Promise.resolve(null)),
7645
addFilter: jasmine.createSpy("addFilter").and.returnValue(Promise.resolve(null)),
7746
updateFilter: jasmine.createSpy("updateFilter").and.returnValue(Promise.resolve(null)),

test/utility/mockReportEmbed.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import * as Wpmp from 'window-post-message-proxy';
22
import * as Hpm from 'http-post-message';
33
import * as Router from 'powerbi-router';
4+
import * as models from 'powerbi-models';
45
import { mockAppSpyObj, mockApp } from './mockApp';
56

67
export const spyApp = mockAppSpyObj;
@@ -192,7 +193,7 @@ export function setupMockApp(iframeContentWindow: Window, parentWindow: Window,
192193
*/
193194
router.get('/report/pages/:pageName/filters', (req, res) => {
194195
const pageName = req.params.pageName;
195-
const target = {
196+
const target: models.ITarget = {
196197
type: "page",
197198
name: pageName
198199
};
@@ -207,7 +208,7 @@ export function setupMockApp(iframeContentWindow: Window, parentWindow: Window,
207208
const reportId = req.headers['report-id'];
208209
const filter = req.body;
209210
const pageName = req.params.pageName;
210-
const target = {
211+
const target: models.ITarget = {
211212
type: "page",
212213
name: pageName
213214
};
@@ -236,7 +237,7 @@ export function setupMockApp(iframeContentWindow: Window, parentWindow: Window,
236237
const reportId = req.headers['report-id'];
237238
const filter = req.body;
238239
const pageName = req.params.pageName;
239-
const target = {
240+
const target: models.ITarget = {
240241
type: "page",
241242
name: pageName
242243
};
@@ -265,7 +266,7 @@ export function setupMockApp(iframeContentWindow: Window, parentWindow: Window,
265266
const reportId = req.headers['report-id'];
266267
const filter = req.body;
267268
const pageName = req.params.pageName;
268-
const target = {
269+
const target: models.ITarget = {
269270
type: "page",
270271
name: pageName
271272
};
@@ -292,7 +293,7 @@ export function setupMockApp(iframeContentWindow: Window, parentWindow: Window,
292293

293294
router.get('/report/visuals/:visualId/filters', (req, res) => {
294295
const visualId = req.params.visualId;
295-
const target = {
296+
const target: models.ITarget = {
296297
type: "visual",
297298
id: visualId
298299
};
@@ -307,7 +308,7 @@ export function setupMockApp(iframeContentWindow: Window, parentWindow: Window,
307308
const reportId = req.headers['report-id'];
308309
const filter = req.body;
309310
const visualId = req.params.visualId;
310-
const target = {
311+
const target: models.ITarget = {
311312
type: "visual",
312313
id: visualId
313314
};
@@ -336,7 +337,7 @@ export function setupMockApp(iframeContentWindow: Window, parentWindow: Window,
336337
const reportId = req.headers['report-id'];
337338
const filter = req.body;
338339
const visualId = req.params.visualId;
339-
const target = {
340+
const target: models.ITarget = {
340341
type: "visual",
341342
id: visualId
342343
};
@@ -365,7 +366,7 @@ export function setupMockApp(iframeContentWindow: Window, parentWindow: Window,
365366
const reportId = req.headers['report-id'];
366367
const filter = req.body;
367368
const visualId = req.params.visualId;
368-
const target = {
369+
const target: models.ITarget = {
369370
type: "visual",
370371
id: visualId
371372
};
@@ -422,9 +423,9 @@ export function setupMockApp(iframeContentWindow: Window, parentWindow: Window,
422423
* Phase 5
423424
*/
424425
router.get('/report/data', (req, res) => {
425-
const target = {
426+
const target: models.ITarget = {
426427
type: 'visual',
427-
visual: "xyz?"
428+
id: "xyz?"
428429
};
429430

430431
return app.exportData(target)

0 commit comments

Comments
 (0)