Passed
Pull Request — master (#335)
by Jaisen
01:49
created

test_import_with_full_path()   A

Complexity

Conditions 4

Size

Total Lines 28
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 16
nop 0
dl 0
loc 28
rs 9.6
c 0
b 0
f 0
1
# Project imports
2
from imp import load_source
3
import mock
4
import os
5
import sys
6
import shutil
7
8
from click.testing import CliRunner
9
from nose.plugins.skip import SkipTest
10
from nose.tools import assert_raises
11
from six import text_type, unichr as six_unichr
12
from tempfile import gettempdir
13
14
sys.path.insert(0, os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))))
15
sys.path.insert(0, os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))))
16
17
import helper
18
elodie = load_source('elodie', os.path.abspath('{}/../../elodie.py'.format(os.path.dirname(os.path.realpath(__file__)))))
19
20
from elodie.config import load_config
21
from elodie.localstorage import Db
22
from elodie.media.audio import Audio
23
from elodie.media.photo import Photo
24
from elodie.media.text import Text
25
from elodie.media.video import Video
26
from elodie.plugins.plugins import Plugins
27
from elodie.plugins.googlephotos.googlephotos import GooglePhotos
28
29
os.environ['TZ'] = 'GMT'
30
31
def test_import_file_text():
32
    temporary_folder, folder = helper.create_working_folder()
33
    temporary_folder_destination, folder_destination = helper.create_working_folder()
34
35
    origin = '%s/valid.txt' % folder
36
    shutil.copyfile(helper.get_file('valid.txt'), origin)
37
38
    helper.reset_dbs()
39
    dest_path = elodie.import_file(origin, folder_destination, False, False, False)
40
    helper.restore_dbs()
41
42
    shutil.rmtree(folder)
43
    shutil.rmtree(folder_destination)
44
45
    assert helper.path_tz_fix(os.path.join('2016-04-Apr','London','2016-04-07_11-15-26-valid-sample-title.txt')) in dest_path, dest_path
46
47
def test_import_file_audio():
48
    temporary_folder, folder = helper.create_working_folder()
49
    temporary_folder_destination, folder_destination = helper.create_working_folder()
50
51
    origin = '%s/audio.m4a' % folder
52
    shutil.copyfile(helper.get_file('audio.m4a'), origin)
53
54
    helper.reset_dbs()
55
    dest_path = elodie.import_file(origin, folder_destination, False, False, False)
56
    helper.restore_dbs()
57
58
    shutil.rmtree(folder)
59
    shutil.rmtree(folder_destination)
60
61
    assert helper.path_tz_fix(os.path.join('2016-01-Jan','Houston','2016-01-04_05-28-15-audio.m4a')) in dest_path, dest_path
62
63
def test_import_file_photo():
64
    temporary_folder, folder = helper.create_working_folder()
65
    temporary_folder_destination, folder_destination = helper.create_working_folder()
66
67
    origin = '%s/plain.jpg' % folder
68
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
69
70
    helper.reset_dbs()
71
    dest_path = elodie.import_file(origin, folder_destination, False, False, False)
72
    helper.restore_dbs()
73
74
    shutil.rmtree(folder)
75
    shutil.rmtree(folder_destination)
76
77
    assert helper.path_tz_fix(os.path.join('2015-12-Dec','Unknown Location','2015-12-05_00-59-26-plain.jpg')) in dest_path, dest_path
78
79
def test_import_file_video():
80
    temporary_folder, folder = helper.create_working_folder()
81
    temporary_folder_destination, folder_destination = helper.create_working_folder()
82
83
    origin = '%s/video.mov' % folder
84
    shutil.copyfile(helper.get_file('video.mov'), origin)
85
86
    helper.reset_dbs()
87
    dest_path = elodie.import_file(origin, folder_destination, False, False, False)
88
    helper.restore_dbs()
89
90
    shutil.rmtree(folder)
