рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреАрдо рдХрд╛ рд╡рд┐рдХрд╛рд╕ - рднрд╛рдЧ 4, рд╕рдорд╛рдкрди

рдпрд╣ рдХрд╣рд╛рдиреА рдХреА рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИ рдЬреЛ рдпрд╣рд╛рдВ рд╢реБрд░реВ рд╣реБрдИ, рдФрд░ рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рдЬрд╛рд░реА рд░рд╣реАред


рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдкреВрд░реНрдг рд╕реЗрдЯ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрд╛ред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рд╕реЗ рд▓реЗрдХрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рди рдХреЗрд╡рд▓ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдПрдирдХреЛрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдмрд▓реНрдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рдпрдо рднреА рд╣реИрдВ, рдЖрдЬ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдореЙрдбреНрдпреВрд▓рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЬрд┐рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рд╕рдм рдХреБрдЫ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рд╣реИрдВрдбрд▓рд░ред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


describe('requestHandler', () => { const createStore = require('redux').createStore; const reducers = require('../../src/reducers.js'); const DbMock = require('../mocks/DbMock'); const db = new DbMock(); const rules = require('../../src/rules'); const dbRequest = require('../../src/storage/dbRequest'); let request = null, store = null, context = null; beforeEach(() => { store = createStore(reducers); context = { db, store, rules }; request = dbRequest.bind(context, [ 'user' ]); expect(store.getState().user).toBeNull(); expect(store.getState().error).toEqual([]); }); it('should get user from database', (done) => { const assert = checkUser.bind(context, [ done ]); store.subscribe(assert); store.dispatch({type: 'NOTE', note: { Id: 1, UserRecordId: 1 }}); request(); }); function checkUser(args) { const state = store.getState(); if(state.user === null) return; const user = state.user; expect(user.Id).toEqual(1); expect(user.Name).toEqual('Jack'); const checkIsCompleted = args[0]; checkIsCompleted(); } }); 

рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдФрд░ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рд╣реИрдВрдбрд▓рд░ рдХреЛ рдирд┐рдпрдореЛрдВ рд╕реЗ рдХреНрдпрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА?


  1. рдкреНрд░реЙрдкрд░реНрдЯреА рдХрдВрдЯреЗрдирд░ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреБрдВрдЬреА рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд░рд┐рдХреЙрд░реНрдб рдмрд╛рдзреНрдп рд╣реЛрдЧрд╛
  2. рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рд╕реЗ рдЖрдк рд░рд┐рдХреЙрд░реНрдб рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
  3. рд╡рд╣ рд╡рд┐рдзрд┐ рдЬреЛ рдЕрдиреБрд░реЛрдз рдмрдирд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
  4. рдбрд┐рд╕реНрдкреИрдЪрд░ рд╡рд┐рдзрд┐ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд░рд╛рдЬреНрдп рдХрдВрдЯреЗрдирд░ рд╕реНрдЯреЛрд░ рдореЗрдВ рднреЗрдЬрддреА рд╣реИред
  5. рдПрдХ рдкреНрд░реЗрд╖рдг рд╡рд┐рдзрд┐ рдЬреЛ рд░рд╛рдЬреНрдп рдХрдВрдЯреЗрдирд░ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд░реБрдЯрд┐, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рднреЗрдЬрддреА рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд░рд╛рдЬреНрдп рдХрдВрдЯреЗрдирд░ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдореЗрдХрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдЙрдирдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд┐рдпрд╛ред

рдирд┐рдпрдореЛрдВ рдХрд╛ рд╕реЗрдЯ рдореБрдЭреЗ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ ( Map ) рд▓рдЧрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреБрдВрдЬреА рд░рд╛рдЬреНрдп рдХрдВрдЯреЗрдирд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рд╣реЛрдЧреА рдФрд░ рдореИрдВ рд╕рдВрднрд╡рддрдГ рдкрд╣рд▓реА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рддреИрдпрд╛рд░ рдХрд░реВрдВрдЧрд╛:


 describe('rules', () => { const rules = require('../src/rules'); it('should contain user rules', () => { const rule = rules.get('user'); expect(rule.table).toEqual('users'); }); }); 

рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдФрд░ Jasmine рдореБрдЭреЗ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рджреЛ рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВред рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдирд┐рдпрдо рд╕реЗ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХрдВрдЯреЗрдирд░ рдХреА user рдХреБрдВрдЬреА рдХреЛ рдПрдХ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдЕрдиреБрд░реЛрдз рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП users рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдм рдХреБрдЫ рддрд╛рд░реНрдХрд┐рдХ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдХреЛрдб рд▓рдЧрддрд╛ рд╣реИред


 const makeRules = () => { const rules = new Map(); rules.set('user', { table: 'users' }); return rules; }; module.exports = makeRules(); 

рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рд╣реИрдВрдбрд▓рд░ рдХреНрд░реИрд╢ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг, рд╣рд╛рд▓рд╛рдВрдХрд┐ рддреНрд░реБрдЯрд┐ рдЕрдм рдЕрд▓рдЧ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдмрд╛рдж рдореЗрдВ рд▓реМрдЯреВрдВрдЧрд╛, рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рддреИрдпрд╛рд░ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкреВрд░реНрдг рдирд┐рдпрдо рд╣реЛрдЧрд╛ред


