|
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'; |
33 | 2 |
|
34 | 3 | export interface IApp { |
35 | 4 | // 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[]>; |
38 | 7 | // 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[]>; |
41 | 10 |
|
42 | 11 | // Pages |
43 | | - getPages(): Promise<IPage>; |
| 12 | + getPages(): Promise<models.IPage>; |
44 | 13 | setPage(pageName: string): Promise<void>; |
45 | 14 | togglePageNavigation(): Promise<void>; |
46 | | - validatePage(page: IPage): Promise<IValidationResponse>; |
| 15 | + validatePage(page: models.IPage): Promise<models.IError[]>; |
47 | 16 | // 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>; |
55 | 24 | toggleFilterPane(): Promise<void>; |
56 | 25 | // Other |
57 | | - exportData(target: ITarget): Promise<void>; |
| 26 | + exportData(target: models.ITarget): Promise<void>; |
58 | 27 | } |
59 | 28 |
|
60 | 29 | export const mockAppSpyObj = { |
61 | 30 | // Load |
62 | 31 | 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), |
64 | 33 | // Settings |
65 | 34 | 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), |
67 | 36 | // Pages |
68 | 37 | getPages: jasmine.createSpy("getPages").and.returnValue(Promise.resolve(null)), |
69 | 38 | setPage: jasmine.createSpy("setPage").and.returnValue(Promise.resolve(null)), |
70 | 39 | togglePageNavigation: jasmine.createSpy("togglePageNavigation").and.returnValue(Promise.resolve(null)), |
71 | 40 | validatePage: jasmine.createSpy("validatePage").and.returnValue(Promise.resolve(null)), |
72 | 41 | // 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), |
75 | 44 | getFilters: jasmine.createSpy("getFilters").and.returnValue(Promise.resolve(null)), |
76 | 45 | addFilter: jasmine.createSpy("addFilter").and.returnValue(Promise.resolve(null)), |
77 | 46 | updateFilter: jasmine.createSpy("updateFilter").and.returnValue(Promise.resolve(null)), |
|
0 commit comments