1 |
|
2 |
|
3 | var assert = require('assert');
|
4 | var dedupe = require('../dedupe');
|
5 |
|
6 | describe('dedupe', function () {
|
7 | it('keeps object keys with truthy values', function () {
|
8 | assert.equal(dedupe({
|
9 | a: true,
|
10 | b: false,
|
11 | c: 0,
|
12 | d: null,
|
13 | e: undefined,
|
14 | f: 1
|
15 | }), 'a f');
|
16 | });
|
17 |
|
18 | it('should dedupe dedupe', function () {
|
19 | assert.equal(dedupe('foo', 'bar', 'foo', 'bar', { foo: true }), 'foo bar');
|
20 | });
|
21 |
|
22 | it('should make sure subsequent objects can remove/add classes', function () {
|
23 | assert.equal(dedupe('foo', { foo: false }, { foo: true, bar: true }), 'foo bar');
|
24 | });
|
25 |
|
26 | it('should make sure object with falsy value wipe out previous classes', function () {
|
27 | assert.equal(dedupe('foo foo', 0, null, undefined, true, 1, 'b', { 'foo': false }), '1 b');
|
28 | assert.equal(dedupe('foo', 'foobar', 'bar', { foo: false }), 'foobar bar');
|
29 | assert.equal(dedupe('foo', 'foo-bar', 'bar', { foo: false }), 'foo-bar bar');
|
30 | assert.equal(dedupe('foo', '-moz-foo-bar', 'bar', { foo: false }), '-moz-foo-bar bar');
|
31 | });
|
32 |
|
33 | it('joins arrays of class names and ignore falsy values', function () {
|
34 | assert.equal(dedupe('a', 0, null, undefined, true, 1, 'b'), '1 a b');
|
35 | });
|
36 |
|
37 | it('supports heterogenous arguments', function () {
|
38 | assert.equal(dedupe({a: true}, 'b', 0), 'a b');
|
39 | });
|
40 |
|
41 | it('should be trimmed', function () {
|
42 | assert.equal(dedupe('', 'b', {}, ''), 'b');
|
43 | });
|
44 |
|
45 | it('returns an empty string for an empty configuration', function () {
|
46 | assert.equal(dedupe({}), '');
|
47 | });
|
48 |
|
49 | it('supports an array of class names', function () {
|
50 | assert.equal(dedupe(['a', 'b']), 'a b');
|
51 | });
|
52 |
|
53 | it('joins array arguments with string arguments', function () {
|
54 | assert.equal(dedupe(['a', 'b'], 'c'), 'a b c');
|
55 | assert.equal(dedupe('c', ['a', 'b']), 'c a b');
|
56 | });
|
57 |
|
58 | it('handles multiple array arguments', function () {
|
59 | assert.equal(dedupe(['a', 'b'], ['c', 'd']), 'a b c d');
|
60 | });
|
61 |
|
62 | it('handles arrays that include falsy and true values', function () {
|
63 | assert.equal(dedupe(['a', 0, null, undefined, false, true, 'b']), 'a b');
|
64 | });
|
65 |
|
66 | it('handles arrays that include arrays', function () {
|
67 | assert.equal(dedupe(['a', ['b', 'c']]), 'a b c');
|
68 | });
|
69 |
|
70 | it('handles arrays that include objects', function () {
|
71 | assert.equal(dedupe(['a', {b: true, c: false}]), 'a b');
|
72 | });
|
73 |
|
74 | it('handles deep array recursion', function () {
|
75 | assert.equal(dedupe(['a', ['b', ['c', {d: true}]]]), 'a b c d');
|
76 | });
|
77 | });
|