рдореИрдВ рдирд┐рдпрдо рд╢рдмреНрджрдХреЛрд╢ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдПрдХ рдХреЛрдб рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдЬреЛ рдПрдХ рдбрд┐рд╕реНрдкреИрдЪрд░ рд╡рд┐рдзрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░реА рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ:


 describe('rules', () => { const rules = require('../src/rules'); it('should contain user rules', () => { const rule = rules.get('user'); expect(rule.table).toEqual('users'); expect(rule.onError.name).toEqual('dispatchError'); expect(typeof rule.onError).toEqual('function'); }); }); 

рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдлрд┐рд░ рд╕реЗ рджреЛ рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ, рдФрд░ рдирд┐рдпрдо рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░рдЦрд╛рдирд╛ рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВред рдореИрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╣рд▓реЗ рдирд┐рдпрдо рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ:


 const makeRules = () => { const rules = new Map(); rules.set('user', { table: 'users', onError: function dispatchError(error, store) { const action = { type: 'ERROR', error }; store.dispatch(action); } }); return rules; }; module.exports = makeRules(); 

рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдирдпрд╛ рдирд┐рдпрдо рдЯреБрдХрдбрд╝рд╛ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рднреА рд╢реЗрд╖ рдирд┐рдпрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реВрдВ:


 describe('rules', () => { const rules = require('../src/rules'); it('should contain user rules', () => { const rule = rules.get('user'); expect(rule.table).toEqual('users'); expect(rule.onError.name).toEqual('dispatchError'); expect(typeof rule.onError).toEqual('function'); expect(rule.onSuccess.name).toEqual('dispatchUser'); expect(typeof rule.onSuccess).toEqual('function'); expect(rule.query.name).toEqual('getUserQuery'); expect(typeof rule.query).toEqual('function'); }); }); 

рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдирд┐рдпрдо рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдлрд┐рд░ рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред рдореИрдВ рдХреЛрдб рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдБ:


 const makeRules = () => { const rules = new Map(); rules.set('user', { table: 'users', onError: function dispatchError(error, store) { const action = { type: 'ERROR', error }; store.dispatch(action); }, onSuccess: function dispatchUser(user, store) { const action = { type: 'USER', user }; store.dispatch(action); }, query: function getUserQuery(store) { const state = store.getState(); if(state.note === null) return null; return { Id: state.note.UserRecordId }; } }); return rules; }; module.exports = makeRules(); 

рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдлрд┐рд░ рд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдм рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЗрд╕ рдмрд╛рд░ рдореИрдВ рд╡рд░реНрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд╣реЛрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдореМрдЬреВрджрд╛ рдЕрдиреБрд░реЛрдз рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдмреЗрд░рд╣рдореА рд╕реЗ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕реЗ рдПрдХ рдЪреЗрдХ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реВрдВ, рдорд╛рдорд▓реЗ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдкрд╣рд▓реЗ рд╣реА рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рддреЛ рдХреЛрдб:


 function dbRequest(args){ const key = args[0]; const getQuery = this.rules.get(key).query; const dispatchUser = this.rules.get(key).onSuccess; const dispatchError = this.rules.get(key).onError; const tableName = this.rules.get(key).table; const table = this.db.Model.extend({ tableName: tableName }); const state = this.store.getState(); if(state[key] !== null) return; const query = getQuery(this.store); if(query === null) return; table.where(query).fetch().then((item) => { dispatchUser(item, this.store); }).catch((error) => { dispatchError(error, this.store); }); } module.exports = dbRequest; 

рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдкрд░реАрдХреНрд╖рдг ... рдбреНрд░рдо рд░реЛрд▓! рдФрд░ рдореБрдЭреЗ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░реЗ рд╣реБрдПред рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрд╕ рд╕реЗрдЯ рдореЗрдВ рдПрдХ рдФрд░ рдкрд░реАрдХреНрд╖рдг DbMock рдЬреЛ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рднреВрд▓ рдЧрдпрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рдЫрджреНрдо DbMock рдПрдХ рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ DbMock , рдореБрдЭреЗ рдЙрд╕реЗ 555 рдХреЗ рдмрд░рд╛рдмрд░ Id рд╕рд╛рде рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛ рд╣реЛрдЧрд╛:


 it('should add error in store state', (done) => { const assert = checkErrorHasBeenAdded.bind(context, [ done ]); store.subscribe(assert); store.dispatch({type: 'NOTE', note: { Id: 1, UserRecordId: 555 }}); request(); }); function checkErrorHasBeenAdded(args){ const state = store.getState(); if(state.error.length === 0) return; const error = state.error; expect(Array.isArray(error)).toBeTruthy(); expect(error.length).toEqual(1); expect(error[0].message).toEqual('Something goes wrong!'); const checkIsCompleted = args[0]; checkIsCompleted(); } 

рдореИрдВ рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдо рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдХрдорд╛рдВрдб рдХрд╛ рд╕рд╣реА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рддреИрдпрд╛рд░ рд╣реИ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдирд┐рдпрдо рд╕реЗрдЯ рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдПрдХ рд╣реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд┐рд░реНрдл рдХреБрдЫ рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдкрдардиреАрдп рд╣реЛрдирд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

Source: https://habr.com/ru/post/hi436654/


All Articles