Esempio n. 1
0
	def test_applies_reducer_to_previous_state(self):
		store = create_store(reducers['todos'])
		self.assertEqual(store['get_state'](), [])
		
		store['dispatch'](unknown_action())
		self.assertEqual(store['get_state'](), [])
		
		store['dispatch'](add_todo('Hello'))
		self.assertEqual(store['get_state'](), [
			{
				'id': 1,
				'text': 'Hello'
			}
		])
		
		store['dispatch'](add_todo('World'))
		self.assertEqual(store['get_state'](), [
			{
				'id': 1,
				'text': 'Hello'
			},
			{
				'id': 2,
				'text': 'World'
			}
		])
    def test_preserves_state_when_replacing_reducer(self):
        store = create_store(reducers['todos'])
        store['dispatch'](add_todo('Hello'))
        store['dispatch'](add_todo('World'))
        self.assertEqual(store['get_state'](), [{
            'id': 1,
            'text': 'Hello'
        }, {
            'id': 2,
            'text': 'World'
        }])

        store['replace_reducer'](reducers['todos_reverse'])
        self.assertEqual(store['get_state'](), [{
            'id': 1,
            'text': 'Hello'
        }, {
            'id': 2,
            'text': 'World'
        }])

        store['dispatch'](add_todo('Perhaps'))
        self.assertEqual(store['get_state'](), [{
            'id': 3,
            'text': 'Perhaps'
        }, {
            'id': 1,
            'text': 'Hello'
        }, {
            'id': 2,
            'text': 'World'
        }])

        store['replace_reducer'](reducers['todos'])
        self.assertEqual(store['get_state'](), [{
            'id': 3,
            'text': 'Perhaps'
        }, {
            'id': 1,
            'text': 'Hello'
        }, {
            'id': 2,
            'text': 'World'
        }])

        store['dispatch'](add_todo('Surely'))
        self.assertEqual(store['get_state'](), [{
            'id': 3,
            'text': 'Perhaps'
        }, {
            'id': 1,
            'text': 'Hello'
        }, {
            'id': 2,
            'text': 'World'
        }, {
            'id': 4,
            'text': 'Surely'
        }])
    def test_provides_up_to_date_state_when_subscriber_is_notified(self):
        store = create_store(reducers['todos'])

        def callback():
            state = store['get_state']()
            self.assertEqual(state, [{'id': 1, 'text': 'Hello'}])

        store['dispatch'](add_todo('Hello'))
    def test_applies_reducer_to_previous_state(self):
        store = create_store(reducers['todos'])
        self.assertEqual(store['get_state'](), [])

        store['dispatch'](unknown_action())
        self.assertEqual(store['get_state'](), [])

        store['dispatch'](add_todo('Hello'))
        self.assertEqual(store['get_state'](), [{'id': 1, 'text': 'Hello'}])

        store['dispatch'](add_todo('World'))
        self.assertEqual(store['get_state'](), [{
            'id': 1,
            'text': 'Hello'
        }, {
            'id': 2,
            'text': 'World'
        }])
	def test_wraps_dispatch_method_with_middleware_once(self):
		def test(spy_on_methods):
			def apply(methods):
				spy_on_methods(methods)
				return lambda next: lambda action: next(action)
			return apply
		
		spy = mock.MagicMock()
		store = apply_middleware(test(spy), thunk)(create_store)(reducers['todos'])
		
		store['dispatch'](add_todo('Use Redux'))
		store['dispatch'](add_todo('Flux FTW!'))
		
		self.assertEqual(spy.call_count, 1)
		args, kwargs = spy.call_args
		self.assertEqual(sorted(list(args[0].keys())), sorted(['get_state', 'dispatch']))
		
		self.assertEqual(store['get_state'](), [dict(id=1, text='Use Redux'), dict(id=2, text='Flux FTW!')])
Esempio n. 6
0
	def test_provides_up_to_date_state_when_subscriber_is_notified(self):
		store = create_store(reducers['todos'])
		def callback():
			state = store['get_state']()
			self.assertEqual(state, [
				{
					'id': 1,
					'text': 'Hello'
				}
			])
		store['dispatch'](add_todo('Hello'))
    def test_accepts_enhancer_as_second_argument_if_no_initial_state(self):
        def spy_enhancer(vanilla_create_store):
            def enhancer(*args):
                self.assertEqual(args[0], reducers['todos'])
                self.assertEqual(args[1], None)
                self.assertEqual(len(args), 2)
                vanilla_store = vanilla_create_store(*args)
                vanilla_store['dispatch'] = mock.MagicMock(
                    side_effect=vanilla_store['dispatch'])
                return vanilla_store

            return enhancer

        store = create_store(reducers['todos'], spy_enhancer)
        action = add_todo('Hello')
        store['dispatch'](action)
        self.assertEqual(store['dispatch'].call_args_list, [mock.call(action)])
        self.assertEqual(store['get_state'](), [{'id': 1, 'text': 'Hello'}])
Esempio n. 8
0
	def test_accepts_enhancer_as_second_argument_if_no_initial_state(self):
		def spy_enhancer(vanilla_create_store):
			def enhancer(*args):
				self.assertEqual(args[0], reducers['todos'])
				self.assertEqual(args[1], None)
				self.assertEqual(len(args), 2)
				vanilla_store = vanilla_create_store(*args)
				vanilla_store['dispatch'] = mock.MagicMock(side_effect=vanilla_store['dispatch'])
				return vanilla_store
			return enhancer
		
		store = create_store(reducers['todos'], spy_enhancer)
		action = add_todo('Hello')
		store['dispatch'](action)
		self.assertEqual(store['dispatch'].call_args_list, [mock.call(action)])
		self.assertEqual(store['get_state'](), [{
			'id': 1,
			'text': 'Hello'
		}])
Esempio n. 9
0
	def test_preserves_state_when_replacing_reducer(self):
		store = create_store(reducers['todos'])
		store['dispatch'](add_todo('Hello'))
		store['dispatch'](add_todo('World'))
		self.assertEqual(store['get_state'](), [
			{
				'id': 1,
				'text': 'Hello'
			},
			{
				'id': 2,
				'text': 'World'
			}
		])
		
		store['replace_reducer'](reducers['todos_reverse'])
		self.assertEqual(store['get_state'](), [
			{
				'id': 1,
				'text': 'Hello'
			},
			{
				'id': 2,
				'text': 'World'
			}
		])
		
		store['dispatch'](add_todo('Perhaps'))
		self.assertEqual(store['get_state'](), [
			{
				'id': 3,
				'text': 'Perhaps'
			},
			{
				'id': 1,
				'text': 'Hello'
			},
			{
				'id': 2,
				'text': 'World'
			}
		])
		
		store['replace_reducer'](reducers['todos'])
		self.assertEqual(store['get_state'](), [
			{
				'id': 3,
				'text': 'Perhaps'
			},
			{
				'id': 1,
				'text': 'Hello'
			},
			{
				'id': 2,
				'text': 'World'
			}
		])
		
		store['dispatch'](add_todo('Surely'))
		self.assertEqual(store['get_state'](), [
			{
				'id': 3,
				'text': 'Perhaps'
			},
			{
				'id': 1,
				'text': 'Hello'
			},
			{
				'id': 2,
				'text': 'World'
			},
			{
				'id': 4,
				'text': 'Surely'
			}
		])