whoami7 - Manager
:
/
home
/
topsuzmw
/
www
/
wp-content
/
plugins
/
extendify
/
src
/
Launch
/
api
/
__tests__
/
Upload File:
files >> /home/topsuzmw/www/wp-content/plugins/extendify/src/Launch/api/__tests__/getSiteLogo.test.js
import { getSiteLogo } from '@launch/api/DataApi'; const fallbackUrl = 'https://images.extendify-cdn.com/demo-content/logos/ext-custom-logo-default.webp'; const originalFetch = global.fetch; describe('getSiteLogo', () => { beforeEach(() => { global.fetch = jest.fn(); Object.defineProperty(global, 'window', { value: { extSharedData: { siteId: 'test-site', partnerId: 'test-partner', showAILogo: true, }, }, writable: true, }); }); afterEach(() => { jest.clearAllMocks(); global.fetch = originalFetch; }); it('returns logoUrl on successful fetch and valid JSON', async () => { global.fetch.mockResolvedValueOnce({ ok: true, json: () => ({ logoUrl: 'https://cdn/image.png' }), }); const result = await getSiteLogo('test-logo'); expect(result).toBe('https://cdn/image.png'); expect(global.fetch).toHaveBeenCalledTimes(1); }); it('returns fallback when showAILogo is false', async () => { global.window.extSharedData = { siteId: 'test-site', partnerId: 'test-partner', showAILogo: false, }; const result = await getSiteLogo('test-logo'); expect(result).toBe(fallbackUrl); expect(global.fetch).not.toHaveBeenCalled(); }); it('throws error when required parameters are missing', async () => { global.window.extSharedData = { siteId: '', partnerId: 'test-partner', showAILogo: true, }; await expect(getSiteLogo('test-logo')).rejects.toThrow( 'Missing required parameter (siteId, partnerId or objectName)', ); }); it('returns fallback on failed fetch and retry (non-ok response)', async () => { global.fetch .mockRejectedValueOnce(new Error('Network error')) .mockResolvedValueOnce({ ok: false }); const result = await getSiteLogo('test-logo'); expect(result).toBe(fallbackUrl); expect(global.fetch).toHaveBeenCalledTimes(2); }); it('returns fallback on JSON parse error', async () => { global.fetch.mockResolvedValueOnce({ ok: true, json: () => { throw new Error('Invalid JSON'); }, }); const result = await getSiteLogo('test-logo'); expect(result).toBe(fallbackUrl); }); describe('returns fallback when objectName is falsy', () => { it('returns fallback when objectName is null', async () => { const result = await getSiteLogo(null); expect(result).toBe(fallbackUrl); expect(global.fetch).not.toHaveBeenCalled(); }); it('returns fallback when objectName is undefined', async () => { const result = await getSiteLogo(undefined); expect(result).toBe(fallbackUrl); expect(global.fetch).not.toHaveBeenCalled(); }); it('returns fallback when objectName is an empty string', async () => { const result = await getSiteLogo(''); expect(result).toBe(fallbackUrl); expect(global.fetch).not.toHaveBeenCalled(); }); }); });
Copyright ©2021 || Defacer Indonesia