91
    shutil.rmtree(folder_destination)
92
93
    assert helper.path_tz_fix(os.path.join('2015-01-Jan','California','2015-01-19_12-45-11-video.mov')) in dest_path, dest_path
94
95 View Code Duplication
def test_import_file_path_utf8_encoded_ascii_checkmark():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
96
    temporary_folder, folder = helper.create_working_folder()
97
    temporary_folder_destination, folder_destination = helper.create_working_folder()
98
99
    origin = text_type(folder)+u'/unicode\u2713filename.txt'
100
    # encode the unicode string to ascii
101
    origin = origin.encode('utf-8')
102
103
    shutil.copyfile(helper.get_file('valid.txt'), origin)
104
105
    helper.reset_dbs()
106
    dest_path = elodie.import_file(origin, folder_destination, False, False, False)
107
    helper.restore_dbs()
108
109
    shutil.rmtree(folder)
110
    shutil.rmtree(folder_destination)
111
112
    assert helper.path_tz_fix(os.path.join('2016-04-Apr','London',u'2016-04-07_11-15-26-unicode\u2713filename-sample-title.txt')) in dest_path, dest_path
113
114 View Code Duplication
def test_import_file_path_unicode_checkmark():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
115
    temporary_folder, folder = helper.create_working_folder()
116
    temporary_folder_destination, folder_destination = helper.create_working_folder()
117
118
    origin = text_type(folder)+u'/unicode\u2713filename.txt'
119
120
    shutil.copyfile(helper.get_file('valid.txt'), origin)
121
122
    helper.reset_dbs()
123
    dest_path = elodie.import_file(origin, folder_destination, False, False, False)
124
    helper.restore_dbs()
125
126
    shutil.rmtree(folder)
127
    shutil.rmtree(folder_destination)
128
129
    assert helper.path_tz_fix(os.path.join('2016-04-Apr','London',u'2016-04-07_11-15-26-unicode\u2713filename-sample-title.txt')) in dest_path, dest_path
130
131 View Code Duplication
def test_import_file_path_utf8_encoded_ascii_latin_nbsp():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
132
    temporary_folder, folder = helper.create_working_folder()
133
    temporary_folder_destination, folder_destination = helper.create_working_folder()
134
135
    origin = text_type(folder)+u'/unicode'+six_unichr(160)+u'filename.txt'
136
    # encode the unicode string to ascii
137
    origin = origin.encode('utf-8')
138
139
    shutil.copyfile(helper.get_file('valid.txt'), origin)
140
141
    helper.reset_dbs()
142
    dest_path = elodie.import_file(origin, folder_destination, False, False, False)
143
    helper.restore_dbs()
144
145
    shutil.rmtree(folder)
146
    shutil.rmtree(folder_destination)
147
148
    assert helper.path_tz_fix(os.path.join('2016-04-Apr','London',u'2016-04-07_11-15-26-unicode\xa0filename-sample-title.txt')) in dest_path, dest_path
149
150 View Code Duplication
def test_import_file_path_unicode_latin_nbsp():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
151
    temporary_folder, folder = helper.create_working_folder()
152
    temporary_folder_destination, folder_destination = helper.create_working_folder()
153
154
    origin = text_type(folder)+u'/unicode'+six_unichr(160)+u'filename.txt'
155
156
    shutil.copyfile(helper.get_file('valid.txt'), origin)
157
158
    helper.reset_dbs()
159
    dest_path = elodie.import_file(origin, folder_destination, False, False, False)
160
    helper.restore_dbs()
161
162
    shutil.rmtree(folder)
163
    shutil.rmtree(folder_destination)
164
165
    assert helper.path_tz_fix(os.path.join('2016-04-Apr','London',u'2016-04-07_11-15-26-unicode\xa0filename-sample-title.txt')) in dest_path, dest_path
166
    
167 View Code Duplication
def test_import_file_allow_duplicate_false():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
168
    temporary_folder, folder = helper.create_working_folder()
