mirror of
				https://github.com/reduxjs/redux-devtools.git
				synced 2025-11-04 09:57:26 +03:00 
			
		
		
		
	* Replace Action<unknown> with Action<string> In anticipation of Redux 5 type changes * Fix lint errors * Create yellow-steaks-marry.md
		
			
				
	
	
		
			126 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import React from 'react';
 | 
						|
import { render } from '@testing-library/react';
 | 
						|
import { PerformAction } from '@redux-devtools/core';
 | 
						|
import { Action } from 'redux';
 | 
						|
import TestGenerator from '../src/TestGenerator';
 | 
						|
import fnTemplate from '../src/redux/mocha';
 | 
						|
import strTemplate from '../src/redux/mocha/template';
 | 
						|
import fnVanillaTemplate from '../src/vanilla/mocha';
 | 
						|
import strVanillaTemplate from '../src/vanilla/mocha/template';
 | 
						|
 | 
						|
const actions: { [actionId: number]: PerformAction<Action<string>> } = {
 | 
						|
  0: {
 | 
						|
    type: 'PERFORM_ACTION',
 | 
						|
    action: { type: '@@INIT' },
 | 
						|
    timestamp: 0,
 | 
						|
    stack: undefined,
 | 
						|
  },
 | 
						|
  1: {
 | 
						|
    type: 'PERFORM_ACTION',
 | 
						|
    action: { type: 'INCREMENT_COUNTER' },
 | 
						|
    timestamp: 0,
 | 
						|
    stack: undefined,
 | 
						|
  },
 | 
						|
};
 | 
						|
 | 
						|
const computedStates = [{ state: { counter: 0 } }, { state: { counter: 1 } }];
 | 
						|
 | 
						|
const TestGeneratorAsAny = TestGenerator as any;
 | 
						|
 | 
						|
describe('TestGenerator component', () => {
 | 
						|
  it('should show warning message when no params provided', () => {
 | 
						|
    const { container } = render(<TestGeneratorAsAny useCodemirror={false} />);
 | 
						|
    expect(container.firstChild).toMatchSnapshot();
 | 
						|
  });
 | 
						|
 | 
						|
  it('should be empty when no actions provided', () => {
 | 
						|
    const { container } = render(
 | 
						|
      <TestGeneratorAsAny
 | 
						|
        assertion={fnTemplate.assertion}
 | 
						|
        dispatcher={fnTemplate.dispatcher}
 | 
						|
        wrap={fnTemplate.wrap}
 | 
						|
        useCodemirror={false}
 | 
						|
      />,
 | 
						|
    );
 | 
						|
    expect(container.firstChild).toMatchSnapshot();
 | 
						|
  });
 | 
						|
 | 
						|
  it("should match function template's test for first action", () => {
 | 
						|
    const { container } = render(
 | 
						|
      <TestGeneratorAsAny
 | 
						|
        assertion={fnTemplate.assertion}
 | 
						|
        dispatcher={fnTemplate.dispatcher}
 | 
						|
        wrap={fnTemplate.wrap}
 | 
						|
        actions={actions}
 | 
						|
        computedStates={computedStates}
 | 
						|
        selectedActionId={1}
 | 
						|
        useCodemirror={false}
 | 
						|
      />,
 | 
						|
    );
 | 
						|
    expect(container.firstChild).toMatchSnapshot();
 | 
						|
  });
 | 
						|
 | 
						|
  it("should match string template's test for first action", () => {
 | 
						|
    const { container } = render(
 | 
						|
      <TestGeneratorAsAny
 | 
						|
        assertion={strTemplate.assertion}
 | 
						|
        dispatcher={strTemplate.dispatcher}
 | 
						|
        wrap={strTemplate.wrap}
 | 
						|
        useCodemirror={false}
 | 
						|
        actions={actions}
 | 
						|
        computedStates={computedStates}
 | 
						|
        selectedActionId={1}
 | 
						|
      />,
 | 
						|
    );
 | 
						|
    expect(container.firstChild).toMatchSnapshot();
 | 
						|
  });
 | 
						|
 | 
						|
  it('should generate test for the last action when selectedActionId not specified', () => {
 | 
						|
    const { container } = render(
 | 
						|
      <TestGeneratorAsAny
 | 
						|
        assertion={fnTemplate.assertion}
 | 
						|
        dispatcher={fnTemplate.dispatcher}
 | 
						|
        wrap={fnTemplate.wrap}
 | 
						|
        actions={actions}
 | 
						|
        computedStates={computedStates}
 | 
						|
        useCodemirror={false}
 | 
						|
      />,
 | 
						|
    );
 | 
						|
    expect(container.firstChild).toMatchSnapshot();
 | 
						|
  });
 | 
						|
 | 
						|
  it('should generate test for vanilla js class', () => {
 | 
						|
    const { container } = render(
 | 
						|
      <TestGeneratorAsAny
 | 
						|
        assertion={fnVanillaTemplate.assertion}
 | 
						|
        dispatcher={fnVanillaTemplate.dispatcher}
 | 
						|
        wrap={fnVanillaTemplate.wrap}
 | 
						|
        actions={actions}
 | 
						|
        computedStates={computedStates}
 | 
						|
        selectedActionId={1}
 | 
						|
        isVanilla
 | 
						|
        name="SomeStore"
 | 
						|
        useCodemirror={false}
 | 
						|
      />,
 | 
						|
    );
 | 
						|
    expect(container.firstChild).toMatchSnapshot();
 | 
						|
  });
 | 
						|
 | 
						|
  it('should generate test for vanilla js class with string template', () => {
 | 
						|
    const { container } = render(
 | 
						|
      <TestGeneratorAsAny
 | 
						|
        assertion={strVanillaTemplate.assertion}
 | 
						|
        dispatcher={strVanillaTemplate.dispatcher}
 | 
						|
        wrap={strVanillaTemplate.wrap}
 | 
						|
        actions={actions}
 | 
						|
        computedStates={computedStates}
 | 
						|
        selectedActionId={1}
 | 
						|
        isVanilla
 | 
						|
        name="SomeStore"
 | 
						|
        useCodemirror={false}
 | 
						|
      />,
 | 
						|
    );
 | 
						|
    expect(container.firstChild).toMatchSnapshot();
 | 
						|
  });
 | 
						|
});
 |