Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80668 views
1
/**
2
* Copyright 2013 Facebook, Inc.
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*
16
* @emails [email protected] [email protected]
17
*/
18
19
describe('extract', function() {
20
var extract = require('../lib/parse/extract');
21
22
describe('require', function() {
23
it('should extract normal requires', function() {
24
var code =
25
'var a = require("foo");\n' +
26
'var b = require("bar");\n';
27
expect(extract.requireCalls(code)).toEqual(['foo', 'bar']);
28
});
29
30
31
it('should not extract from comments', function() {
32
var code =
33
'/* a = require("b") */\n' +
34
'var a = require("foo");\n' +
35
'// var a = require("yada");\n' +
36
'var b = require("bar");\n';
37
expect(extract.requireCalls(code)).toEqual(['foo', 'bar']);
38
});
39
40
41
it('should extract require at the start', function() {
42
var code =
43
'require("foo");\n' +
44
'var b = require("bar");\n';
45
expect(extract.requireCalls(code)).toEqual(['foo', 'bar']);
46
});
47
48
49
it('should ingore non require', function() {
50
var code =
51
'require("foo");\n' +
52
'foo.require("something");\n' +
53
'foo_require("something_new");\n' +
54
'var b = [require("bar")];\n';
55
expect(extract.requireCalls(code)).toEqual(['foo', 'bar']);
56
});
57
58
59
it('should dedupe matches', function() {
60
var code =
61
'require("foo");\n' +
62
'var b = require("foo");\n';
63
expect(extract.requireCalls(code)).toEqual(['foo']);
64
});
65
});
66
67
describe('requireLazy', function() {
68
it('should extract simplest case', function() {
69
var code =
70
'requireLazy(["foo", \'bar\'], function() {\n' +
71
' return 2 + 2;\n';
72
'});\n';
73
expect(extract.requireLazyCalls(code)).toEqual(['foo', 'bar']);
74
});
75
76
it('should ingore invalid cases', function() {
77
var code =
78
'foo.requireLazy(["foo", \'bar\'], function() {\n' +
79
' return 2 + 2;\n';
80
'});\n';
81
expect(extract.requireLazyCalls(code)).toEqual([]);
82
});
83
84
it('should dedup', function() {
85
var code =
86
'requireLazy(["foo", \'bar\'], function(f, b) {\n' +
87
' requireLazy(["foo", "baz"], function(f, b) {\n' +
88
' alert(1);\n' +
89
' };\n' +
90
' return 2 + 2;\n' +
91
'});\n';
92
expect(extract.requireLazyCalls(code)).toEqual(['foo', 'bar', 'baz']);
93
});
94
});
95
96
describe('loadModules', function() {
97
it('should extract simplest case', function() {
98
var code =
99
'Bootloader.loadModules(["foo", \'bar\'], function(f, b) {\n' +
100
' return 2 + 2;\n' +
101
'});\n';
102
expect(extract.loadModules(code)).toEqual(['foo', 'bar']);
103
});
104
105
it('should ingore invalid cases', function() {
106
var code =
107
'foo.Bootloader.loadModules(["foo", \'bar\'], function() {\n' +
108
' return 2 + 2;\n' +
109
'});\n';
110
expect(extract.loadModules(code)).toEqual([]);
111
});
112
113
it('should dedup', function() {
114
var code =
115
'Bootloader.loadModules(["foo", \'bar\'], function() {\n' +
116
' Bootloader.loadModules(["foo", "baz"], function() {\n' +
117
' alert(1);\n' +
118
' };\n' +
119
' return 2 + 2;\n' +
120
'});\n';
121
expect(extract.loadModules(code)).toEqual(['foo', 'bar', 'baz']);
122
});
123
});
124
125
describe('loadComponents', function() {
126
it('should extract simplest case', function() {
127
var code =
128
'Bootloader.loadComponents(["foo", \'bar\'], function(f, b) {\n' +
129
' return 2 + 2;\n' +
130
'});\n' +
131
'Bootloader.loadComponents(\'baz\', function(f, b) {\n' +
132
' return 2 + 2;\n' +
133
'});\n';
134
expect(extract.loadComponents(code)).toEqual(['foo', 'bar', 'baz']);
135
});
136
137
it('should ingore invalid cases', function() {
138
var code =
139
'foo.Bootloader.loadComponents(["foo", \'bar\'], function() {\n' +
140
' return 2 + 2;\n' +
141
'});\n';
142
expect(extract.loadComponents(code)).toEqual([]);
143
});
144
145
it('should dedup', function() {
146
var code =
147
'Bootloader.loadComponents(["foo", \'bar\'], function() {\n' +
148
' Bootloader.loadComponents(["foo", "baz"], function() {\n' +
149
' alert(1);\n' +
150
' };\n' +
151
' return 2 + 2;\n' +
152
'});\n';
153
expect(extract.loadComponents(code)).toEqual(['foo', 'bar', 'baz']);
154
});
155
});
156
});
157
158