169
    temporary_folder_destination, folder_destination = helper.create_working_folder()
170
171
    origin = '%s/valid.txt' % folder
172
    shutil.copyfile(helper.get_file('valid.txt'), origin)
173
174
    helper.reset_dbs()
175
    dest_path1 = elodie.import_file(origin, folder_destination, False, False, False)
176
    dest_path2 = elodie.import_file(origin, folder_destination, False, False, False)
177
    helper.restore_dbs()
178
179
    shutil.rmtree(folder)
180
    shutil.rmtree(folder_destination)
181
182
    assert dest_path1 is not None
183
    assert dest_path2 is None
184
185 View Code Duplication
def test_import_file_allow_duplicate_true():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
186
    temporary_folder, folder = helper.create_working_folder()
187
    temporary_folder_destination, folder_destination = helper.create_working_folder()
188
189
    origin = '%s/valid.txt' % folder
190
    shutil.copyfile(helper.get_file('valid.txt'), origin)
191
192
    helper.reset_dbs()
193
    dest_path1 = elodie.import_file(origin, folder_destination, False, False, True)
194
    dest_path2 = elodie.import_file(origin, folder_destination, False, False, True)
195
    helper.restore_dbs()
196
197
    shutil.rmtree(folder)
198
    shutil.rmtree(folder_destination)
199
200
    assert dest_path1 is not None
201
    assert dest_path2 is not None
202
    assert dest_path1 == dest_path2
203
204 View Code Duplication
def test_import_file_send_to_trash_false():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
205
    temporary_folder, folder = helper.create_working_folder()
206
    temporary_folder_destination, folder_destination = helper.create_working_folder()
207
208
    origin = '%s/valid.txt' % folder
209
    shutil.copyfile(helper.get_file('valid.txt'), origin)
210
211
    helper.reset_dbs()
212
    dest_path1 = elodie.import_file(origin, folder_destination, False, False, False)
213
    assert os.path.isfile(origin), origin
214
    helper.restore_dbs()
215
216
    shutil.rmtree(folder)
217
    shutil.rmtree(folder_destination)
218
219
    assert dest_path1 is not None
220
221 View Code Duplication
def test_import_file_send_to_trash_true():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
222
    raise SkipTest("Temporarily disable send2trash test gh-230")
223
224
    temporary_folder, folder = helper.create_working_folder()
225
    temporary_folder_destination, folder_destination = helper.create_working_folder()
226
227
    origin = '%s/valid.txt' % folder
228
    shutil.copyfile(helper.get_file('valid.txt'), origin)
229
230
    helper.reset_dbs()
231
    dest_path1 = elodie.import_file(origin, folder_destination, False, True, False)
232
    assert not os.path.isfile(origin), origin
233
    helper.restore_dbs()
234
235
    shutil.rmtree(folder)
236
    shutil.rmtree(folder_destination)
237
238
    assert dest_path1 is not None
239
240
@mock.patch('elodie.config.config_file', '%s/config.ini-import-with-full-path' % gettempdir())
241
def test_import_with_full_path():
242
    with open('%s/config.ini-custom-filename' % gettempdir(), 'w') as f:
243
        f.write("""
244
[Directory]
245
location=%city
246
year=%Y
247
month=%m
248
full_path=%year/%location
249
        """)
250
    if hasattr(load_config, 'config'):
251
        del load_config.config
252
253
    temporary_folder, folder = helper.create_working_folder()
254
    temporary_folder_destination, folder_destination = helper.create_working_folder()
255
256
    origin = '%s/plain.jpg' % folder
257
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
258
259
    dest_path = elodie.import_file(origin, folder_destination, False, True, False)
260
261
    shutil.rmtree(folder)
262
    shutil.rmtree(folder_destination)
263
264
    if hasattr(load_config, 'config'):
265
        del load_config.config
