Skip to content
This repository was archived by the owner on Feb 4, 2018. It is now read-only.

Commit b64107f

Browse files
blondskad0
authored andcommitted
test: add belongsTo method
1 parent 7d0f798 commit b64107f

File tree

1 file changed

+123
-0
lines changed

1 file changed

+123
-0
lines changed

test/belongs-to.test.js

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
const test = require('ava');
2+
3+
const BemEntityName = require('../index');
4+
5+
test('should not detect belonging between block and itself', t => {
6+
const blockName = new BemEntityName({ block: 'block' });
7+
8+
t.false(blockName.belongsTo(blockName));
9+
});
10+
11+
test('should not detect belonging between elem and itself', t => {
12+
const elemName = new BemEntityName({ block: 'block', elem: 'elem' });
13+
14+
t.false(elemName.belongsTo(elemName));
15+
});
16+
17+
test('should not detect belonging between block mod and itself', t => {
18+
const modName = new BemEntityName({ block: 'block', mod: 'mod' });
19+
20+
t.false(modName.belongsTo(modName));
21+
});
22+
23+
test('should not detect belonging between elem mod and itself', t => {
24+
const modName = new BemEntityName({ block: 'block', elem: 'elem', mod: 'mod' });
25+
26+
t.false(modName.belongsTo(modName));
27+
});
28+
29+
test('should resolve belonging between block and its elem', t => {
30+
const blockName = new BemEntityName({ block: 'block' });
31+
const elemName = new BemEntityName({ block: 'block', elem: 'elem' });
32+
33+
t.true(elemName.belongsTo(blockName));
34+
t.false(blockName.belongsTo(elemName));
35+
});
36+
37+
test('should not detect belonging between two block', t => {
38+
const name1 = new BemEntityName({ block: 'block1' });
39+
const name2 = new BemEntityName({ block: 'block2' });
40+
41+
t.false(name1.belongsTo(name2));
42+
t.false(name2.belongsTo(name1));
43+
});
44+
45+
test('should not detect belonging between two mods of block', t => {
46+
const modName1 = new BemEntityName({ block: 'block', mod: 'mod1' });
47+
const modName2 = new BemEntityName({ block: 'block', mod: 'mod2' });
48+
49+
t.false(modName1.belongsTo(modName2));
50+
t.false(modName2.belongsTo(modName1));
51+
});
52+
53+
test('should not detect belonging between two elems of block', t => {
54+
const elemName1 = new BemEntityName({ block: 'block', elem: 'elem1' });
55+
const elemName2 = new BemEntityName({ block: 'block', elem: 'elem2' });
56+
57+
t.false(elemName1.belongsTo(elemName2));
58+
t.false(elemName2.belongsTo(elemName1));
59+
});
60+
61+
test('should resolve belonging between block and its mod', t => {
62+
const blockName = new BemEntityName({ block: 'block' });
63+
const modName = new BemEntityName({ block: 'block', mod: { name: 'mod', val: 'key' } });
64+
65+
t.true(modName.belongsTo(blockName));
66+
t.false(blockName.belongsTo(modName));
67+
});
68+
69+
test('should resolve belonging between elem and its mod', t => {
70+
const elemName = new BemEntityName({ block: 'block', elem: 'elem' });
71+
const modName = new BemEntityName({ block: 'block', elem: 'elem', mod: { name: 'mod', val: 'key' } });
72+
73+
t.true(modName.belongsTo(elemName));
74+
t.false(elemName.belongsTo(modName));
75+
});
76+
77+
test('should not detect belonging between block and its elem mod', t => {
78+
const blockName = new BemEntityName({ block: 'block' });
79+
const elemModName = new BemEntityName({ block: 'block', elem: 'elem', mod: { name: 'mod', val: 'key' } });
80+
81+
t.false(elemModName.belongsTo(blockName));
82+
t.false(blockName.belongsTo(elemModName));
83+
});
84+
85+
test('should not detect belonging between block and its elem with the same mod', t => {
86+
const blockModName = new BemEntityName({ block: 'block', mod: 'mod' });
87+
const elemModName = new BemEntityName({ block: 'block', elem: 'elem', mod: 'mod' });
88+
89+
t.false(elemModName.belongsTo(blockModName));
90+
t.false(blockModName.belongsTo(elemModName));
91+
});
92+
93+
test('should resolve belonging between boolean and key-value mod of block', t => {
94+
const boolModName = new BemEntityName({ block: 'block', mod: { name: 'mod', val: true } });
95+
const modName = new BemEntityName({ block: 'block', mod: { name: 'mod', val: 'key' } });
96+
97+
t.true(modName.belongsTo(boolModName));
98+
t.false(boolModName.belongsTo(modName));
99+
});
100+
101+
test('should resolve belonging between boolean and key-value mod of element', t => {
102+
const boolModName = new BemEntityName({ block: 'block', elem: 'elem', mod: { name: 'mod', val: true } });
103+
const modName = new BemEntityName({ block: 'block', elem: 'elem', mod: { name: 'mod', val: 'key' } });
104+
105+
t.true(modName.belongsTo(boolModName));
106+
t.false(boolModName.belongsTo(modName));
107+
});
108+
109+
test('should not detect belonging between key-value mods of block', t => {
110+
const modName1 = new BemEntityName({ block: 'block', mod: { name: 'mod', val: 'key1' } });
111+
const modName2 = new BemEntityName({ block: 'block', mod: { name: 'mod', val: 'key2' } });
112+
113+
t.false(modName1.belongsTo(modName2));
114+
t.false(modName2.belongsTo(modName1));
115+
});
116+
117+
test('should not detect belonging between key-value mods of elem', t => {
118+
const modName1 = new BemEntityName({ block: 'block', elem: 'elem', mod: { name: 'mod', val: 'key1' } });
119+
const modName2 = new BemEntityName({ block: 'block', elem: 'elem', mod: { name: 'mod', val: 'key2' } });
120+
121+
t.false(modName1.belongsTo(modName2));
122+
t.false(modName2.belongsTo(modName1));
123+
});

0 commit comments

Comments
 (0)