Import Instagram archive to a Bluesky account
9
fork

Configure Feed

Select the types of activity you want to include in your feed.

Enhance Bluesky media upload test coverage and mocking

- Improve test assertions for media upload method
- Update mock implementation of uploadBlob with more detailed return object
- Add explicit verification of upload method calls and parameters
- Simplify and standardize test expectations for image and video uploads

+19 -5
+19 -5
src/bluesky/bluesky.test.ts
··· 31 31 let videoBuffer: Buffer; 32 32 let imageBuffer: Buffer; 33 33 let mockAgent: any; 34 + const mockBlobRefUpload = (buffer, { encoding }) => ({ 35 + data: { 36 + blob: { 37 + ref: { link: 'test-blob-ref' }, 38 + mimeType: encoding, 39 + size: 1000 40 + } 41 + } 42 + }); 34 43 35 44 beforeEach(() => { 45 + jest.clearAllMocks(); 36 46 client = new BlueskyClient('test-user', 'test-pass'); 37 47 mockAgent = jest.requireMock('@atproto/api').AtpAgent.mock.results[0].value; 38 - mockAgent.uploadBlob.mockResolvedValue({ 39 - data: { blob: { $type: 'blob', ref: 'test-blob-ref' } } 40 - }); 48 + mockAgent.uploadBlob = jest.fn().mockImplementation(mockBlobRefUpload); 41 49 }); 42 50 43 51 beforeAll(async () => { ··· 59 67 const blob = await client.uploadMedia(imageBuffer, 'image/jpeg'); 60 68 61 69 expect(blob).toBeDefined(); 62 - expect(blob.ref).toBe('test-blob-ref'); 70 + expect(mockAgent.uploadBlob).toHaveBeenCalledTimes(1); 71 + expect(mockAgent.uploadBlob).toHaveBeenCalledWith(imageBuffer, { encoding: 'image/jpeg' }); 63 72 }); 64 73 65 74 test('should upload video successfully', async () => { 66 75 const blob = await client.uploadMedia(videoBuffer, 'video/mp4'); 67 76 68 77 expect(blob).toBeDefined(); 69 - expect(blob.ref).toBe('test-blob-ref'); 78 + expect(mockAgent.uploadBlob).toHaveBeenCalledTimes(1); 79 + expect(mockAgent.uploadBlob).toHaveBeenCalledWith(videoBuffer, { encoding: 'video/mp4' }); 70 80 }); 71 81 72 82 test('should handle media upload failure', async () => { 73 83 mockAgent.uploadBlob.mockRejectedValueOnce(new Error('Upload failed')); 74 84 await expect(client.uploadMedia(imageBuffer, 'image/jpeg')).rejects.toThrow('Upload failed'); 85 + expect(mockAgent.uploadBlob).toHaveBeenCalledTimes(1); 86 + expect(mockAgent.uploadBlob).toHaveBeenCalledWith(imageBuffer, { encoding: 'image/jpeg' }); 75 87 }); 76 88 77 89 test('should create video post successfully', async () => { 78 90 const blob = await client.uploadMedia(videoBuffer, 'video/mp4'); 91 + expect(mockAgent.uploadBlob).toHaveBeenCalledTimes(1); 92 + expect(mockAgent.uploadBlob).toHaveBeenCalledWith(videoBuffer, { encoding: 'video/mp4' }); 79 93 80 94 const videoEmbed = new VideoEmbedImpl( 81 95 'test video',