266
267
    assert '2015/Unknown Location/2015-12-05_00-59-26-plain.jpg' in dest_path
268
269 View Code Duplication
def test_import_destination_in_source():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
270
    temporary_folder, folder = helper.create_working_folder()
271
    folder_destination = '{}/destination'.format(folder)
272
    os.mkdir(folder_destination)
273
274
    origin = '%s/plain.jpg' % folder
275
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
276
277
    helper.reset_dbs()
278
    dest_path = elodie.import_file(origin, folder_destination, False, False, False)
279
    helper.restore_dbs()
280
281
    shutil.rmtree(folder)
282
283
    assert dest_path is None, dest_path
284
285 View Code Duplication
def test_import_destination_in_source_gh_287():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
286
    temporary_folder, folder = helper.create_working_folder()
287
    folder_destination = '{}-destination'.format(folder)
288
    os.mkdir(folder_destination)
289
290
    origin = '%s/video.mov' % folder
291
    shutil.copyfile(helper.get_file('video.mov'), origin)
292
293
    helper.reset_dbs()
294
    dest_path = elodie.import_file(origin, folder_destination, False, False, False)
295
    helper.restore_dbs()
296
297
    shutil.rmtree(folder)
298
299
    assert dest_path is not None, dest_path
300
301 View Code Duplication
def test_import_invalid_file_exit_code():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
302
    temporary_folder, folder = helper.create_working_folder()
303
    temporary_folder_destination, folder_destination = helper.create_working_folder()
304
305
    # use a good and bad
306
    origin_invalid = '%s/invalid.jpg' % folder
307
    shutil.copyfile(helper.get_file('invalid.jpg'), origin_invalid)
308
309
    origin_valid = '%s/valid.jpg' % folder
310
    shutil.copyfile(helper.get_file('plain.jpg'), origin_valid)
311
312
    helper.reset_dbs()
313
    runner = CliRunner()
314
    result = runner.invoke(elodie._import, ['--destination', folder_destination, origin_invalid, origin_valid])
315
    helper.restore_dbs()
316
317
    shutil.rmtree(folder)
318
    shutil.rmtree(folder_destination)
319
320
    assert result.exit_code == 1, result.exit_code
321
322 View Code Duplication
def test_update_location_on_audio():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
323
    temporary_folder, folder = helper.create_working_folder()
324
    temporary_folder_destination, folder_destination = helper.create_working_folder()
325
326
    origin = '%s/audio.m4a' % folder
327
    shutil.copyfile(helper.get_file('audio.m4a'), origin)
328
329
    audio = Audio(origin)
330
    metadata = audio.get_metadata()
331
332
    helper.reset_dbs()
333
    status = elodie.update_location(audio, origin, 'Sunnyvale, CA')
334
    helper.restore_dbs()
335
336
    audio_processed = Audio(origin)
337
    metadata_processed = audio_processed.get_metadata()
338
339
    shutil.rmtree(folder)
340
    shutil.rmtree(folder_destination)
341
342
    assert status == True, status
343
    assert metadata['latitude'] != metadata_processed['latitude'], metadata_processed['latitude']
344
    assert helper.isclose(metadata_processed['latitude'], 37.36883), metadata_processed['latitude']
345
    assert helper.isclose(metadata_processed['longitude'], -122.03635), metadata_processed['longitude']
346
347 View Code Duplication
def test_update_location_on_photo():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
348
    temporary_folder, folder = helper.create_working_folder()
349
    temporary_folder_destination, folder_destination = helper.create_working_folder()
350
351
    origin = '%s/plain.jpg' % folder
352
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
353
354
    photo = Photo(origin)
355
    metadata = photo.get_metadata()
356
357
    helper.reset_dbs()
358
    status = elodie.update_location(photo, origin, 'Sunnyvale, CA')
359
    helper.restore_dbs()
360
361
    photo_processed = Photo(origin)
362
    metadata_processed = photo_processed.get_metadata()
