aboutsummaryrefslogtreecommitdiffstats
path: root/docs/spec/writerSpec.js
blob: 1c25078cdda929a73813e80cd99c75fadf9f9d9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
var writer,
    rewire = require('rewire');

function mockResolvedPromise(resolvedValue) {
  return {
    then: function(success, failure) {
      success(resolvedValue);
    }
  };
}

describe('writer', function() {

  beforeEach(function() {
     writer = rewire('../src/writer.js');
  });

  describe('toString', function() {
    var toString;

    beforeEach(function() {
      toString = writer.toString;
    });

    it('should merge string', function() {
      expect(toString('abc')).toEqual('abc');
    });

    it('should merge obj', function() {
      expect(toString({a:1})).toEqual('{"a":1}');
    });

    it('should merge array', function() {
      expect(toString(['abc',{}])).toEqual('abc{}');
    });
  });

  describe('replace method', function() {
    var content,
        replacements;

    beforeEach(function() {
      content = 'angular super jQuery manifest';
    });

    it('should replace placeholders', function() {
      replacements = {'angular': 'ng', 'jQuery': 'jqlite','notHere': 'here'};

      content = writer.replace(content, replacements);
      expect(content).toBe('ng super jqlite manifest');
    });
  });

  describe('copy', function() {
    it('should call the transformation function', function() {
      var readMock = jasmine.createSpy('readMock').andReturn(mockResolvedPromise('DUMMY CONTENT'));
      writer.__set__("qfs.read", readMock);
      var transformationFn = jasmine.createSpy('transformationFn');
      writer.copy('from', 'to', transformationFn, 'arg1', 'arg2');
      expect(readMock).toHaveBeenCalled();
      expect(transformationFn).toHaveBeenCalledWith('DUMMY CONTENT', 'arg1', 'arg2');
    });
  });
});