voog-kit 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.rspec +3 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.markdown +142 -0
- data/Rakefile +1 -0
- data/bin/kit +212 -0
- data/lib/voog/dtk/filemanager.rb +784 -0
- data/lib/voog/dtk/guard.rb +147 -0
- data/lib/voog/dtk/notifier.rb +34 -0
- data/lib/voog/dtk/version.rb +5 -0
- data/lib/voog/dtk.rb +131 -0
- data/spec/fixtures/.DS_Store +0 -0
- data/spec/fixtures/.voog +3 -0
- data/spec/fixtures/.voog2 +7 -0
- data/spec/fixtures/images/bullet.png +0 -0
- data/spec/fixtures/layout.json +12 -0
- data/spec/fixtures/layout_asset.json +15 -0
- data/spec/fixtures/layout_assets.json +7 -0
- data/spec/fixtures/layouts.json +9 -0
- data/spec/fixtures/manifest.json +17 -0
- data/spec/models/dtk/config_spec.rb +82 -0
- data/spec/models/dtk/filemanager_spec.rb +524 -0
- data/spec/spec_helper.rb +38 -0
- data/voog-kit.gemspec +34 -0
- metadata +238 -0
@@ -0,0 +1,524 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'json'
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
describe Voog::Dtk::FileManager do
|
7
|
+
before :all do
|
8
|
+
Dir.mkdir 'TEST'
|
9
|
+
Dir.chdir 'TEST'
|
10
|
+
@filemanager = Voog::Dtk::FileManager.new(nil, false, true)
|
11
|
+
@dir = Dir.new('.')
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#create_asset' do
|
15
|
+
before :each do
|
16
|
+
@filemanager.create_folders
|
17
|
+
end
|
18
|
+
|
19
|
+
after :each do
|
20
|
+
FileUtils.rm_r Dir['**']
|
21
|
+
@filemanager.create_folders
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with no asset provided' do
|
25
|
+
it 'does not create any new files' do
|
26
|
+
@old_count = Dir['**/*'].length
|
27
|
+
@filemanager.create_asset
|
28
|
+
@new_count = Dir['**/*'].length
|
29
|
+
expect(@new_count).to eq(@old_count)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'with an invalid asset provided' do
|
34
|
+
it 'does not create any new files' do
|
35
|
+
@old_files = Dir['**/*']
|
36
|
+
@filemanager.create_asset OpenStruct.new(filename: '', asset_type: 'stylesheet')
|
37
|
+
@new_files = Dir['**/*']
|
38
|
+
expect((@new_files - @old_files).count).to eq(0)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'with a valid asset provided' do
|
43
|
+
before :each do
|
44
|
+
@old_files = Dir['**/*']
|
45
|
+
@filemanager.create_asset get_layout_asset
|
46
|
+
@new_files = Dir['**/*']
|
47
|
+
end
|
48
|
+
it 'creates a new file in the file system' do
|
49
|
+
expect(@new_files.count).to eq(@old_files.count + 1)
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'creates a file with the same contents as the provided asset' do
|
53
|
+
expect(File.read(Dir.getwd + '/stylesheets/test.css')).to eq('test data')
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'creates a file with the same name as the provided asset' do
|
57
|
+
expect(@new_files - @old_files).to eq(['stylesheets/test.css'])
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#create_layout' do
|
63
|
+
before :each do
|
64
|
+
@filemanager.create_folders
|
65
|
+
end
|
66
|
+
|
67
|
+
after :each do
|
68
|
+
FileUtils.rm_r Dir['**']
|
69
|
+
@filemanager.create_folders
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'with no layout provided' do
|
73
|
+
it 'does not create any new files' do
|
74
|
+
@old_files = Dir['**/*']
|
75
|
+
@filemanager.create_asset
|
76
|
+
@new_files = Dir['**/*']
|
77
|
+
expect((@new_files - @old_files).count).to eq(0)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'with an invalid layout provided' do
|
82
|
+
it 'does not create any new files' do
|
83
|
+
@old_files = Dir['**/*']
|
84
|
+
@filemanager.create_asset OpenStruct.new('component' => nil, 'body' => false)
|
85
|
+
@new_files = Dir['**/*']
|
86
|
+
expect((@new_files - @old_files).count).to eq(0)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
context 'with a valid layout provided' do
|
91
|
+
before :each do
|
92
|
+
@old_files = Dir['**/*']
|
93
|
+
@filemanager.create_layout get_layout
|
94
|
+
@new_files = Dir['**/*']
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'creates a new file in the file system' do
|
98
|
+
expect(@new_files.count).to eq(@old_files.count + 1)
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'creates a file with the same contents as the provided asset' do
|
102
|
+
expect(File.read(Dir.getwd + '/components/test.tpl')).to eq('test body')
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'creates a file with the same name as the provided asset' do
|
106
|
+
expect(@new_files - @old_files).to eq(['components/test.tpl'])
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe '#create_folders' do
|
112
|
+
|
113
|
+
it 'creates all folders in the given list' do
|
114
|
+
@filemanager.create_folders
|
115
|
+
folders = %w(stylesheets images assets javascripts components layouts)
|
116
|
+
# check if the folders array is a subset of current directory's contents
|
117
|
+
expect((@dir.entries & folders).length).to eq(folders.length)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
describe '#valid?' do
|
122
|
+
context 'with malformed data' do
|
123
|
+
it 'returns false' do
|
124
|
+
expect(@filemanager.valid?('{[... )')).to be false
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'with empty' do
|
129
|
+
it 'returns false' do
|
130
|
+
expect(@filemanager.valid?('{}')).to be false
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
context 'with invalid data' do
|
135
|
+
it 'returns false' do
|
136
|
+
data = get_layouts
|
137
|
+
data.first.delete_field('title')
|
138
|
+
expect(@filemanager.valid?(data)).to be false
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
context 'with valid data' do
|
143
|
+
it 'returns true' do
|
144
|
+
expect(@filemanager.valid?(get_layouts)).to be true
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
describe '#generate_manifest' do
|
150
|
+
context 'with empty data' do
|
151
|
+
it 'doesn\'t generate a "manifest.json" file' do
|
152
|
+
@filemanager.generate_manifest(Hash.new, Hash.new)
|
153
|
+
expect(@dir.entries.include?('manifest.json')).to be false
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
context 'with valid data' do
|
158
|
+
let(:layouts) { get_layouts }
|
159
|
+
let(:layout_assets) { get_layout_assets }
|
160
|
+
|
161
|
+
it 'generates a "manifest.json" file' do
|
162
|
+
@filemanager.generate_manifest(layouts, layout_assets)
|
163
|
+
expect(@dir.entries.include?('manifest.json')).to be true
|
164
|
+
end
|
165
|
+
|
166
|
+
it 'writes valid data into "manifest.json"' do
|
167
|
+
@filemanager.generate_manifest(layouts, layout_assets)
|
168
|
+
@manifest = @filemanager.read_manifest
|
169
|
+
expect(@manifest['layouts'].first['title']).to eq(get_layouts.first.title)
|
170
|
+
expect(@manifest['assets'].first['content_type']).to eq(get_layout_assets.first.content_type)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
context 'with invalid data' do
|
175
|
+
let(:layouts) { '"foo: { ]' }
|
176
|
+
let(:layout_assets) { 'bar": [.. )' }
|
177
|
+
|
178
|
+
it 'returns false' do
|
179
|
+
expect(@filemanager.generate_manifest(layouts, layout_assets)).to be false
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
184
|
+
|
185
|
+
describe '#add_to_manifest' do
|
186
|
+
before do
|
187
|
+
@filemanager.generate_manifest(get_layouts, get_layout_assets)
|
188
|
+
@old_manifest = @filemanager.read_manifest
|
189
|
+
end
|
190
|
+
context 'with empty data' do
|
191
|
+
it 'doesn\'t change the manifest file' do
|
192
|
+
@filemanager.add_to_manifest
|
193
|
+
@manifest = @filemanager.read_manifest
|
194
|
+
expect(@manifest['layouts'].length).to eq(@old_manifest['layouts'].length)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
context 'with existing data' do
|
199
|
+
it 'doesn\'t add a duplicate file' do
|
200
|
+
testfiles = ['components/test_layout.tpl', 'layouts/testfile.tpl']
|
201
|
+
@filemanager.add_to_manifest testfiles
|
202
|
+
@manifest = @filemanager.read_manifest
|
203
|
+
expect(
|
204
|
+
@manifest['layouts'].select { |l| l['file'] == 'components/test_layout.tpl'}.length
|
205
|
+
).to eq(1)
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
context 'with a single valid filename' do
|
210
|
+
it 'creates a new layout in the manifest' do
|
211
|
+
@filemanager.add_to_manifest 'components/testfile.tpl'
|
212
|
+
@manifest = @filemanager.read_manifest
|
213
|
+
expect(@manifest['layouts'].length).to eq(2)
|
214
|
+
end
|
215
|
+
|
216
|
+
it 'adds the correct data for the new layout' do
|
217
|
+
testfile = 'components/testfile.tpl'
|
218
|
+
@filemanager.add_to_manifest testfile
|
219
|
+
@manifest = @filemanager.read_manifest
|
220
|
+
new_layout = @manifest['layouts'].find{|l| l['file'] == testfile}
|
221
|
+
layout = {
|
222
|
+
'content_type' => 'component',
|
223
|
+
'component' => true,
|
224
|
+
'file' => 'components/testfile.tpl',
|
225
|
+
'layout_name' => 'testfile',
|
226
|
+
'title' => 'testfile'
|
227
|
+
}
|
228
|
+
expect(new_layout).to eq(layout)
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
context 'with multiple valid filenames' do
|
233
|
+
it 'adds new layouts to the manifest file' do
|
234
|
+
testfiles = ['components/testfile2.tpl', 'components/testfile3.tpl']
|
235
|
+
@filemanager.add_to_manifest testfiles
|
236
|
+
@manifest = @filemanager.read_manifest
|
237
|
+
expect(@manifest['layouts'].length).to eq(1 + testfiles.length)
|
238
|
+
end
|
239
|
+
|
240
|
+
it 'adds the correct data for the new layouts' do
|
241
|
+
testfiles = ['components/testfile2.tpl', 'layouts/testfile3.tpl']
|
242
|
+
@filemanager.add_to_manifest testfiles
|
243
|
+
@manifest = @filemanager.read_manifest
|
244
|
+
new_layout = @manifest['layouts'].last
|
245
|
+
expect(new_layout).to eq(
|
246
|
+
'content_type' => 'page',
|
247
|
+
'component' => false,
|
248
|
+
'file' => 'layouts/testfile3.tpl',
|
249
|
+
'layout_name' => 'testfile3',
|
250
|
+
'title' => 'Testfile3'
|
251
|
+
)
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
context 'with both valid and invalid filenames' do
|
256
|
+
it 'adds only valid files to the manifest' do
|
257
|
+
@old_manifest = @filemanager.read_manifest
|
258
|
+
testfiles = ['components/testfile2.tpl', 'javascripts/testfile.js', 'invalid/file']
|
259
|
+
@filemanager.add_to_manifest testfiles
|
260
|
+
@manifest = @filemanager.read_manifest
|
261
|
+
expect(@manifest['layouts'].length).to eq(@old_manifest['layouts'].length + 1)
|
262
|
+
expect(@manifest['assets'].length).to eq(@old_manifest['assets'].length + 1)
|
263
|
+
end
|
264
|
+
|
265
|
+
it 'does not add invalid files to the manifest' do
|
266
|
+
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
271
|
+
describe '#in_manifest?' do
|
272
|
+
before :all do
|
273
|
+
@manifest = JSON.parse(File.read(FIXTURE_PATH + '/manifest.json'))
|
274
|
+
end
|
275
|
+
context 'with a valid filename' do
|
276
|
+
it 'returns true if the file is in the manifest' do
|
277
|
+
filename = 'components/test_component.tpl'
|
278
|
+
expect(@filemanager.in_manifest?(filename, @manifest)).to eq(true)
|
279
|
+
end
|
280
|
+
it 'returns false if the file is not in the manifest' do
|
281
|
+
filename = 'components/wrong_file.tpl'
|
282
|
+
expect(@filemanager.in_manifest?(filename, @manifest)).to be_false
|
283
|
+
end
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
287
|
+
describe '#remove_from_manifest', focus: true do
|
288
|
+
before :all do
|
289
|
+
@filemanager.generate_manifest(get_layouts, get_layout_assets)
|
290
|
+
@filemanager.add_to_manifest ['components/testfile2.tpl', 'assets/test.svg']
|
291
|
+
@old_manifest = @filemanager.read_manifest
|
292
|
+
end
|
293
|
+
|
294
|
+
context 'with empty data' do
|
295
|
+
it 'doesn\'t remove anything from the manifest' do
|
296
|
+
@filemanager.remove_from_manifest
|
297
|
+
@manifest = @filemanager.read_manifest
|
298
|
+
expect(@manifest['layouts'].length).to eq(@old_manifest['layouts'].length)
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
context 'with invalid data' do
|
303
|
+
it 'doesn\'t remove anything from the manifest' do
|
304
|
+
@filemanager.remove_from_manifest 'files/testfile2.tpl'
|
305
|
+
@manifest = @filemanager.read_manifest
|
306
|
+
expect(@manifest['layouts'].length).to eq(@old_manifest['layouts'].length)
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
context 'with valid data' do
|
311
|
+
it 'removes the provided layouts from the manifest' do
|
312
|
+
@filemanager.remove_from_manifest ['components/testfile2.tpl', 'assets/test.svg']
|
313
|
+
@manifest = @filemanager.read_manifest
|
314
|
+
expect(@manifest['layouts'].length).to eq(@old_manifest['layouts'].length - 1)
|
315
|
+
expect(@manifest['assets'].length).to eq(@old_manifest['assets'].length - 1)
|
316
|
+
end
|
317
|
+
end
|
318
|
+
end
|
319
|
+
|
320
|
+
describe '#check' do
|
321
|
+
context 'with an empty folder' do
|
322
|
+
it 'returns false' do
|
323
|
+
expect(@filemanager.check).to be_false
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
context 'with empty manifest.json but no files' do
|
328
|
+
it 'returns false' do
|
329
|
+
File.open('manifest.json', 'w+') do |file|
|
330
|
+
file << {
|
331
|
+
'layouts' => [],
|
332
|
+
'assets' => []
|
333
|
+
}.to_json
|
334
|
+
end
|
335
|
+
expect(@filemanager.check).to be_false
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
339
|
+
context 'with filled manifest.json but no files' do
|
340
|
+
it 'returns false' do
|
341
|
+
File.open('manifest.json', 'w+') do |file|
|
342
|
+
file << {
|
343
|
+
'layouts' => [{
|
344
|
+
"component" => false,
|
345
|
+
"content_type" => "page",
|
346
|
+
"file" => "layouts/front_page.tpl",
|
347
|
+
"layout_name" => "page_front",
|
348
|
+
"title" => "Front page"
|
349
|
+
}],
|
350
|
+
'assets' => []
|
351
|
+
}.to_json
|
352
|
+
end
|
353
|
+
expect(@filemanager.check).to be_false
|
354
|
+
end
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
358
|
+
describe '#generate_local_manifest' do
|
359
|
+
before :each do
|
360
|
+
Dir.mkdir 'TEST'
|
361
|
+
Dir.chdir 'TEST'
|
362
|
+
end
|
363
|
+
|
364
|
+
after :each do
|
365
|
+
Dir.chdir '..'
|
366
|
+
FileUtils.rm_r 'TEST'
|
367
|
+
end
|
368
|
+
|
369
|
+
context 'with no local files or folders' do
|
370
|
+
before :each do
|
371
|
+
@dir = Dir.new('.')
|
372
|
+
@prev_entries = @dir.entries
|
373
|
+
end
|
374
|
+
|
375
|
+
after :each do
|
376
|
+
FileUtils.rm 'manifest.json' if File.exists? 'manifest.jsons'
|
377
|
+
end
|
378
|
+
|
379
|
+
it 'returns false' do
|
380
|
+
expect(@filemanager.generate_local_manifest).to be_false
|
381
|
+
end
|
382
|
+
|
383
|
+
it 'doesn\'t generate a manifest.json file' do
|
384
|
+
@filemanager.generate_local_manifest
|
385
|
+
expect(@dir.entries.length).to eq(@prev_entries.length)
|
386
|
+
end
|
387
|
+
end
|
388
|
+
|
389
|
+
context 'with empty folders' do
|
390
|
+
before :each do
|
391
|
+
FileUtils.mkdir 'layouts'
|
392
|
+
FileUtils.mkdir 'components'
|
393
|
+
end
|
394
|
+
|
395
|
+
after :each do
|
396
|
+
FileUtils.rm_r 'layouts'
|
397
|
+
FileUtils.rm_r 'components'
|
398
|
+
FileUtils.rm_r 'manifest.json' if File.exists? 'manifest.json'
|
399
|
+
end
|
400
|
+
|
401
|
+
it 'generates a manifest file' do
|
402
|
+
@filemanager.generate_local_manifest
|
403
|
+
expect(File.exists? 'manifest.json').to be_true
|
404
|
+
@manifest = @filemanager.read_manifest
|
405
|
+
end
|
406
|
+
|
407
|
+
it 'adds no layouts or components to the manifest' do
|
408
|
+
@filemanager.generate_local_manifest
|
409
|
+
@manifest = @filemanager.read_manifest
|
410
|
+
expect(@manifest['layouts'].length).to eq(0)
|
411
|
+
end
|
412
|
+
|
413
|
+
it 'returns true' do
|
414
|
+
expect(@filemanager.generate_local_manifest).to be_true
|
415
|
+
end
|
416
|
+
end
|
417
|
+
|
418
|
+
context 'with layout files' do
|
419
|
+
before :each do
|
420
|
+
FileUtils.mkdir ('layouts')
|
421
|
+
FileUtils.mkdir ('components')
|
422
|
+
File.open('layouts/front_page.tpl', 'w+')
|
423
|
+
end
|
424
|
+
|
425
|
+
after :each do
|
426
|
+
FileUtils.rm('layouts/front_page.tpl')
|
427
|
+
FileUtils.rm_r 'layouts'
|
428
|
+
FileUtils.rm_r 'components'
|
429
|
+
end
|
430
|
+
|
431
|
+
it 'adds the files to the manifest' do
|
432
|
+
@filemanager.generate_local_manifest
|
433
|
+
@manifest = @filemanager.read_manifest
|
434
|
+
expect(@manifest['layouts'].length).to eq(1)
|
435
|
+
end
|
436
|
+
|
437
|
+
it 'adds the files in a correct format to the manifest' do
|
438
|
+
@filemanager.generate_local_manifest
|
439
|
+
@manifest = @filemanager.read_manifest
|
440
|
+
layout = @manifest['layouts'].first
|
441
|
+
expect(layout['component']).to be_false
|
442
|
+
expect(layout['content_type']).to eq('page')
|
443
|
+
expect(layout['file']).to eq('layouts/front_page.tpl')
|
444
|
+
expect(layout['layout_name']).to eq('page_default')
|
445
|
+
expect(layout['title']).to eq('Front page')
|
446
|
+
end
|
447
|
+
|
448
|
+
it 'returns true' do
|
449
|
+
expect(@filemanager.generate_local_manifest).to be_true
|
450
|
+
end
|
451
|
+
end
|
452
|
+
end
|
453
|
+
|
454
|
+
describe '#fetch_boilerplate' do
|
455
|
+
context 'with no files in the working directory' do
|
456
|
+
before :each do
|
457
|
+
@prev_files = Dir['*']
|
458
|
+
end
|
459
|
+
|
460
|
+
after :each do
|
461
|
+
Dir['*'].each do |f|
|
462
|
+
FileUtils.rm_r f
|
463
|
+
end
|
464
|
+
end
|
465
|
+
|
466
|
+
it 'downloads and copies the boilerplate files' do
|
467
|
+
@filemanager.fetch_boilerplate
|
468
|
+
@files = Dir['*']
|
469
|
+
expected_files = [
|
470
|
+
'assets', 'images',
|
471
|
+
'components', 'javascripts',
|
472
|
+
'layouts', 'stylesheets',
|
473
|
+
'manifest.json'
|
474
|
+
]
|
475
|
+
expect(expected_files & @files).to eq(expected_files)
|
476
|
+
end
|
477
|
+
|
478
|
+
it 'removes the \'tmp\' directory' do
|
479
|
+
@filemanager.fetch_boilerplate
|
480
|
+
@files = Dir['*']
|
481
|
+
expect(@files.include? 'tmp').to be_false
|
482
|
+
end
|
483
|
+
|
484
|
+
it 'returns true' do
|
485
|
+
expect(@filemanager.fetch_boilerplate).to be_true
|
486
|
+
end
|
487
|
+
end
|
488
|
+
|
489
|
+
context 'with files in the working directory' do
|
490
|
+
before :all do
|
491
|
+
@prev_files = Dir['*']
|
492
|
+
File.open('test.txt', 'w+')
|
493
|
+
File.open('manifest.json', 'w+') do |file| file << "[]" end
|
494
|
+
@old_manifest = File.open('manifest.json')
|
495
|
+
Dir.mkdir('test')
|
496
|
+
@return_value = @filemanager.fetch_boilerplate
|
497
|
+
@manifest = File.open('manifest.json')
|
498
|
+
end
|
499
|
+
|
500
|
+
after :all do
|
501
|
+
Dir['*'].each do |f|
|
502
|
+
FileUtils.rm_r f
|
503
|
+
end
|
504
|
+
end
|
505
|
+
|
506
|
+
it 'overwrites existing files' do
|
507
|
+
expect(@old_manifest.size).not_to eq(@manifest.size)
|
508
|
+
end
|
509
|
+
|
510
|
+
it 'doesn\'t modify other files' do
|
511
|
+
expect(@old_manifest.stat.mtime).not_to eq(@manifest.stat.mtime)
|
512
|
+
end
|
513
|
+
|
514
|
+
it 'returns true' do
|
515
|
+
expect(@return_value).to be_true
|
516
|
+
end
|
517
|
+
end
|
518
|
+
end
|
519
|
+
|
520
|
+
after :all do
|
521
|
+
Dir.chdir '..'
|
522
|
+
FileUtils.rm_r 'TEST'
|
523
|
+
end
|
524
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require_relative '../lib/voog/dtk.rb'
|
2
|
+
require_relative '../lib/voog/dtk/filemanager.rb'
|
3
|
+
require_relative '../lib/voog/dtk/notifier.rb'
|
4
|
+
|
5
|
+
RSpec.configure do |c|
|
6
|
+
# filter_run is short-form alias for filter_run_including
|
7
|
+
c.filter_run focus: true
|
8
|
+
end
|
9
|
+
|
10
|
+
FIXTURE_PATH = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures'))
|
11
|
+
|
12
|
+
def get_layouts
|
13
|
+
JSON.parse(File.read(FIXTURE_PATH + '/layouts.json')).map do |layout|
|
14
|
+
OpenStruct.new(layout.to_h)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_layout_assets
|
19
|
+
JSON.parse(File.read(FIXTURE_PATH + '/layout_assets.json')).map do |asset|
|
20
|
+
OpenStruct.new(asset.to_h)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def get_layout_asset
|
25
|
+
OpenStruct.new(
|
26
|
+
JSON.parse(
|
27
|
+
File.read(FIXTURE_PATH + '/layout_asset.json')
|
28
|
+
).to_h
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_layout
|
33
|
+
OpenStruct.new(
|
34
|
+
JSON.parse(
|
35
|
+
File.read(FIXTURE_PATH + '/layout.json')
|
36
|
+
).to_h
|
37
|
+
)
|
38
|
+
end
|
data/voog-kit.gemspec
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'voog/dtk/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'voog-kit'
|
8
|
+
spec.version = Voog::Dtk::VERSION
|
9
|
+
spec.authors = ['Mikk Pristavka', 'Priit Haamer']
|
10
|
+
spec.email = ['mikk@fraktal.ee', 'priit@voog.com']
|
11
|
+
spec.description = %q{Tools that help Voog design development}
|
12
|
+
spec.summary = %q{Voog Developer Toolkit}
|
13
|
+
spec.homepage = 'http://voog.com/developers/voog-kit'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
spec.bindir = 'bin'
|
21
|
+
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
23
|
+
spec.add_development_dependency 'rake'
|
24
|
+
spec.add_development_dependency 'rspec'
|
25
|
+
|
26
|
+
spec.add_runtime_dependency 'gli', '2.10.0'
|
27
|
+
spec.add_runtime_dependency 'pry', '~> 0.9.12'
|
28
|
+
spec.add_runtime_dependency 'guard', '~> 2.3.0'
|
29
|
+
spec.add_runtime_dependency 'git'
|
30
|
+
spec.add_runtime_dependency 'parseconfig'
|
31
|
+
spec.add_runtime_dependency 'voog_api', '~> 0.0.7'
|
32
|
+
spec.add_runtime_dependency 'colorize'
|
33
|
+
spec.add_runtime_dependency 'mime-types', '~> 1.25.1'
|
34
|
+
end
|