363
364
    shutil.rmtree(folder)
365
    shutil.rmtree(folder_destination)
366
367
    assert status == True, status
368
    assert metadata['latitude'] != metadata_processed['latitude']
369
    assert helper.isclose(metadata_processed['latitude'], 37.36883), metadata_processed['latitude']
370
    assert helper.isclose(metadata_processed['longitude'], -122.03635), metadata_processed['longitude']
371
372 View Code Duplication
def test_update_location_on_text():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
373
    temporary_folder, folder = helper.create_working_folder()
374
    temporary_folder_destination, folder_destination = helper.create_working_folder()
375
376
    origin = '%s/text.txt' % folder
377
    shutil.copyfile(helper.get_file('text.txt'), origin)
378
379
    text = Text(origin)
380
    metadata = text.get_metadata()
381
382
    helper.reset_dbs()
383
    status = elodie.update_location(text, origin, 'Sunnyvale, CA')
384
    helper.restore_dbs()
385
386
    text_processed = Text(origin)
387
    metadata_processed = text_processed.get_metadata()
388
389
    shutil.rmtree(folder)
390
    shutil.rmtree(folder_destination)
391
392
    assert status == True, status
393
    assert metadata['latitude'] != metadata_processed['latitude']
394
    assert helper.isclose(metadata_processed['latitude'], 37.36883), metadata_processed['latitude']
395
    assert helper.isclose(metadata_processed['longitude'], -122.03635), metadata_processed['longitude']
396
397 View Code Duplication
def test_update_location_on_video():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
398
    temporary_folder, folder = helper.create_working_folder()
399
    temporary_folder_destination, folder_destination = helper.create_working_folder()
400
401
    origin = '%s/video.mov' % folder
402
    shutil.copyfile(helper.get_file('video.mov'), origin)
403
404
    video = Video(origin)
405
    metadata = video.get_metadata()
406
407
    helper.reset_dbs()
408
    status = elodie.update_location(video, origin, 'Sunnyvale, CA')
409
    helper.restore_dbs()
410
411
    video_processed = Video(origin)
412
    metadata_processed = video_processed.get_metadata()
413
414
    shutil.rmtree(folder)
415
    shutil.rmtree(folder_destination)
416
417
    assert status == True, status
418
    assert metadata['latitude'] != metadata_processed['latitude']
419
    assert helper.isclose(metadata_processed['latitude'], 37.36883), metadata_processed['latitude']
420
    assert helper.isclose(metadata_processed['longitude'], -122.03635), metadata_processed['longitude']
421
422 View Code Duplication
def test_update_time_on_audio():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
423
    temporary_folder, folder = helper.create_working_folder()
424
    temporary_folder_destination, folder_destination = helper.create_working_folder()
425
426
    origin = '%s/audio.m4a' % folder
427
    shutil.copyfile(helper.get_file('audio.m4a'), origin)
428
429
    audio = Audio(origin)
430
    metadata = audio.get_metadata()
431
432
    helper.reset_dbs()
433
    status = elodie.update_time(audio, origin, '2000-01-01 12:00:00')
434
    helper.restore_dbs()
435
436
    audio_processed = Audio(origin)
437
    metadata_processed = audio_processed.get_metadata()
438
439
    shutil.rmtree(folder)
440
    shutil.rmtree(folder_destination)
441
442
    assert status == True, status
443
    assert metadata['date_taken'] != metadata_processed['date_taken']
444
    assert metadata_processed['date_taken'] == helper.time_convert((2000, 1, 1, 12, 0, 0, 5, 1, 0)), metadata_processed['date_taken']
445
446 View Code Duplication
def test_update_time_on_photo():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
447
    temporary_folder, folder = helper.create_working_folder()
448
    temporary_folder_destination, folder_destination = helper.create_working_folder()
449
450
    origin = '%s/plain.jpg' % folder
451
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
452
453
    photo = Photo(origin)
