Files
rudder-js-sdk/test/PublicApi.test.ts
T

91 lines
2.8 KiB
TypeScript
Raw Permalink Normal View History

2026-08-12 14:02:25 +03:00
import { describe, expect, it } from 'vitest';
import * as sdk from '../src/index.js';
import { RudderClient } from '../src/index.js';
describe('public API surface', () => {
it('does not expose scenario runtime types from the root package', () => {
expect('ScenarioService' in sdk).toBe(false);
expect('NotificationSession' in sdk).toBe(false);
expect('StoreSession' in sdk).toBe(false);
expect('WaitSession' in sdk).toBe(false);
expect('LeaderboardSession' in sdk).toBe(false);
expect('PlanRun' in sdk).toBe(false);
expect('createIndexedDbPlanStateStore' in sdk).toBe(false);
});
it('keeps helpers, domain classes, and service constructors out of the barrel', () => {
// Device id helper — internal.
expect('getOrCreateDeviceId' in sdk).toBe(false);
// Domain classes — exported as types only.
for (const name of [
'PlayerDomain',
'CatalogDomain',
'InventoryDomain',
'ConfigDomain',
'StorageDomain',
'StoresDomain',
]) {
expect(name in sdk).toBe(false);
}
// Service constructors — exported as types only.
for (const name of [
'AuthService',
'LeaderboardsService',
'LeaderboardHandle',
'BattlePassService',
'BattlepassService',
'QuestsService',
]) {
expect(name in sdk).toBe(false);
}
});
it('exposes the expected value exports', () => {
for (const name of [
'RudderClient',
'RudderError',
'RudderNetworkError',
'RudderHttpError',
'RudderAuthError',
'SDK_ERROR_INVALID_OPTIONS',
'RudderErrorCodes',
'createDefaultTokenStore',
'createLocalStorageTokenStore',
'SyncedState',
'RemoteConfigState',
'ShopHandle',
'OfferHandle',
]) {
expect(name in sdk, name).toBe(true);
}
});
it('exposes effects without a public scenarios service on the client', () => {
const client = new RudderClient({
baseUrl: 'https://api.test.rudder.build',
projectKey: 'test-project',
runtime: { loginEvent: null },
2026-08-12 14:02:25 +03:00
});
expect(client.effects).toBeDefined();
expect('scenarios' in client).toBe(false);
});
it('uses the canonical glossary property names on the client', () => {
const client = new RudderClient({
baseUrl: 'https://api.test.rudder.build',
projectKey: 'test-project',
runtime: { loginEvent: null },
2026-08-12 14:02:25 +03:00
});
expect(client.remoteConfig).toBeDefined();
expect('config' in client).toBe(false);
expect(client.battlePass).toBeDefined();
expect('battlepass' in client).toBe(false);
expect(typeof client.effects.onBattlePass).toBe('function');
expect(typeof client.effects.onBattlePassLevel).toBe('function');
expect('onBattlepass' in client.effects).toBe(false);
expect('onBattlepassLevel' in client.effects).toBe(false);
});
});