Bump version
This commit is contained in:
+13
-12
@@ -1,5 +1,5 @@
|
||||
const { expect } = require('chai');
|
||||
const { isExcluded } = require('../build/lib/entityFilter');
|
||||
const { isExcluded, buildExcludeRegexps } = require('../build/lib/entityFilter');
|
||||
|
||||
describe('entityFilter.isExcluded', () => {
|
||||
it('returns false for an empty pattern list', () => {
|
||||
@@ -7,41 +7,42 @@ describe('entityFilter.isExcluded', () => {
|
||||
});
|
||||
|
||||
it('matches a simple glob with leading wildcard', () => {
|
||||
expect(isExcluded('switch.iob_shelly_xyz', ['*.iob_*'])).to.equal(true);
|
||||
expect(isExcluded('switch.iob_shelly_xyz', buildExcludeRegexps(['*.iob_*']))).to.equal(true);
|
||||
});
|
||||
|
||||
it('matches the bridge mirror naming pattern', () => {
|
||||
expect(isExcluded('light.iob_ha_eg_wz1__e_licht_decke', ['*.iob_*__*'])).to.equal(true);
|
||||
expect(isExcluded('light.iob_ha_eg_wz1__e_licht_decke', buildExcludeRegexps(['*.iob_*__*']))).to.equal(true);
|
||||
});
|
||||
|
||||
it('handles entities that miss a required literal segment', () => {
|
||||
// *.iob_*__* requires the literal `__` segment — entities without it do not match
|
||||
expect(isExcluded('switch.iob_', ['*.iob_*__*'])).to.equal(false);
|
||||
expect(isExcluded('switch.iob_foo', ['*.iob_*__*'])).to.equal(false);
|
||||
const regexps = buildExcludeRegexps(['*.iob_*__*']);
|
||||
expect(isExcluded('switch.iob_', regexps)).to.equal(false);
|
||||
expect(isExcluded('switch.iob_foo', regexps)).to.equal(false);
|
||||
// Naming-Convention safety: similarly named entities without `__` are safe
|
||||
expect(isExcluded('sensor.scheune_temperatur', ['*.sc_*__*'])).to.equal(false);
|
||||
expect(isExcluded('sensor.scheune_temperatur', buildExcludeRegexps(['*.sc_*__*']))).to.equal(false);
|
||||
});
|
||||
|
||||
it('matches multiple patterns (OR semantic)', () => {
|
||||
const patterns = ['*.iob_*__*', '*.knx_*', '*.ha_*__*'];
|
||||
const patterns = buildExcludeRegexps(['*.iob_*__*', '*.knx_*', '*.ha_*__*']);
|
||||
expect(isExcluded('switch.knx_foo', patterns)).to.equal(true);
|
||||
expect(isExcluded('switch.ha_eg_wz1__e_licht_decke', patterns)).to.equal(true);
|
||||
expect(isExcluded('switch.something_else', patterns)).to.equal(false);
|
||||
});
|
||||
|
||||
it('is case sensitive', () => {
|
||||
expect(isExcluded('switch.IOB_foo', ['*.iob_*'])).to.equal(false);
|
||||
expect(isExcluded('switch.iob_foo', ['*.IOB_*'])).to.equal(false);
|
||||
expect(isExcluded('switch.IOB_foo', buildExcludeRegexps(['*.iob_*']))).to.equal(false);
|
||||
expect(isExcluded('switch.iob_foo', buildExcludeRegexps(['*.IOB_*']))).to.equal(false);
|
||||
});
|
||||
|
||||
it('treats * as matching any characters including dots', () => {
|
||||
// We use full entity_id including the leading domain, so this is fine.
|
||||
expect(isExcluded('switch.iob_foo', ['*foo*'])).to.equal(true);
|
||||
expect(isExcluded('switch.iob_foo', buildExcludeRegexps(['*foo*']))).to.equal(true);
|
||||
});
|
||||
|
||||
it('escapes regex metacharacters in patterns', () => {
|
||||
// `.` in pattern matches literal `.`, not "any char"
|
||||
expect(isExcluded('switch.iob_foo', ['switch.iob_foo'])).to.equal(true);
|
||||
expect(isExcluded('switchXiob_foo', ['switch.iob_foo'])).to.equal(false);
|
||||
expect(isExcluded('switch.iob_foo', buildExcludeRegexps(['switch.iob_foo']))).to.equal(true);
|
||||
expect(isExcluded('switchXiob_foo', buildExcludeRegexps(['switch.iob_foo']))).to.equal(false);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user