You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ga...@apache.org on 2017/05/09 07:25:14 UTC

[couchdb-fauxton] branch master updated: (#920) - Database Pagination updates after receiving new store

This is an automated email from the ASF dual-hosted git repository.

garren pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/couchdb-fauxton.git

The following commit(s) were added to refs/heads/master by this push:
       new  eb567e9   (#920) - Database Pagination updates after receiving new store
eb567e9 is described below

commit eb567e930f487e4ab4e83b22786f1188d26a51eb
Author: Ryan Millay <ry...@gmail.com>
AuthorDate: Tue May 9 03:25:11 2017 -0400

    (#920) - Database Pagination updates after receiving new store
    
    * component updates properly when new store prop
---
 .../databases/__tests__/databasepagination.test.js | 47 ++++++++++++++++++++++
 app/addons/databases/components.js                 | 14 +++++--
 2 files changed, 57 insertions(+), 4 deletions(-)

diff --git a/app/addons/databases/__tests__/databasepagination.test.js b/app/addons/databases/__tests__/databasepagination.test.js
new file mode 100644
index 0000000..4061fa4
--- /dev/null
+++ b/app/addons/databases/__tests__/databasepagination.test.js
@@ -0,0 +1,47 @@
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+import Stores from "../stores";
+import React from 'react';
+import ReactDOM from 'react-dom';
+import DatabaseComponents from "../components";
+import "../../documents/base";
+import DatabaseActions from "../actions";
+import {mount} from 'enzyme';
+
+const store = Stores.databasesStore;
+
+describe('Database Pagination', function () {
+
+  it('renders correct pagination upon store change', () => {
+    DatabaseActions.updateDatabases({
+      dbList: ['db1'],
+      databaseDetails: [{db_name: 'db1', doc_count: 0, doc_del_count: 0}],
+      failedDbs: [],
+      fullDbList: ['db1']
+    });
+
+    const tempStore = {
+      getTotalAmountOfDatabases: () => { return 10; },
+      getPage: () => { return 1; },
+      on: () => {}
+    };
+
+    const pagination = mount(<DatabaseComponents.DatabasePagination store={tempStore} />);
+    expect(pagination.find('.all-db-footer__total-db-count').text()).toMatch('10');
+
+    // switch stores
+    pagination.setProps({store: store});
+    expect(pagination.find('.all-db-footer__total-db-count').text()).toMatch('1');
+  });
+
+});
diff --git a/app/addons/databases/components.js b/app/addons/databases/components.js
index 04d6751..66eba36 100644
--- a/app/addons/databases/components.js
+++ b/app/addons/databases/components.js
@@ -307,8 +307,8 @@ var DatabasePagination = React.createClass({
     };
   },
 
-  getStoreState () {
-    const {store} = this.props;
+  getStoreState (props) {
+    const {store} = props;
 
     return {
       totalAmountOfDatabases: store.getTotalAmountOfDatabases(),
@@ -317,7 +317,7 @@ var DatabasePagination = React.createClass({
   },
 
   getInitialState () {
-    return this.getStoreState();
+    return this.getStoreState(this.props);
   },
 
   componentDidMount () {
@@ -326,13 +326,19 @@ var DatabasePagination = React.createClass({
     store.on('change', this.onChange, this);
   },
 
+  componentWillReceiveProps (nextProps) {
+    this.setState(this.getStoreState(nextProps));
+    const {store} = nextProps;
+    store.on('change', this.onChange, this);
+  },
+
   componentWillUnmount () {
     const {store} = this.props;
     store.off('change', this.onChange, this);
   },
 
   onChange () {
-    this.setState(this.getStoreState());
+    this.setState(this.getStoreState(this.props));
   },
 
   render () {

-- 
To stop receiving notification emails like this one, please contact
['"commits@couchdb.apache.org" <co...@couchdb.apache.org>'].