Completed
Pull Request — master (#92)
by Alejandro
04:39 queued 01:24
created

utils.test.js ➔ ... ➔ ???   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 1
eloc 7
nc 1
nop 0
dl 0
loc 17
rs 10
c 3
b 0
f 0
1
import * as sinon from 'sinon';
2
import L from 'leaflet';
3
import marker2x from 'leaflet/dist/images/marker-icon-2x.png';
4
import marker from 'leaflet/dist/images/marker-icon.png';
5
import markerShadow from 'leaflet/dist/images/marker-shadow.png';
6
import { stateFlagTimeout as stateFlagTimeoutFactory, determineOrderDir, fixLeafletIcons } from '../../src/utils/utils';
0 ignored issues
show
Unused Code introduced by
The variable stateFlagTimeout seems to be never used. Consider removing it.
Loading history...
7
8
describe('utils', () => {
9
  describe('stateFlagTimeout', () => {
10
    it('sets state and initializes timeout with provided delay', () => {
11
      const setTimeout = sinon.fake((callback) => callback());
12
      const setState = sinon.spy();
13
      const stateFlagTimeout = stateFlagTimeoutFactory(setTimeout);
14
      const delay = 5000;
15
      const expectedSetStateCalls = 2;
16
17
      stateFlagTimeout(setState, 'foo', false, delay);
18
19
      expect(setState.callCount).toEqual(expectedSetStateCalls);
20
      expect(setState.getCall(0).args).toEqual([{ foo: false }]);
21
      expect(setState.getCall(1).args).toEqual([{ foo: true }]);
22
      expect(setTimeout.callCount).toEqual(1);
23
      expect(setTimeout.getCall(0).args[1]).toEqual(delay);
24
    });
25
  });
26
27
  describe('determineOrderDir', () => {
28
    it('returns ASC when current order field and selected field are different', () => {
29
      expect(determineOrderDir('foo', 'bar')).toEqual('ASC');
30
      expect(determineOrderDir('bar', 'foo')).toEqual('ASC');
31
    });
32
33
    it('returns ASC when no current order dir is provided', () => {
34
      expect(determineOrderDir('foo', 'foo')).toEqual('ASC');
35
      expect(determineOrderDir('bar', 'bar')).toEqual('ASC');
36
    });
37
38
    it('returns DESC when current order field and selected field are equal and current order dir is ASC', () => {
39
      expect(determineOrderDir('foo', 'foo', 'ASC')).toEqual('DESC');
40
      expect(determineOrderDir('bar', 'bar', 'ASC')).toEqual('DESC');
41
    });
42
43
    it('returns undefined when current order field and selected field are equal and current order dir is DESC', () => {
44
      expect(determineOrderDir('foo', 'foo', 'DESC')).toBeUndefined();
45
      expect(determineOrderDir('bar', 'bar', 'DESC')).toBeUndefined();
46
    });
47
  });
48
49
  describe('fixLeafletIcons', () => {
50
    it('updates icons used by leaflet', () => {
51
      fixLeafletIcons();
52
53
      const { iconRetinaUrl, iconUrl, shadowUrl } = L.Icon.Default.prototype.options;
54
55
      expect(iconRetinaUrl).toEqual(marker2x);
56
      expect(iconUrl).toEqual(marker);
57
      expect(shadowUrl).toEqual(markerShadow);
58
    });
59
  });
60
});
61