assert = require 'assert'
fs     = require 'fs'
path   = require 'path'
temp   = require 'temp'

describe 'third-party module', ->
  fixtures = path.join __dirname, 'fixtures'
  temp.track()

  describe 'runas', ->
    it 'can be required in renderer', ->
      require 'runas'

    it 'can be required in node binary', (done) ->
      runas = path.join fixtures, 'module', 'runas.js'
      child = require('child_process').fork runas
      child.on 'message', (msg) ->
        assert.equal msg, 'ok'
        done()

  describe 'pathwatcher', ->
    it 'emits file events correctly', (done) ->
      pathwatcher = require 'pathwatcher'
      temp.mkdir 'dir', (err, dir) ->
        assert err == null
        file = path.join dir, 'file'
        fs.writeFileSync file, 'content'
        watcher = pathwatcher.watch file, (event) ->
          assert.equal event, 'change'
          watcher.close()
          done()
        fs.writeFileSync file, 'content2'

  describe 'q', ->
    Q = require 'q'

    describe 'Q.when', ->
      it 'emits the fullfil callback', (done) ->
        Q(true).then (val) ->
          assert.equal val, true
          done()