Merge pull request #1314 from Antonio-Maranhao/fix-link-changes-page
Fix: Changes page generates incorrect link for doc IDs with special chars
diff --git a/app/addons/documents/__tests__/changes.test.js b/app/addons/documents/__tests__/changes.test.js
index 6723f3c..6e0ce29 100644
--- a/app/addons/documents/__tests__/changes.test.js
+++ b/app/addons/documents/__tests__/changes.test.js
@@ -183,4 +183,15 @@
const changeRow = mount(<ChangeRow change={change} databaseName="testDatabase" />);
expect(changeRow.find('a.js-doc-link').length).toBe(1);
});
+
+ it('generates correct URL for doc and db with special chars', () => {
+ const changeSpecialChars = {
+ id: 'space newline\nquestion_mark?',
+ seq: 5,
+ deleted: false,
+ changes: { code: 'here' }
+ };
+ const changeRow = mount(<ChangeRow change={changeSpecialChars} databaseName="db/name" />);
+ expect(changeRow.find('a.js-doc-link').at(0).prop('href')).toBe('#/database/db%2Fname/space%20newline%0Aquestion_mark%3F');
+ });
});
diff --git a/app/addons/documents/changes/components/ChangeID.js b/app/addons/documents/changes/components/ChangeID.js
index 79c8a33..6a2b1a4 100644
--- a/app/addons/documents/changes/components/ChangeID.js
+++ b/app/addons/documents/changes/components/ChangeID.js
@@ -21,7 +21,7 @@
<span className="js-doc-id">{id}</span>
);
}
- const link = '#' + FauxtonAPI.urls('document', 'app', databaseName, id);
+ const link = '#' + FauxtonAPI.urls('document', 'app', encodeURIComponent(databaseName), encodeURIComponent(id));
return (
<a href={link} className="js-doc-link">{id}</a>
);