Advertisement
Guest User

Untitled

a guest
Dec 29th, 2024
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.   it('should correctly identify itself using the USER_AGENT in the request header', async () => {
  2.     const secFetcher = new SECFetcher();
  3.     const mockGet = jest.spyOn(axios, 'get').mockResolvedValue({ data: 'test data' });
  4.  
  5.     const url = 'https://www.sec.gov/test';
  6.     const params = { param1: 'value1' };
  7.  
  8.     await secFetcher.request(url, params);
  9.  
  10.     expect(mockGet).toHaveBeenCalledWith(url, expect.objectContaining({
  11.       headers: expect.objectContaining({
  12.         'User-Agent': 'My Corp [email protected]'
  13.       })
  14.     }));
  15.  
  16.     mockGet.mockRestore();
  17.   });
  18.  
  19.   it('should use gzip compression in the request header', async () => {
  20.     const secFetcher = new SECFetcher();
  21.     const mockGet = jest.spyOn(axios, 'get').mockResolvedValue({ data: 'test data' });
  22.  
  23.     const url = 'https://www.sec.gov/test';
  24.     const params = { param1: 'value1' };
  25.  
  26.     await secFetcher.request(url, params);
  27.  
  28.     expect(mockGet).toHaveBeenCalledWith(url, expect.objectContaining({
  29.       headers: expect.objectContaining({
  30.         'Accept-Encoding': 'gzip, deflate, br'
  31.       })
  32.     }));
  33.  
  34.     mockGet.mockRestore();
  35.  
  36.   it('should handle multiple concurrent requests using requestBatch method', async () => {
  37.     const secFetcher = new SECFetcher();
  38.     const mockResponses = [
  39.       { data: 'response 1' },
  40.       { data: 'response 2' },
  41.       { data: 'response 3' }
  42.     ];
  43.     const mockRequest = jest.spyOn(secFetcher, 'request')
  44.       .mockImplementation((url, params) => Promise.resolve({ data: `response for ${url}` }));
  45.  
  46.     const urls = [
  47.       { url: 'https://www.sec.gov/url1', params: { param1: 'value1' } },
  48.       { url: 'https://www.sec.gov/url2', params: { param2: 'value2' } },
  49.       { url: 'https://www.sec.gov/url3', params: { param3: 'value3' } }
  50.     ];
  51.  
  52.     const result = await secFetcher.requestBatch(urls);
  53.  
  54.     expect(mockRequest).toHaveBeenCalledTimes(3);
  55.     expect(mockRequest).toHaveBeenNthCalledWith(1, 'https://www.sec.gov/url1', { param1: 'value1' });
  56.     expect(mockRequest).toHaveBeenNthCalledWith(2, 'https://www.sec.gov/url2', { param2: 'value2' });
  57.     expect(mockRequest).toHaveBeenNthCalledWith(3, 'https://www.sec.gov/url3', { param3: 'value3' });
  58.     expect(result).toEqual(['response for https://www.sec.gov/url1', 'response for https://www.sec.gov/url2', 'response for https://www.sec.gov/url3']);
  59.  
  60.     mockRequest.mockRestore();
  61.   });
  62.  
  63.   it('should return an empty array if any request in requestBatch fails', async () => {
  64.     const secFetcher = new SECFetcher();
  65.     const mockRequest = jest.spyOn(secFetcher, 'request');
  66.  
  67.     mockRequest.mockResolvedValueOnce({ data: 'response 1' });
  68.     mockRequest.mockRejectedValueOnce(new Error('Request failed'));
  69.     mockRequest.mockResolvedValueOnce({ data: 'response 3' });
  70.  
  71.     const urls = [
  72.       { url: 'https://www.sec.gov/url1', params: { param1: 'value1' } },
  73.       { url: 'https://www.sec.gov/url2', params: { param2: 'value2' } },
  74.       { url: 'https://www.sec.gov/url3', params: { param3: 'value3' } }
  75.     ];
  76.  
  77.     const result = await secFetcher.requestBatch(urls);
  78.  
  79.     expect(mockRequest).toHaveBeenCalledTimes(3);
  80.     expect(result).toEqual([]);
  81.  
  82.     mockRequest.mockRestore();
  83.   });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement