1 | Loader = require '../lib/loader'
|
2 | ipso = require '../lib/ipso'
|
3 | {sep} = require 'path'
|
4 |
|
5 | describe '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 |
|
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()()
|
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: Saver: require: '../lib/saver'
|
58 | instance.loadModules ['http', 'Saver'],
|
59 |
|
60 | get: (args...) -> args.pop()()
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 | spectate: (opts, m) -> m
|
67 |
|
68 | .then ([http, Saver]) ->
|
69 |
|
70 | http.should.equal require 'http'
|
71 | Saver.should.equal require '../lib/saver'
|
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 |
|