UNPKG

2.4 kBJavaScriptView Raw
1/* global describe, it */
2
3var assert = require('assert');
4var dedupe = require('../dedupe');
5
6describe('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});