UNPKG

3.66 kBtext/coffeescriptView Raw
1Loader = require '../lib/loader'
2ipso = require '../lib/ipso'
3{sep} = require 'path'
4
5describe 'Loader', ->
6
7 it 'keeps original cwd', (done) ->
8
9 instance = Loader.create dir: 'DIR'
10 Loader._test().dir.should.equal 'DIR'
11 done()
12
13 it 'can determine if a module starts with Uppercase', (done) ->
14
15 instance = Loader.create dir: 'DIR'
16 Loader._test().upperCase('A').should.equal true
17 Loader._test().upperCase('Z').should.equal true
18 Loader._test().upperCase('a').should.equal false
19 done()
20
21
22 it 'attempts load from does.tagged (async injected) objects first', ipso (done) ->
23
24 instance = Loader.create dir: __dirname
25
26 instance.loadModules ['tag1'],
27
28 #
29 # mock result callback from does.get( query.tag )
30 #
31
32 get: (opts, callback) ->
33 opts.query.should.eql tag: 'tag1'
34 callback null, object: this: 'thing'
35
36 spectate: (opts, object) ->
37
38 opts.should.eql name: 'tag1', tagged: false
39 object.should.eql this: 'thing'
40 done()
41
42 context 'loadModules()', ->
43
44 it 'loads node_modules if starting with lowercase', ipso (done) ->
45
46 instance = Loader.create dir: 'DIR', modules: {}
47 instance.loadModules ['http'], does =
48
49 get: (args...) -> args.pop()() # no tagged objects, empty callback
50 spectate: (opts, http) ->
51
52 http.should.equal require 'http'
53 done()
54
55 it 'loads specified modules by tag', ipso (done) ->
56
57 instance = Loader.create dir: __dirname, modules: Inspector: require: '../lib/inspector'
58 instance.loadModules ['http', 'Inspector'],
59
60 get: (args...) -> args.pop()()
61
62 #
63 # stub does.spectate() to pass through directly
64 #
65
66 spectate: (opts, m) -> m
67
68 .then ([http, Inspector]) ->
69
70 http.should.equal require 'http'
71 Inspector.should.equal require '../lib/inspector'
72 done()
73
74 it 'recurses ./lib for underscored name', ipso (done) ->
75
76 instance = Loader.create dir: process.cwd()
77
78 Loader._test().recurse = (name, path) ->
79 name.should.equal 'module_name'
80 path.should.equal process.cwd() + sep + 'lib'
81 done()
82
83 instance.loadModules ['ModuleName'],
84 get: (args...) -> args.pop()()
85 spectate: (opts, m) -> m
86
87
88 it 'finds match', ipso (done) ->
89
90 instance = Loader.create dir: process.cwd()
91 instance.loadModules ['ModuleName'],
92 get: (args...) -> args.pop()()
93 spectate: (opts, m) -> m
94 .then ([ModuleName]) ->
95
96 ModuleName.test1().should.equal 1
97 done()
98
99 context 'loadModulesSync()', ->
100
101 it 'returns an array of loaded modules', ipso (done) ->
102
103 instance = Loader.create dir: process.cwd()
104 [ModuleName, zlib, NonExistant] = instance.loadModulesSync ['ModuleName', 'zlib', 'NonExistant'],
105 spectateSync: (opts, m) -> m
106
107
108 ModuleName.should.equal require '../lib/testing/recursor/module_name'
109 zlib.should.equal require 'zlib'
110
111 NonExistant.$ipso.PENDING.should.equal true
112 done()
113
114 context 'it is used to inject into suites', ipso (os) ->
115
116 it 'has os', ->
117
118 os.should.equal require 'os'
119
120
121
122
123