feat: adding fullstory sdk package files
This commit is contained in:
70
tests/index.test.ts
Normal file
70
tests/index.test.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
|
||||
import { jest } from '@jest/globals';
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
|
||||
// Create mock functions with explicit types
|
||||
const mockUploadAssets = jest.fn<() => Promise<{ success: boolean }>>().mockResolvedValue({ success: true });
|
||||
const mockFullStoryUploader = jest.fn().mockImplementation(() => ({
|
||||
uploadAssets: mockUploadAssets,
|
||||
}));
|
||||
|
||||
// Mock modules before importing the index
|
||||
jest.mock('../src/fullstoryUploader', () => ({
|
||||
__esModule: true,
|
||||
default: mockFullStoryUploader,
|
||||
}));
|
||||
|
||||
// Import the module under test
|
||||
import { uploadAssets } from '../src/index';
|
||||
|
||||
describe('Index Module', () => {
|
||||
const testAssetMapPath = path.resolve(__dirname, 'test-asset-map.json');
|
||||
const testApiKey = 'test-api-key';
|
||||
|
||||
beforeAll(() => {
|
||||
const testAssetMap = {
|
||||
assets: [
|
||||
{ id: 'asset1', path: './asset1.js' },
|
||||
{ id: 'asset2', path: './asset2.css' },
|
||||
],
|
||||
};
|
||||
|
||||
fs.writeFileSync(testAssetMapPath, JSON.stringify(testAssetMap, null, 2));
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
if (fs.existsSync(testAssetMapPath)) {
|
||||
fs.unlinkSync(testAssetMapPath);
|
||||
}
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
it('should initialize FullStoryUploader with correct params and call uploadAssets', async () => {
|
||||
const result = await uploadAssets(testApiKey, testAssetMapPath);
|
||||
|
||||
expect(mockFullStoryUploader).toHaveBeenCalledWith({
|
||||
apiKey: testApiKey,
|
||||
assetMapPath: testAssetMapPath,
|
||||
});
|
||||
|
||||
expect(mockUploadAssets).toHaveBeenCalled();
|
||||
expect(result).toEqual({ success: true });
|
||||
});
|
||||
|
||||
it('should propagate errors from FullStoryUploader.uploadAssets', async () => {
|
||||
const testError = new Error('Upload failed');
|
||||
mockUploadAssets.mockRejectedValueOnce(testError);
|
||||
|
||||
await expect(uploadAssets(testApiKey, testAssetMapPath)).rejects.toThrow(testError);
|
||||
|
||||
expect(mockFullStoryUploader).toHaveBeenCalledWith({
|
||||
apiKey: testApiKey,
|
||||
assetMapPath: testAssetMapPath,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user