454
    metadata = photo.get_metadata()
455
456
    helper.reset_dbs()
457
    status = elodie.update_time(photo, origin, '2000-01-01 12:00:00')
458
    helper.restore_dbs()
459
460
    photo_processed = Photo(origin)
461
    metadata_processed = photo_processed.get_metadata()
462
463
    shutil.rmtree(folder)
464
    shutil.rmtree(folder_destination)
465
466
    assert status == True, status
467
    assert metadata['date_taken'] != metadata_processed['date_taken']
468
    assert metadata_processed['date_taken'] == helper.time_convert((2000, 1, 1, 12, 0, 0, 5, 1, 0)), metadata_processed['date_taken']
469
470 View Code Duplication
def test_update_time_on_text():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
471
    temporary_folder, folder = helper.create_working_folder()
472
    temporary_folder_destination, folder_destination = helper.create_working_folder()
473
474
    origin = '%s/text.txt' % folder
475
    shutil.copyfile(helper.get_file('text.txt'), origin)
476
477
    text = Text(origin)
478
    metadata = text.get_metadata()
479
480
    helper.reset_dbs()
481
    status = elodie.update_time(text, origin, '2000-01-01 12:00:00')
482
    helper.restore_dbs()
483
484
    text_processed = Text(origin)
485
    metadata_processed = text_processed.get_metadata()
486
487
    shutil.rmtree(folder)
488
    shutil.rmtree(folder_destination)
489
490
    assert status == True, status
491
    assert metadata['date_taken'] != metadata_processed['date_taken']
492
    assert metadata_processed['date_taken'] == helper.time_convert((2000, 1, 1, 12, 0, 0, 5, 1, 0)), metadata_processed['date_taken']
493
494 View Code Duplication
def test_update_time_on_video():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
495
    temporary_folder, folder = helper.create_working_folder()
496
    temporary_folder_destination, folder_destination = helper.create_working_folder()
497
498
    origin = '%s/video.mov' % folder
499
    shutil.copyfile(helper.get_file('video.mov'), origin)
500
501
    video = Video(origin)
502
    metadata = video.get_metadata()
503
504
    helper.reset_dbs()
505
    status = elodie.update_time(video, origin, '2000-01-01 12:00:00')
506
    helper.restore_dbs()
507
508
    video_processed = Video(origin)
509
    metadata_processed = video_processed.get_metadata()
510
511
    shutil.rmtree(folder)
512
    shutil.rmtree(folder_destination)
513
514
    assert status == True, status
515
    assert metadata['date_taken'] != metadata_processed['date_taken']
516
    assert metadata_processed['date_taken'] == helper.time_convert((2000, 1, 1, 12, 0, 0, 5, 1, 0)), metadata_processed['date_taken']
517
518
def test_update_with_directory_passed_in():
519
    temporary_folder, folder = helper.create_working_folder()
520
    temporary_folder_destination, folder_destination = helper.create_working_folder()
521
522
    origin = '%s/valid.txt' % folder
523
    shutil.copyfile(helper.get_file('valid.txt'), origin)
524
525
    helper.reset_dbs()
526
    runner = CliRunner()
527
    result = runner.invoke(elodie._import, ['--destination', folder_destination, folder])
528
    runner2 = CliRunner()
529
    result = runner2.invoke(elodie._update, ['--album', 'test', folder_destination])
530
    helper.restore_dbs()
531
532
    updated_file_path = "{}/2016-04-Apr/test/2016-04-07_11-15-26-valid-sample-title.txt".format(folder_destination)
533
    updated_file_exists = os.path.isfile(updated_file_path)
534
535
    shutil.rmtree(folder)
536
    shutil.rmtree(folder_destination)
537
538
    assert updated_file_exists, updated_file_path
539
540 View Code Duplication
def test_update_invalid_file_exit_code():
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
541
    temporary_folder, folder = helper.create_working_folder()
