Make sure protocol module's specs do not pollute main.js.
authorCheng Zhao <zcbenz@gmail.com>
Sun, 25 Aug 2013 12:45:34 +0000 (20:45 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Sun, 25 Aug 2013 12:45:34 +0000 (20:45 +0800)
spec/api/protocol.coffee
spec/main.js

index 84cf0bc..7879d29 100644 (file)
@@ -1,6 +1,7 @@
 assert = require 'assert'
 ipc = require 'ipc'
-protocol = require('remote').require 'protocol'
+remote = require 'remote'
+protocol = remote.require 'protocol'
 
 describe 'protocol API', ->
   describe 'protocol.registerProtocol', ->
@@ -24,29 +25,47 @@ describe 'protocol API', ->
 
   describe 'registered protocol callback', ->
     it 'returns string should send the string as request content', (done) ->
+      handler = remote.createFunctionWithReturnValue 'valar morghulis'
+      protocol.registerProtocol 'atom-string', handler
+
       $.ajax
-        url: 'atom-string://something'
+        url: 'atom-string://fake-host'
         success: (data) ->
-          assert.equal data, 'atom-string://something'
+          assert.equal data, handler()
+          protocol.unregisterProtocol 'atom-string'
           done()
         error: (xhr, errorType, error) ->
           assert false, 'Got error: ' + errorType + ' ' + error
+          protocol.unregisterProtocol 'atom-string'
 
     it 'returns RequestStringJob should send string', (done) ->
+      data = 'valar morghulis'
+      job = new protocol.RequestStringJob(mimeType: 'text/html', data: data)
+      handler = remote.createFunctionWithReturnValue job
+      protocol.registerProtocol 'atom-string-job', handler
+
       $.ajax
-        url: 'atom-string-job://something'
-        success: (data) ->
-          assert.equal data, 'atom-string-job://something'
+        url: 'atom-string-job://fake-host'
+        success: (response) ->
+          assert.equal response, data
+          protocol.unregisterProtocol 'atom-string-job'
           done()
         error: (xhr, errorType, error) ->
           assert false, 'Got error: ' + errorType + ' ' + error
+          protocol.unregisterProtocol 'atom-string-job'
 
     it 'returns RequestFileJob should send file', (done) ->
+      job = new protocol.RequestFileJob(__filename)
+      handler = remote.createFunctionWithReturnValue job
+      protocol.registerProtocol 'atom-file-job', handler
+
       $.ajax
         url: 'atom-file-job://' + __filename
         success: (data) ->
           content = require('fs').readFileSync __filename
           assert.equal data, String(content)
+          protocol.unregisterProtocol 'atom-file-job'
           done()
         error: (xhr, errorType, error) ->
           assert false, 'Got error: ' + errorType + ' ' + error
+          protocol.unregisterProtocol 'atom-file-job'
index ec41f00..0d02115 100644 (file)
@@ -34,23 +34,6 @@ app.on('window-all-closed', function() {
   app.terminate();
 });
 
-app.on('will-finish-launching', function() {
-  // Reigster some protocols, used by the protocol spec.
-  // FIXME(zcbenz): move this to somewhere else.
-  var protocol = require('protocol');
-  protocol.registerProtocol('atom-string', function(url) {
-    return url;
-  });
-
-  protocol.registerProtocol('atom-string-job', function(url) {
-    return new protocol.RequestStringJob({mimeType: 'text/html', data: url});
-  });
-
-  protocol.registerProtocol('atom-file-job', function(url) {
-    return new protocol.RequestFileJob(url.substr(16));
-  });
-});
-
 app.on('finish-launching', function() {
   window = new BrowserWindow({
     title: 'atom-shell tests',