Skip to content

Commit a31e8b3

Browse files
Merge pull request #590 from HubSpot/feature/crmExportsDiscovery
Added CRM Exports discovery
2 parents 0469802 + 555f280 commit a31e8b3

File tree

4 files changed

+58
-0
lines changed

4 files changed

+58
-0
lines changed

Diff for: src/discovery/crm/CrmDiscovery.ts

+15
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import type CommerceDiscovery from './commerce/CommerceDiscovery'
44
import type CompaniesDiscovery from './companies/CompaniesDiscovery'
55
import type ContactsDiscovery from './contacts/ContactsDiscovery'
66
import type DealsDiscovery from './deals/DealsDiscovery'
7+
import type ExportsDiscovery from './exports/ExportsDiscovery'
78
import type ExtensionsDiscovery from './extensions/ExtensionsDiscovery'
89
import type ImportsDiscovery from './imports/ImportsDiscovery'
910
import type LineItemsDiscovery from './line_items/LineItemsDiscovery'
@@ -24,6 +25,7 @@ export default class CrmDiscovery extends BaseDiscovery {
2425
protected _companies: CompaniesDiscovery | undefined
2526
protected _contacts: ContactsDiscovery | undefined
2627
protected _deals: DealsDiscovery | undefined
28+
protected _exports: ExportsDiscovery | undefined
2729
protected _extensions: ExtensionsDiscovery | undefined
2830
protected _imports: ImportsDiscovery | undefined
2931
protected _lineItems: LineItemsDiscovery | undefined
@@ -103,6 +105,19 @@ export default class CrmDiscovery extends BaseDiscovery {
103105
return this._deals
104106
}
105107

108+
/**
109+
* Getter
110+
* @returns ExportsDiscovery
111+
*/
112+
get exports() {
113+
if (!this._exports) {
114+
const requiredClass = require('./exports/ExportsDiscovery')
115+
this._exports = new requiredClass.default(this.config) as ExportsDiscovery
116+
}
117+
118+
return this._exports
119+
}
120+
106121
/**
107122
* Getter
108123
* @returns ExtensionsDiscovery

Diff for: src/discovery/crm/exports/ExportsDiscovery.ts

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import {
2+
PublicExportsApi,
3+
RequestContext,
4+
ResponseContext,
5+
ServerConfiguration,
6+
createConfiguration,
7+
} from '../../../../codegen/crm/exports/index'
8+
import { ApiClientConfigurator } from '../../../configuration/ApiClientConfigurator'
9+
import ApiDecoratorService from '../../../services/ApiDecoratorService'
10+
import IConfiguration from '../../../configuration/IConfiguration'
11+
import { Observable } from '../../../../codegen/crm/exports/rxjsStub'
12+
13+
export default class ExportsDiscovery {
14+
public publicExportsApi: PublicExportsApi
15+
16+
constructor(config: IConfiguration) {
17+
const configuration = createConfiguration(
18+
ApiClientConfigurator.getParams<
19+
RequestContext,
20+
ResponseContext,
21+
Observable<RequestContext>,
22+
Observable<ResponseContext>,
23+
ServerConfiguration<Record<string, string>>
24+
>(config, ServerConfiguration, Observable, Observable),
25+
)
26+
27+
this.publicExportsApi = ApiDecoratorService.getInstance().apply<PublicExportsApi>(
28+
new PublicExportsApi(configuration),
29+
)
30+
}
31+
}

Diff for: test/spec/crm/crm.spec.ts

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import CommerceDiscovery from '../../../src/discovery/crm/commerce/CommerceDisco
44
import CompaniesDiscovery from '../../../src/discovery/crm/companies/CompaniesDiscovery'
55
import ContactsDiscovery from '../../../src/discovery/crm/contacts/ContactsDiscovery'
66
import DealsDiscovery from '../../../src/discovery/crm/deals/DealsDiscovery'
7+
import ExportsDiscovery from '../../../src/discovery/crm/exports/ExportsDiscovery'
78
import ExtensionsDiscovery from '../../../src/discovery/crm/extensions/ExtensionsDiscovery'
89
import ImportsDiscovery from '../../../src/discovery/crm/imports/ImportsDiscovery'
910
import LineItemsDiscovery from '../../../src/discovery/crm/line_items/LineItemsDiscovery'
@@ -26,6 +27,7 @@ describe('api client', () => {
2627
expect(CompaniesDiscovery.name).toBe(client.companies.constructor.name)
2728
expect(ContactsDiscovery.name).toBe(client.contacts.constructor.name)
2829
expect(DealsDiscovery.name).toBe(client.deals.constructor.name)
30+
expect(ExportsDiscovery.name).toBe(client.exports.constructor.name)
2931
expect(ExtensionsDiscovery.name).toBe(client.extensions.constructor.name)
3032
expect(ImportsDiscovery.name).toBe(client.imports.constructor.name)
3133
expect(LineItemsDiscovery.name).toBe(client.lineItems.constructor.name)

Diff for: test/spec/crm/exports/exports.spec.ts

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Client } from '../../../../index'
2+
import { PublicExportsApi } from '../../../../codegen/crm/exports/index'
3+
4+
describe('api client', () => {
5+
it('is discoverable', () => {
6+
const client = new Client().crm.exports
7+
expect(Object.prototype.hasOwnProperty.call(client, 'publicExportsApi')).toBeTruthy()
8+
expect(PublicExportsApi.name).toBe(client.publicExportsApi.constructor.name)
9+
})
10+
})

0 commit comments

Comments
 (0)