542
    temporary_folder_destination, folder_destination = helper.create_working_folder()
543
544
    # use a good and bad
545
    origin_invalid = '%s/invalid.jpg' % folder
546
    shutil.copyfile(helper.get_file('invalid.jpg'), origin_invalid)
547
548
    origin_valid = '%s/valid.jpg' % folder
549
    shutil.copyfile(helper.get_file('plain.jpg'), origin_valid)
550
551
    helper.reset_dbs()
552
    runner = CliRunner()
553
    result = runner.invoke(elodie._update, ['--album', 'test', origin_invalid, origin_valid])
554
    helper.restore_dbs()
555
556
    shutil.rmtree(folder)
557
    shutil.rmtree(folder_destination)
558
559
    assert result.exit_code == 1, result.exit_code
560
561
def test_regenerate_db_invalid_source():
562
    runner = CliRunner()
563
    result = runner.invoke(elodie._generate_db, ['--source', '/invalid/path'])
564
    assert result.exit_code == 1, result.exit_code
565
566
def test_regenerate_valid_source():
567
    temporary_folder, folder = helper.create_working_folder()
568
569
    origin = '%s/valid.txt' % folder
570
    shutil.copyfile(helper.get_file('valid.txt'), origin)
571
572
    helper.reset_dbs()
573
    runner = CliRunner()
574
    result = runner.invoke(elodie._generate_db, ['--source', folder])
575
    db = Db()
576
    helper.restore_dbs()
577
578
    shutil.rmtree(folder)
579
580
    assert result.exit_code == 0, result.exit_code
581
    assert '3c19a5d751cf19e093b7447297731124d9cc987d3f91a9d1872c3b1c1b15639a' in db.hash_db, db.hash_db
582
583
def test_regenerate_valid_source_with_invalid_files():
584
    temporary_folder, folder = helper.create_working_folder()
585
586
    origin_valid = '%s/valid.txt' % folder
587
    shutil.copyfile(helper.get_file('valid.txt'), origin_valid)
588
    origin_invalid = '%s/invalid.invalid' % folder
589
    shutil.copyfile(helper.get_file('invalid.invalid'), origin_invalid)
590
591
    helper.reset_dbs()
592
    runner = CliRunner()
593
    result = runner.invoke(elodie._generate_db, ['--source', folder])
594
    db = Db()
595
    helper.restore_dbs()
596
597
    shutil.rmtree(folder)
598
599
    assert result.exit_code == 0, result.exit_code
600
    assert '3c19a5d751cf19e093b7447297731124d9cc987d3f91a9d1872c3b1c1b15639a' in db.hash_db, db.hash_db
601
    assert 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' not in db.hash_db, db.hash_db
602
603
def test_verify_ok():
604
    temporary_folder, folder = helper.create_working_folder()
605
606
    origin = '%s/valid.txt' % folder
607
    shutil.copyfile(helper.get_file('valid.txt'), origin)
608
609
    helper.reset_dbs()
610
    runner = CliRunner()
611
    runner.invoke(elodie._generate_db, ['--source', folder])
612
    result = runner.invoke(elodie._verify)
613
    helper.restore_dbs()
614
615
    shutil.rmtree(folder)
616
617
    assert 'Success         1' in result.output, result.output
618
    assert 'Error           0' in result.output, result.output
619
620
def test_verify_error():
621
    temporary_folder, folder = helper.create_working_folder()
622
623
    origin = '%s/valid.txt' % folder
624
    shutil.copyfile(helper.get_file('valid.txt'), origin)
625
626
    helper.reset_dbs()
627
    runner = CliRunner()
628
    runner.invoke(elodie._generate_db, ['--source', folder])
629
    with open(origin, 'w') as f:
630
        f.write('changed text')
631
    result = runner.invoke(elodie._verify)
632
    helper.restore_dbs()
633
634
    shutil.rmtree(folder)
635
636
    assert origin in result.output, result.output
