rwr-redux 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: be4eca4b78faa9b282e09216f8ec630c6f0a7d8a
4
- data.tar.gz: 29de0a81deca613280206c60bc132a4fe1f98209
3
+ metadata.gz: 50f41380d2060a620d37eb31a11264e40914c233
4
+ data.tar.gz: 9265820c4fa8ec67b0db8288b94ded5401df805f
5
5
  SHA512:
6
- metadata.gz: 737588a1d5ed71c6b5fb27a134ca725bbde6675dd514d8e5225e8d25a3a78f4ded25b4d568cab6635ae25bff9f242358654de8cb3b24040dc0c1923e5afcdafd
7
- data.tar.gz: 30d26a731a95b6cf4dcc4e22db9f51d2068f734ff18e03c44f8a49bd7c2a404e6d04c576a51975d2bd25755d281cefa574cc6feff2f972ab8c5fae9b1cf3f7b3
6
+ metadata.gz: f85aa615b4956186a80d980b1f11ce6af9f5736121406179dc370c1016a559b060dd939bda192e81614cba3eaa8e5ddd0e4f86eda39f25533449ff47c2d9f837
7
+ data.tar.gz: 1f8e40644371cc5e856300842a9499505f19e9a9d02ca3f00ddf8d397556a7d9bf3a1aae2fa50be5aebb41cd9dff117404355c90536d4bf66f9512cb52fc0c03
@@ -0,0 +1,36 @@
1
+ branches:
2
+ except:
3
+ - docs
4
+
5
+ language: ruby
6
+
7
+ cache:
8
+ bundler: true
9
+ directories:
10
+ - node_modules
11
+ - spec/rails4_dummy_app/node_modules
12
+
13
+ matrix:
14
+ include:
15
+ - rvm: 2.2.4
16
+ gemfile: spec/rails4_dummy_app/Gemfile
17
+ env: TEST_SUITE=rails4
18
+ - rvm: 2.2.4
19
+ gemfile: Gemfile
20
+ env: TEST_SUITE=gem
21
+ - rvm: 2.2.4
22
+ env: TEST_SUITE=node
23
+
24
+ before_script:
25
+ - nvm install 4.1
26
+ - nvm use 4.1
27
+ - npm install -g npm@^2.0
28
+ - npm install -g webpack@^1.12.1
29
+ - bundle exec rake setup:$TEST_SUITE
30
+ - 'export CHROME_BIN=chromium-browser'
31
+ - "export DISPLAY=:99.0" # Setup display for selenium driver
32
+ - "sh -e /etc/init.d/xvfb start"
33
+ - sleep 4 # give xvfb some time to start
34
+
35
+ script:
36
+ - bundle exec rake test:$TEST_SUITE
@@ -1,3 +1,6 @@
1
+ ## 0.5.0
2
+ * add passing props from view to Redux Container
3
+
1
4
  ## 0.2.0
2
5
  * add server side rendering
3
6
  * add redux-router helpers:
@@ -26,20 +26,20 @@ class ReduxContainer {
26
26
  return this.containers[name];
27
27
  }
28
28
 
