Add partial blacklist form
This commit is contained in:
parent
7528fe831f
commit
fa6dfb0395
8 changed files with 185 additions and 58 deletions
|
@ -2,13 +2,16 @@ import React from 'react';
|
|||
import ReactDOM from 'react-dom';
|
||||
import ReactTestRenderer from 'react-test-renderer';
|
||||
import ReactTestUtils from 'react-dom/test-utils';
|
||||
import BlacklistForm from 'settings/components/form/BlacklistForm'
|
||||
import { expect } from 'chai'
|
||||
|
||||
import BlacklistForm from '../../../../src/settings/components/form/BlacklistForm'
|
||||
import Blacklist from '../../../../src/shared/settings/Blacklist';
|
||||
|
||||
describe("settings/form/BlacklistForm", () => {
|
||||
describe('render', () => {
|
||||
it('renders BlacklistForm', () => {
|
||||
let root = ReactTestRenderer.create(
|
||||
<BlacklistForm value={['*.slack.com', 'www.google.com/maps']} />,
|
||||
<BlacklistForm value={Blacklist.fromJSON(['*.slack.com', 'www.google.com/maps'])} />,
|
||||
).root;
|
||||
|
||||
let children = root.children[0].children;
|
||||
|
@ -43,10 +46,10 @@ describe("settings/form/BlacklistForm", () => {
|
|||
it('invokes onChange event on edit', (done) => {
|
||||
ReactTestUtils.act(() => {
|
||||
ReactDOM.render(<BlacklistForm
|
||||
value={['*.slack.com', 'www.google.com/maps*']}
|
||||
value={Blacklist.fromJSON(['*.slack.com', 'www.google.com/maps*'])}
|
||||
onChange={value => {
|
||||
expect(value).to.have.lengthOf(2);
|
||||
expect(value).to.have.members(['gitter.im', 'www.google.com/maps*']);
|
||||
let urls = value.items.map(item => item.pattern);
|
||||
expect(urls).to.have.members(['gitter.im', 'www.google.com/maps*']);
|
||||
done();
|
||||
}}
|
||||
/>, container)
|
||||
|
@ -60,10 +63,10 @@ describe("settings/form/BlacklistForm", () => {
|
|||
it('invokes onChange event on delete', (done) => {
|
||||
ReactTestUtils.act(() => {
|
||||
ReactDOM.render(<BlacklistForm
|
||||
value={['*.slack.com', 'www.google.com/maps*']}
|
||||
value={Blacklist.fromJSON(['*.slack.com', 'www.google.com/maps*'])}
|
||||
onChange={value => {
|
||||
expect(value).to.have.lengthOf(1);
|
||||
expect(value).to.have.members(['www.google.com/maps*']);
|
||||
let urls = value.items.map(item => item.pattern);
|
||||
expect(urls).to.have.members(['www.google.com/maps*']);
|
||||
done();
|
||||
}}
|
||||
/>, container)
|
||||
|
@ -76,10 +79,10 @@ describe("settings/form/BlacklistForm", () => {
|
|||
it('invokes onChange event on add', (done) => {
|
||||
ReactTestUtils.act(() => {
|
||||
ReactDOM.render(<BlacklistForm
|
||||
value={['*.slack.com']}
|
||||
value={Blacklist.fromJSON(['*.slack.com'])}
|
||||
onChange={value => {
|
||||
expect(value).to.have.lengthOf(2);
|
||||
expect(value).to.have.members(['*.slack.com', '']);
|
||||
let urls = value.items.map(item => item.pattern);
|
||||
expect(urls).to.have.members(['*.slack.com', '']);
|
||||
done();
|
||||
}}
|
||||
/>, container);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import Blacklist, { BlacklistItem } from '../../../src/shared/settings/Blacklist';
|
||||
import { expect } from 'chai';
|
||||
import Key from '../../../src/shared/settings/Key';
|
||||
|
||||
describe('BlacklistItem', () => {
|
||||
describe('#fromJSON', () => {
|
||||
|
@ -82,11 +83,13 @@ describe('BlacklistItem', () => {
|
|||
|
||||
describe('#includesPartialKeys', () => {
|
||||
it('matches with partial keys', () => {
|
||||
let item = BlacklistItem.fromJSON({url: 'google.com', keys: ['j', 'k']});
|
||||
let item = BlacklistItem.fromJSON({url: 'google.com', keys: ['j', 'k', '<C-U>']});
|
||||
|
||||
expect(item.includeKey(new URL('http://google.com/maps'), 'j')).to.be.true;
|
||||
expect(item.includeKey(new URL('http://google.com/maps'), 'z')).to.be.false;
|
||||
expect(item.includeKey(new URL('http://maps.google.com/'), 'j')).to.be.false;
|
||||
expect(item.includeKey(new URL('http://google.com/maps'), Key.fromMapKey('j'))).to.be.true;
|
||||
expect(item.includeKey(new URL('http://google.com/maps'), Key.fromMapKey('<C-U>'))).to.be.true;
|
||||
expect(item.includeKey(new URL('http://google.com/maps'), Key.fromMapKey('z'))).to.be.false;
|
||||
expect(item.includeKey(new URL('http://google.com/maps'), Key.fromMapKey('u'))).to.be.false;
|
||||
expect(item.includeKey(new URL('http://maps.google.com/'), Key.fromMapKey('j'))).to.be.false;
|
||||
})
|
||||
});
|
||||
});
|
||||
|
@ -147,9 +150,9 @@ describe('Blacklist', () => {
|
|||
{ url: 'github.com', keys: ['j', 'k'] },
|
||||
]);
|
||||
|
||||
expect(blacklist.includeKey(new URL('https://google.com'), 'j')).to.be.true;
|
||||
expect(blacklist.includeKey(new URL('https://github.com'), 'j')).to.be.true;
|
||||
expect(blacklist.includeKey(new URL('https://github.com'), 'a')).to.be.false;
|
||||
expect(blacklist.includeKey(new URL('https://google.com'), Key.fromMapKey('j'))).to.be.true;
|
||||
expect(blacklist.includeKey(new URL('https://github.com'), Key.fromMapKey('j'))).to.be.true;
|
||||
expect(blacklist.includeKey(new URL('https://github.com'), Key.fromMapKey('a'))).to.be.false;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Reference in a new issue