637
    assert 'Error           1' in result.output, result.output
638
639
@mock.patch('elodie.config.config_file', '%s/config.ini-cli-import-with-full-path' % gettempdir())
640
def test_cli_import_with_full_path():
641
    with open('%s/config.ini-cli-custom-filename' % gettempdir(), 'w') as f:
642
        f.write("""
643
[Directory]
644
location=%city
645
year=%Y
646
month=%m
647
full_path=%year/%location
648
        """)
649
    if hasattr(load_config, 'config'):
650
        del load_config.config
651
652
653
    temporary_folder, folder = helper.create_working_folder()
654
    temporary_folder_destination, folder_destination = helper.create_working_folder()
655
656
    origin = '%s/plain.jpg' % folder
657
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
658
659
    runner = CliRunner()
660
    # import
661
    result = runner.invoke(elodie._import, ['--destination', folder_destination, origin])
662
663
664
    shutil.rmtree(folder)
665
    shutil.rmtree(folder_destination)
666
667
    if hasattr(load_config, 'config'):
668
        del load_config.config
669
670
    assert '2015/Unknown Location/2015-12-05_00-59-26-plain.jpg' in result.output, result.output
671
672
@mock.patch('elodie.config.config_file', '%s/config.ini-cli-batch-plugin-googlephotos' % gettempdir())
673
def test_cli_batch_plugin_googlephotos():
674
    auth_file = helper.get_file('plugins/googlephotos/auth_file.json')
675
    secrets_file = helper.get_file('plugins/googlephotos/secrets_file.json')
676
    config_string = """
677
    [Plugins]
678
    plugins=GooglePhotos
679
680
    [PluginGooglePhotos]
681
    auth_file={}
682
    secrets_file={}
683
            """
684
    config_string_fmt = config_string.format(
685
        auth_file,
686
        secrets_file
687
    )
688
    with open('%s/config.ini-cli-batch-plugin-googlephotos' % gettempdir(), 'w') as f:
689
        f.write(config_string_fmt)
690
691
    if hasattr(load_config, 'config'):
692
        del load_config.config
693
694
    final_file_path_1 = helper.get_file('plain.jpg')
695
    final_file_path_2 = helper.get_file('no-exif.jpg')
696
    sample_metadata_1 = Photo(final_file_path_1).get_metadata()
697
    sample_metadata_2 = Photo(final_file_path_2).get_metadata()
698
    gp = GooglePhotos()
699
    gp.after('', '', final_file_path_1, sample_metadata_1)
700
    gp.after('', '', final_file_path_2, sample_metadata_1)
701
702
    if hasattr(load_config, 'config'):
703
        del load_config.config
704
705
    runner = CliRunner()
706
    result = runner.invoke(elodie._batch)
707
    assert "elodie/elodie/tests/files/plain.jpg uploaded successfully.\"}\n" in result.output, result.output
708
    assert "elodie/elodie/tests/files/no-exif.jpg uploaded successfully.\"}\n" in result.output, result.output
709
710
def test_cli_debug_import():
711
    runner = CliRunner()
712
    # import
713
    result = runner.invoke(elodie._import, ['--destination', '/does/not/exist', '/does/not/exist'])
714
    assert "Could not find /does/not/exist\n" not in result.output, result.output
715
    result = runner.invoke(elodie._import, ['--destination', '/does/not/exist', '--debug', '/does/not/exist'])
716
    assert "Could not find /does/not/exist\n" in result.output, result.output
717
718
def test_cli_debug_update():
719
    runner = CliRunner()
720
    # update
721
    result = runner.invoke(elodie._update, ['--location', 'foobar', '/does/not/exist'])
722
    assert "Could not find /does/not/exist\n" not in result.output, result.output
723
    result = runner.invoke(elodie._update, ['--location', 'foobar', '--debug', '/does/not/exist'])
724
    assert "Could not find /does/not/exist\n" in result.output, result.output
725