29
- createContainer(name) {
29
+ createContainer(name, props) {
30
30
  const constructor = this.getContainer(name);
31
- return createElement(constructor);
31
+ return createElement(constructor, props);
32
32
  }
33
33
 
34
- createRootComponent(name, storeName) {
35
- const container = this.createContainer(name);
34
+ createRootComponent(name, { props, storeName }) {
35
+ const container = this.createContainer(name, props);
36
36
  const store = ReduxStore.getStore(storeName);
37
37
 
38
38
  return createElement(Provider, { store }, container);
39
39
  }
40
40
 
41
- renderContainer(name, node, storeName) {
42
- const rootComponent = this.createRootComponent(name, storeName);
41
+ renderContainer(name, payload, node) {
42
+ const rootComponent = this.createRootComponent(name, payload);
43
43
  render(rootComponent, node);
44
44
  }
45
45
 
@@ -47,8 +47,8 @@ class ReduxContainer {
47
47
  unmountComponentAtNode(node);
48
48
  }
49
49
 
50
- renderContainerToString(name, storeName) {
51
- const rootComponent = this.createRootComponent(name, storeName);
50
+ renderContainerToString(name, payload) {
51
+ const rootComponent = this.createRootComponent(name, payload);
52
52
  const result = renderToString(rootComponent);
53
53
 
54
54
  return JSON.stringify({ body: result });
@@ -57,7 +57,7 @@ class ReduxContainer {
57
57
  get integrationWrapper() {
58
58
  return {
59
59
  mount: function _mount(node, payload) {
60
- this.renderContainer(payload.name, node, payload.storeName);
60
+ this.renderContainer(payload.name, payload, node);
61
61
  }.bind(this),
62
62
 
63
63
  unmount: function _unmount(node) {
@@ -65,8 +65,7 @@ class ReduxContainer {
65
65
  }.bind(this),
66
66
 
67
67
  nodeRun: function _prerender(payload) {
68
- const { name, storeName } = payload;
69
- return this.renderContainerToString(name, storeName);
68
+ return this.renderContainerToString(payload.name, payload);
70
69
  }.bind(this),
71
70
  };
72
71
  }
@@ -1 +1 @@
1
- export default '0.4.0';
1
+ export default '0.5.0';
@@ -57,7 +57,7 @@ describe('ReduxContainer', function () {
57
57
  describe('#createContainer', function () {
58
58
  it('creates redux container', function () {
59
59
  subject.registerContainer('AppContainer', AppContainer);
60
- const container = subject.createContainer('AppContainer');
60
+ const container = subject.createContainer('AppContainer', { points: 2 });
61
61
 
62
62
  expect(React.isValidElement(container)).toBe(true);
63
63
  expect(container.type).toBe(AppContainer);
@@ -67,11 +67,18 @@ describe('ReduxContainer', function () {
67
67
  describe('#createRootComponent', function () {
68
68
  it('creates redux root component', function () {
69
69
  const initialState = { fake: 'state' };
70
+ const payload = {
71
+ name: 'ContainerName',
72
+ props: { points: 2 },
73
+ storeName: 'StoreName',
74
+ };
75
+
70
76
  ReduxStore.registerStore('StoreName', store);
71
77
  ReduxStore.mountStore('StoreName', initialState);
72
78
 
73
79
  subject.registerContainer('AppContainer', AppContainer);
74
- const rootComponent = subject.createRootComponent('AppContainer', 'ValidStore');
80
+ const rootComponent = subject.createRootComponent(
81
+ payload.name, payload);
75
82
 
76
83
  expect(React.isValidElement(rootComponent)).toBe(true);
77
84
  });
@@ -81,11 +88,16 @@ describe('ReduxContainer', function () {
81
88
  it('calls #createRootComponent and ReactDOM.render functions', function () {
82
89
  const subjectSpy = spyOn(subject, 'createRootComponent');
83
90
  const reactSpy = spyOn(ReactDOM, 'render');
91
+ const payload = {
92
+ name: 'ContainerName',
93
+ props: { points: 2 },
94
+ storeName: 'StoreName',
95
+ };
84
96
 
85
- subject.renderContainer('ContainerName', 'node', 'StoreName');
97
+ subject.renderContainer(payload.name, payload, 'node');
86
98
 
87
99
  expect(subjectSpy.calls.length).toEqual(1);
88
- expect(subjectSpy).toHaveBeenCalledWith('ContainerName', 'StoreName');
100
+ expect(subjectSpy).toHaveBeenCalledWith(payload.name, payload);
89
101
  expect(reactSpy.calls.length).toEqual(1);
90
102
  });
91
103
  });
@@ -106,11 +118,16 @@ describe('ReduxContainer', function () {
106
118
  it('calls #createRootComponent and ReactDOM.renderToString', function () {
107
119
  const subjectSpy = spyOn(subject, 'createRootComponent');
108
120
  const reactSpy = spyOn(ReactDOMServer, 'renderToString');
121
+ const payload = {
122
+ name: 'ContainerName',
123
+ props: { points: 2 },
124
+ storeName: 'StoreName',
125
+ };
109
126
 
110
- subject.renderContainerToString('ContainerName', 'StoreName');
127
+ subject.renderContainerToString(payload.name, payload);
111
128
 
112
129
  expect(subjectSpy.calls.length).toEqual(1);
113
- expect(subjectSpy).toHaveBeenCalledWith('ContainerName', 'StoreName');
130
+ expect(subjectSpy).toHaveBeenCalledWith(payload.name, payload);
114
131
  expect(reactSpy.calls.length).toEqual(1);
115
132
  });
116
133
 
@@ -128,7 +145,11 @@ describe('ReduxContainer', function () {
128
145
 
129
146
  describe('#integrationWrapper', function () {
130
147
  const node = { nodeType: 1, nodeName: 'DIV' };
131
- const payload = { name: 'ContainerName', storeName: 'StoreName' };
148
+ const payload = {
149
+ name: 'ContainerName',
150
+ props: { points: 2 },
151
+ storeName: 'StoreName',
152
+ };
132
153
 
133
154
  describe('mount', function () {
134
155
  it('calls #renderContainer', function () {
@@ -136,7 +157,7 @@ describe('ReduxContainer', function () {
136
157
  subject.integrationWrapper.mount(node, payload);
137
158
 
138
159
  expect(mountSpy.calls.length).toEqual(1);
139
- expect(mountSpy).toHaveBeenCalledWith(payload.name, node, payload.storeName);
160
+ expect(mountSpy).toHaveBeenCalledWith(payload.name, payload, node);
140
161
  });
141
162
  });
142
163
 
@@ -156,7 +177,7 @@ describe('ReduxContainer', function () {
156
177
  subject.integrationWrapper.nodeRun(payload);
157
178
 
158
179
  expect(nodeRunSpy.calls.length).toEqual(1);
159
- expect(nodeRunSpy).toHaveBeenCalledWith(payload.name, payload.storeName);
180
+ expect(nodeRunSpy).toHaveBeenCalledWith(payload.name, payload);
160
181
  });
161
182
  });
162
183
  });
@@ -9,7 +9,7 @@ module ReactWebpackRails
9
9
  end
10
10
 
11
11
  def payload
12
- { name: element_name, storeName: store_name }
12
+ { name: element_name, props: props, storeName: store_name }
13
13
  end
14
14
 
15
15
  def options
@@ -5,6 +5,7 @@ module ReactWebpackRails
5
5
  def initialize(integration_name, element_name, base_options, path = nil)
6
6
  @integration_name = integration_name
7
7
  @element_name = element_name
8
+ @props = base_options[:props]
8
9
  @store_name = base_options[:store_name]
9
10
  @server_side = base_options[:server_side]
10
11
  @base_options = base_options
@@ -17,12 +18,12 @@ module ReactWebpackRails
17
18
  end
18
19
 
19
20
  def options
20
- base_options.except(:store_name, :server_side)
21
+ base_options.except(:props, :store_name, :server_side)
21
22
  end
22
23
 
23
24
  private
24
25
 
25
- attr_reader :integration_name, :element_name, :store_name, :server_side, :base_options, :path
26
+ attr_reader :integration_name, :element_name, :store_name, :server_side, :base_options, :path, :props
26
27
 
27
28
  def node_integration
28
29
  NodeIntegrationRunner.new(integration_name, payload).run
@@ -1,5 +1,5 @@
1
1
  module ReactWebpackRails
2
2
  module ReduxIntegration
3
- VERSION = '0.4.0'
3
+ VERSION = '0.5.0'
4
4
  end
5
5
  end
@@ -11,13 +11,13 @@ module ReactWebpackRails
11
11
  NodeIntegrationRunner.new('redux-store', name: name, props: props).run
12
12
  end
13
13
 
14
- react_element('redux-store', { name: name, props: props }, options)
14
+ rwr_element('redux-store', { name: name, props: props }, options)
15
15
  end
16
16
 
17
17
  def redux_container(name, options = {})
18
18
  container = Services::ReduxContainer.new('redux-container', name, options)
19
19
 
20
- react_element('redux-container', container.payload, container.options) do
20
+ rwr_element('redux-container', container.payload, container.options) do
21
21
  container.result['body'].html_safe
22
22
  end
23
23
  end
@@ -26,7 +26,7 @@ module ReactWebpackRails
26
26
  router = Services::ReduxRouter.new('redux-router', name, options, request.path)
27
27
  result = handle_response_code(router.result, name, request.path)
28
28
 
29
- react_element('redux-router', router.payload, router.options) do
29
+ rwr_element('redux-router', router.payload, router.options) do
30
30
  result
31
31
  end
32
32
  end
@@ -46,7 +46,7 @@ module ReactWebpackRails
46
46
  when 302
47
47
  controller.redirect_to(result['redirectUri'])
48
48
  else
49
- raise ActionController::RoutingError, routing_error(name, path)
49
+ raise ActionController::RoutingError.new(routing_error(name, path))
50
50
  end
51
51
  end
52
52
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rwr-redux",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Redux integration for react_webpack_rails",
5
5
  "main": "js/lib/index.js",
6
6
  "files": [
@@ -31,9 +31,9 @@
31
31
  "homepage": "https://github.com/netguru/rwr-redux",
32
32
  "dependencies": {
33
33
  "react-redux": "^4.4.5",
34
- "react-router": "^2.4.1",
35
- "react-router-redux": "^4.0.4",
36
- "react-webpack-rails": "^0.4.1",
34
+ "react-router": "^2.6.1",
35
+ "react-router-redux": "^4.0.5",
36
+ "react-webpack-rails": "^0.5.0",
37
37
  "redux": "^3.5.2"
38
38
  },
39
39
  "devDependencies": {
@@ -27,5 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency 'rspec', '~> 3.3'
28
28
  spec.add_development_dependency 'pry'
29
29
 
30
- spec.add_dependency 'react_webpack_rails', '>= 0.1.0'
30
+ spec.add_dependency 'react_webpack_rails', '>= 0.5.0'
31
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rwr-redux
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kacper Goliński
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-06-24 00:00:00.000000000 Z
12
+ date: 2016-09-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -73,14 +73,14 @@ dependencies:
73
73
  requirements:
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 0.1.0
76
+ version: 0.5.0
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: 0.1.0
83
+ version: 0.5.0
84
84
  description: Redux integration for react_webpack_rails
85
85
  email:
86
86
  - react@netguru.co
@@ -92,6 +92,7 @@ files:
92
92
  - ".eslintrc"
93
93
  - ".gitignore"
94
94
  - ".rubocop.yml"
95
+ - ".travis.yml"
95
96
  - CHANGELOG.md
96
97
  - Gemfile
97
98
  - LICENSE.txt
@@ -142,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
143
  version: '0'
143
144
  requirements: []
144
145
  rubyforge_project:
145
- rubygems_version: 2.4.8
146
+ rubygems_version: 2.5.1
146
147
  signing_key:
147
148
  specification_version: 4
148
149
  summary: Redux integration for react_webpack_rails