summaryrefslogtreecommitdiffstats
path: root/emacs.d/lisp/jshint-mode/node_modules/formidable/test/simple/test-file.js
blob: 52ceedb425d8fd48bc25ae7fd39cab31ad092e2b (plain) (blame)
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
var common = require('../common');
var WriteStreamStub = GENTLY.stub('fs', 'WriteStream');

var File = require(common.lib + '/file'),
    EventEmitter = require('events').EventEmitter,
    file,
    gently;

function test(test) {
  gently = new Gently();
  file = new File();
  test();
  gently.verify(test.name);
}

test(function constructor() {
  assert.ok(file instanceof EventEmitter);
  assert.strictEqual(file.size, 0);
  assert.strictEqual(file.path, null);
  assert.strictEqual(file.name, null);
  assert.strictEqual(file.type, null);
  assert.strictEqual(file.lastModifiedDate, null);

  assert.strictEqual(file._writeStream, null);

  (function testSetProperties() {
    var file2 = new File({foo: 'bar'});
    assert.equal(file2.foo, 'bar');
  })();
});

test(function open() {
  var WRITE_STREAM;
  file.path = '/foo';

  gently.expect(WriteStreamStub, 'new', function (path) {
    WRITE_STREAM = this;
    assert.strictEqual(path, file.path);
  });

  file.open();
  assert.strictEqual(file._writeStream, WRITE_STREAM);
});

test(function write() {
  var BUFFER = {length: 10},
      CB_STUB,
      CB = function() {
        CB_STUB.apply(this, arguments);
      };

  file._writeStream = {};

  gently.expect(file._writeStream, 'write', function (buffer, cb) {
    assert.strictEqual(buffer, BUFFER);

    gently.expect(file, 'emit', function (event, bytesWritten) {
      assert.ok(file.lastModifiedDate instanceof Date);
      assert.equal(event, 'progress');
      assert.equal(bytesWritten, file.size);
    });

    CB_STUB = gently.expect(function writeCb() {
      assert.equal(file.size, 10);
    });

    cb();

    gently.expect(file, 'emit', function (event, bytesWritten) {
      assert.equal(event, 'progress');
      assert.equal(bytesWritten, file.size);
    });

    CB_STUB = gently.expect(function writeCb() {
      assert.equal(file.size, 20);
    });

    cb();
  });

  file.write(BUFFER, CB);
});

test(function end() {
  var CB_STUB,
      CB = function() {
        CB_STUB.apply(this, arguments);
      };

  file._writeStream = {};

  gently.expect(file._writeStream, 'end', function (cb) {
    gently.expect(file, 'emit', function (event) {
      assert.equal(event, 'end');
    });

    CB_STUB = gently.expect(function endCb() {
    });

    cb();
  });

  file.end(CB);
});