13f609562SBartosz Kaszubowskiimport { jest } from '@jest/globals'; 214b4cf7cSBartosz Kaszubowskiimport { render, Screen, screen } from '@testing-library/react'; 314b4cf7cSBartosz Kaszubowskiimport fs from 'fs-extra'; 414b4cf7cSBartosz Kaszubowskiimport path from 'path'; 53f609562SBartosz Kaszubowskiimport { fileURLToPath } from 'url'; 614b4cf7cSBartosz Kaszubowski 714b4cf7cSBartosz Kaszubowskiimport { DiffBlock } from '.'; 814b4cf7cSBartosz Kaszubowski 93f609562SBartosz Kaszubowskiconst dirname = path.dirname(fileURLToPath(import.meta.url)); 103f609562SBartosz Kaszubowski 11*1faf74fcSJon Sampconst DIFF_PATH = '/static/diffs/expo-ios.diff'; 123f609562SBartosz Kaszubowskiconst DIFF_CONTENT = fs.readFileSync(path.join(dirname, '../../../public', DIFF_PATH)).toString(); 1314b4cf7cSBartosz Kaszubowski 1414b4cf7cSBartosz Kaszubowskiconst validateDiffContent = (screen: Screen) => { 15*1faf74fcSJon Samp expect(screen.getByText('ios/MyApp/AppDelegate.h')).toBeInTheDocument(); 16*1faf74fcSJon Samp expect(screen.getByText('ios/Podfile')).toBeInTheDocument(); 17*1faf74fcSJon Samp expect(screen.getByText('#import <UIKit/UIKit.h>')).toBeInTheDocument(); 18*1faf74fcSJon Samp expect(screen.getByText('#import <Expo/Expo.h>')).toBeInTheDocument(); 1914b4cf7cSBartosz Kaszubowski}; 2014b4cf7cSBartosz Kaszubowski 2114b4cf7cSBartosz Kaszubowskidescribe(DiffBlock, () => { 2214b4cf7cSBartosz Kaszubowski it('renders diff from file correctly', async () => { 233f609562SBartosz Kaszubowski global.fetch = jest.fn(() => 243f609562SBartosz Kaszubowski Promise.resolve({ 2514b4cf7cSBartosz Kaszubowski text: async () => DIFF_CONTENT, 263f609562SBartosz Kaszubowski } as Response) 273f609562SBartosz Kaszubowski ); 2814b4cf7cSBartosz Kaszubowski 2914b4cf7cSBartosz Kaszubowski render(<DiffBlock source={DIFF_PATH} />); 3014b4cf7cSBartosz Kaszubowski 31*1faf74fcSJon Samp await screen.findByText('ios/MyApp/AppDelegate.h'); 3214b4cf7cSBartosz Kaszubowski 3314b4cf7cSBartosz Kaszubowski validateDiffContent(screen); 3414b4cf7cSBartosz Kaszubowski }); 3514b4cf7cSBartosz Kaszubowski 3614b4cf7cSBartosz Kaszubowski it('renders raw diff correctly on first render', () => { 3714b4cf7cSBartosz Kaszubowski render(<DiffBlock raw={DIFF_CONTENT} />); 3814b4cf7cSBartosz Kaszubowski 3914b4cf7cSBartosz Kaszubowski validateDiffContent(screen); 4014b4cf7cSBartosz Kaszubowski }); 4114b4cf7cSBartosz Kaszubowski 4214b4cf7cSBartosz Kaszubowski it('renders diff correctly when no commit data', () => { 4314b4cf7cSBartosz Kaszubowski const noCommitDataDiff = DIFF_CONTENT.replaceAll(/\s+index.+/g, ''); 4414b4cf7cSBartosz Kaszubowski 4514b4cf7cSBartosz Kaszubowski expect(noCommitDataDiff.includes('index ')).toBe(false); 4614b4cf7cSBartosz Kaszubowski 4714b4cf7cSBartosz Kaszubowski render(<DiffBlock raw={noCommitDataDiff} />); 4814b4cf7cSBartosz Kaszubowski 4914b4cf7cSBartosz Kaszubowski validateDiffContent(screen); 5014b4cf7cSBartosz Kaszubowski }); 5114b4cf7cSBartosz Kaszubowski}); 52