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

test_import_with_full_path()   A

Complexity

Conditions 4

Size

Total Lines 29
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 16
nop 0
dl 0
loc 29
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-import-with-full-path' % gettempdir(), 'w') as f:
243
        f.write("""
244
[Directory]
245
location=%city
246
year=%Y
247
month=%m
248
date=%Y-%m
249
full_path=%year/%location
250
        """)
251
    if hasattr(load_config, 'config'):
252
        del load_config.config
253
254
    temporary_folder, folder = helper.create_working_folder()
255
    temporary_folder_destination, folder_destination = helper.create_working_folder()
256
257
    origin = '%s/plain.jpg' % folder
258
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
259
260
    dest_path = elodie.import_file(origin, folder_destination, False, True, False)
261
262
    shutil.rmtree(folder)
263
    shutil.rmtree(folder_destination)
264
265
    if hasattr(load_config, 'config'):
266
        del load_config.config
267
268
    assert '2015-12/Unknown Location/2015-12-05_00-59-26-plain.jpg' in dest_path, dest_path
269
270 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...
271
    temporary_folder, folder = helper.create_working_folder()
272
    folder_destination = '{}/destination'.format(folder)
273
    os.mkdir(folder_destination)
274
275
    origin = '%s/plain.jpg' % folder
276
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
277
278
    helper.reset_dbs()
279
    dest_path = elodie.import_file(origin, folder_destination, False, False, False)
280
    helper.restore_dbs()
281
282
    shutil.rmtree(folder)
283
284
    assert dest_path is None, dest_path
285
286 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...
287
    temporary_folder, folder = helper.create_working_folder()
288
    folder_destination = '{}-destination'.format(folder)
289
    os.mkdir(folder_destination)
290
291
    origin = '%s/video.mov' % folder
292
    shutil.copyfile(helper.get_file('video.mov'), origin)
293
294
    helper.reset_dbs()
295
    dest_path = elodie.import_file(origin, folder_destination, False, False, False)
296
    helper.restore_dbs()
297
298
    shutil.rmtree(folder)
299
300
    assert dest_path is not None, dest_path
301
302 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...
303
    temporary_folder, folder = helper.create_working_folder()
304
    temporary_folder_destination, folder_destination = helper.create_working_folder()
305
306
    # use a good and bad
307
    origin_invalid = '%s/invalid.jpg' % folder
308
    shutil.copyfile(helper.get_file('invalid.jpg'), origin_invalid)
309
310
    origin_valid = '%s/valid.jpg' % folder
311
    shutil.copyfile(helper.get_file('plain.jpg'), origin_valid)
312
313
    helper.reset_dbs()
314
    runner = CliRunner()
315
    result = runner.invoke(elodie._import, ['--destination', folder_destination, origin_invalid, origin_valid])
316
    helper.restore_dbs()
317
318
    shutil.rmtree(folder)
319
    shutil.rmtree(folder_destination)
320
321
    assert result.exit_code == 1, result.exit_code
322
323 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...
324
    temporary_folder, folder = helper.create_working_folder()
325
    temporary_folder_destination, folder_destination = helper.create_working_folder()
326
327
    origin = '%s/audio.m4a' % folder
328
    shutil.copyfile(helper.get_file('audio.m4a'), origin)
329
330
    audio = Audio(origin)
331
    metadata = audio.get_metadata()
332
333
    helper.reset_dbs()
334
    status = elodie.update_location(audio, origin, 'Sunnyvale, CA')
335
    helper.restore_dbs()
336
337
    audio_processed = Audio(origin)
338
    metadata_processed = audio_processed.get_metadata()
339
340
    shutil.rmtree(folder)
341
    shutil.rmtree(folder_destination)
342
343
    assert status == True, status
344
    assert metadata['latitude'] != metadata_processed['latitude'], metadata_processed['latitude']
345
    assert helper.isclose(metadata_processed['latitude'], 37.36883), metadata_processed['latitude']
346
    assert helper.isclose(metadata_processed['longitude'], -122.03635), metadata_processed['longitude']
347
348 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...
349
    temporary_folder, folder = helper.create_working_folder()
350
    temporary_folder_destination, folder_destination = helper.create_working_folder()
351
352
    origin = '%s/plain.jpg' % folder
353
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
354
355
    photo = Photo(origin)
356
    metadata = photo.get_metadata()
357
358
    helper.reset_dbs()
359
    status = elodie.update_location(photo, origin, 'Sunnyvale, CA')
360
    helper.restore_dbs()
361
362
    photo_processed = Photo(origin)
363
    metadata_processed = photo_processed.get_metadata()
364
365
    shutil.rmtree(folder)
366
    shutil.rmtree(folder_destination)
367
368
    assert status == True, status
369
    assert metadata['latitude'] != metadata_processed['latitude']
370
    assert helper.isclose(metadata_processed['latitude'], 37.36883), metadata_processed['latitude']
371
    assert helper.isclose(metadata_processed['longitude'], -122.03635), metadata_processed['longitude']
372
373 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...
374
    temporary_folder, folder = helper.create_working_folder()
375
    temporary_folder_destination, folder_destination = helper.create_working_folder()
376
377
    origin = '%s/text.txt' % folder
378
    shutil.copyfile(helper.get_file('text.txt'), origin)
379
380
    text = Text(origin)
381
    metadata = text.get_metadata()
382
383
    helper.reset_dbs()
384
    status = elodie.update_location(text, origin, 'Sunnyvale, CA')
385
    helper.restore_dbs()
386
387
    text_processed = Text(origin)
388
    metadata_processed = text_processed.get_metadata()
389
390
    shutil.rmtree(folder)
391
    shutil.rmtree(folder_destination)
392
393
    assert status == True, status
394
    assert metadata['latitude'] != metadata_processed['latitude']
395
    assert helper.isclose(metadata_processed['latitude'], 37.36883), metadata_processed['latitude']
396
    assert helper.isclose(metadata_processed['longitude'], -122.03635), metadata_processed['longitude']
397
398 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...
399
    temporary_folder, folder = helper.create_working_folder()
400
    temporary_folder_destination, folder_destination = helper.create_working_folder()
401
402
    origin = '%s/video.mov' % folder
403
    shutil.copyfile(helper.get_file('video.mov'), origin)
404
405
    video = Video(origin)
406
    metadata = video.get_metadata()
407
408
    helper.reset_dbs()
409
    status = elodie.update_location(video, origin, 'Sunnyvale, CA')
410
    helper.restore_dbs()
411
412
    video_processed = Video(origin)
413
    metadata_processed = video_processed.get_metadata()
414
415
    shutil.rmtree(folder)
416
    shutil.rmtree(folder_destination)
417
418
    assert status == True, status
419
    assert metadata['latitude'] != metadata_processed['latitude']
420
    assert helper.isclose(metadata_processed['latitude'], 37.36883), metadata_processed['latitude']
421
    assert helper.isclose(metadata_processed['longitude'], -122.03635), metadata_processed['longitude']
422
423 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...
424
    temporary_folder, folder = helper.create_working_folder()
425
    temporary_folder_destination, folder_destination = helper.create_working_folder()
426
427
    origin = '%s/audio.m4a' % folder
428
    shutil.copyfile(helper.get_file('audio.m4a'), origin)
429
430
    audio = Audio(origin)
431
    metadata = audio.get_metadata()
432
433
    helper.reset_dbs()
434
    status = elodie.update_time(audio, origin, '2000-01-01 12:00:00')
435
    helper.restore_dbs()
436
437
    audio_processed = Audio(origin)
438
    metadata_processed = audio_processed.get_metadata()
439
440
    shutil.rmtree(folder)
441
    shutil.rmtree(folder_destination)
442
443
    assert status == True, status
444
    assert metadata['date_taken'] != metadata_processed['date_taken']
445
    assert metadata_processed['date_taken'] == helper.time_convert((2000, 1, 1, 12, 0, 0, 5, 1, 0)), metadata_processed['date_taken']
446
447 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...
448
    temporary_folder, folder = helper.create_working_folder()
449
    temporary_folder_destination, folder_destination = helper.create_working_folder()
450
451
    origin = '%s/plain.jpg' % folder
452
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
453
454
    photo = Photo(origin)
455
    metadata = photo.get_metadata()
456
457
    helper.reset_dbs()
458
    status = elodie.update_time(photo, origin, '2000-01-01 12:00:00')
459
    helper.restore_dbs()
460
461
    photo_processed = Photo(origin)
462
    metadata_processed = photo_processed.get_metadata()
463
464
    shutil.rmtree(folder)
465
    shutil.rmtree(folder_destination)
466
467
    assert status == True, status
468
    assert metadata['date_taken'] != metadata_processed['date_taken']
469
    assert metadata_processed['date_taken'] == helper.time_convert((2000, 1, 1, 12, 0, 0, 5, 1, 0)), metadata_processed['date_taken']
470
471 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...
472
    temporary_folder, folder = helper.create_working_folder()
473
    temporary_folder_destination, folder_destination = helper.create_working_folder()
474
475
    origin = '%s/text.txt' % folder
476
    shutil.copyfile(helper.get_file('text.txt'), origin)
477
478
    text = Text(origin)
479
    metadata = text.get_metadata()
480
481
    helper.reset_dbs()
482
    status = elodie.update_time(text, origin, '2000-01-01 12:00:00')
483
    helper.restore_dbs()
484
485
    text_processed = Text(origin)
486
    metadata_processed = text_processed.get_metadata()
487
488
    shutil.rmtree(folder)
489
    shutil.rmtree(folder_destination)
490
491
    assert status == True, status
492
    assert metadata['date_taken'] != metadata_processed['date_taken']
493
    assert metadata_processed['date_taken'] == helper.time_convert((2000, 1, 1, 12, 0, 0, 5, 1, 0)), metadata_processed['date_taken']
494
495 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...
496
    temporary_folder, folder = helper.create_working_folder()
497
    temporary_folder_destination, folder_destination = helper.create_working_folder()
498
499
    origin = '%s/video.mov' % folder
500
    shutil.copyfile(helper.get_file('video.mov'), origin)
501
502
    video = Video(origin)
503
    metadata = video.get_metadata()
504
505
    helper.reset_dbs()
506
    status = elodie.update_time(video, origin, '2000-01-01 12:00:00')
507
    helper.restore_dbs()
508
509
    video_processed = Video(origin)
510
    metadata_processed = video_processed.get_metadata()
511
512
    shutil.rmtree(folder)
513
    shutil.rmtree(folder_destination)
514
515
    assert status == True, status
516
    assert metadata['date_taken'] != metadata_processed['date_taken']
517
    assert metadata_processed['date_taken'] == helper.time_convert((2000, 1, 1, 12, 0, 0, 5, 1, 0)), metadata_processed['date_taken']
518
519
def test_update_with_directory_passed_in():
520
    temporary_folder, folder = helper.create_working_folder()
521
    temporary_folder_destination, folder_destination = helper.create_working_folder()
522
523
    origin = '%s/valid.txt' % folder
524
    shutil.copyfile(helper.get_file('valid.txt'), origin)
525
526
    helper.reset_dbs()
527
    runner = CliRunner()
528
    result = runner.invoke(elodie._import, ['--destination', folder_destination, folder])
529
    runner2 = CliRunner()
530
    result = runner2.invoke(elodie._update, ['--album', 'test', folder_destination])
531
    helper.restore_dbs()
532
533
    updated_file_path = "{}/2016-04-Apr/test/2016-04-07_11-15-26-valid-sample-title.txt".format(folder_destination)
534
    updated_file_exists = os.path.isfile(updated_file_path)
535
536
    shutil.rmtree(folder)
537
    shutil.rmtree(folder_destination)
538
539
    assert updated_file_exists, updated_file_path
540
541 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...
542
    temporary_folder, folder = helper.create_working_folder()
543
    temporary_folder_destination, folder_destination = helper.create_working_folder()
544
545
    # use a good and bad
546
    origin_invalid = '%s/invalid.jpg' % folder
547
    shutil.copyfile(helper.get_file('invalid.jpg'), origin_invalid)
548
549
    origin_valid = '%s/valid.jpg' % folder
550
    shutil.copyfile(helper.get_file('plain.jpg'), origin_valid)
551
552
    helper.reset_dbs()
553
    runner = CliRunner()
554
    result = runner.invoke(elodie._update, ['--album', 'test', origin_invalid, origin_valid])
555
    helper.restore_dbs()
556
557
    shutil.rmtree(folder)
558
    shutil.rmtree(folder_destination)
559
560
    assert result.exit_code == 1, result.exit_code
561
562
def test_regenerate_db_invalid_source():
563
    runner = CliRunner()
564
    result = runner.invoke(elodie._generate_db, ['--source', '/invalid/path'])
565
    assert result.exit_code == 1, result.exit_code
566
567
def test_regenerate_valid_source():
568
    temporary_folder, folder = helper.create_working_folder()
569
570
    origin = '%s/valid.txt' % folder
571
    shutil.copyfile(helper.get_file('valid.txt'), origin)
572
573
    helper.reset_dbs()
574
    runner = CliRunner()
575
    result = runner.invoke(elodie._generate_db, ['--source', folder])
576
    db = Db()
577
    helper.restore_dbs()
578
579
    shutil.rmtree(folder)
580
581
    assert result.exit_code == 0, result.exit_code
582
    assert '3c19a5d751cf19e093b7447297731124d9cc987d3f91a9d1872c3b1c1b15639a' in db.hash_db, db.hash_db
583
584
def test_regenerate_valid_source_with_invalid_files():
585
    temporary_folder, folder = helper.create_working_folder()
586
587
    origin_valid = '%s/valid.txt' % folder
588
    shutil.copyfile(helper.get_file('valid.txt'), origin_valid)
589
    origin_invalid = '%s/invalid.invalid' % folder
590
    shutil.copyfile(helper.get_file('invalid.invalid'), origin_invalid)
591
592
    helper.reset_dbs()
593
    runner = CliRunner()
594
    result = runner.invoke(elodie._generate_db, ['--source', folder])
595
    db = Db()
596
    helper.restore_dbs()
597
598
    shutil.rmtree(folder)
599
600
    assert result.exit_code == 0, result.exit_code
601
    assert '3c19a5d751cf19e093b7447297731124d9cc987d3f91a9d1872c3b1c1b15639a' in db.hash_db, db.hash_db
602
    assert 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' not in db.hash_db, db.hash_db
603
604
def test_verify_ok():
605
    temporary_folder, folder = helper.create_working_folder()
606
607
    origin = '%s/valid.txt' % folder
608
    shutil.copyfile(helper.get_file('valid.txt'), origin)
609
610
    helper.reset_dbs()
611
    runner = CliRunner()
612
    runner.invoke(elodie._generate_db, ['--source', folder])
613
    result = runner.invoke(elodie._verify)
614
    helper.restore_dbs()
615
616
    shutil.rmtree(folder)
617
618
    assert 'Success         1' in result.output, result.output
619
    assert 'Error           0' in result.output, result.output
620
621
def test_verify_error():
622
    temporary_folder, folder = helper.create_working_folder()
623
624
    origin = '%s/valid.txt' % folder
625
    shutil.copyfile(helper.get_file('valid.txt'), origin)
626
627
    helper.reset_dbs()
628
    runner = CliRunner()
629
    runner.invoke(elodie._generate_db, ['--source', folder])
630
    with open(origin, 'w') as f:
631
        f.write('changed text')
632
    result = runner.invoke(elodie._verify)
633
    helper.restore_dbs()
634
635
    shutil.rmtree(folder)
636
637
    assert origin in result.output, result.output
638
    assert 'Error           1' in result.output, result.output
639
640
@mock.patch('elodie.config.config_file', '%s/config.ini-cli-import-with-full-path' % gettempdir())
641
def test_cli_import_with_full_path():
642
    with open('%s/config.ini-cli-import-with-full-path' % gettempdir(), 'w') as f:
643
        f.write("""
644
[Directory]
645
location=%city
646
year=%Y
647
month=%m
648
date=%Y-%m
649
full_path=%date/%location
650
        """)
651
    if hasattr(load_config, 'config'):
652
        del load_config.config
653
654
655
    temporary_folder, folder = helper.create_working_folder()
656
    temporary_folder_destination, folder_destination = helper.create_working_folder()
657
658
    origin = '%s/plain.jpg' % folder
659
    shutil.copyfile(helper.get_file('plain.jpg'), origin)
660
661
    runner = CliRunner()
662
    # import
663
    result = runner.invoke(elodie._import, ['--destination', folder_destination, origin])
664
665
666
    shutil.rmtree(folder)
667
    shutil.rmtree(folder_destination)
668
669
    if hasattr(load_config, 'config'):
670
        del load_config.config
671
672
    assert '2015-12/Unknown Location/2015-12-05_00-59-26-plain.jpg' in result.output, result.output
673
674
@mock.patch('elodie.config.config_file', '%s/config.ini-cli-batch-plugin-googlephotos' % gettempdir())
675
def test_cli_batch_plugin_googlephotos():
676
    auth_file = helper.get_file('plugins/googlephotos/auth_file.json')
677
    secrets_file = helper.get_file('plugins/googlephotos/secrets_file.json')
678
    config_string = """
679
    [Plugins]
680
    plugins=GooglePhotos
681
682
    [PluginGooglePhotos]
683
    auth_file={}
684
    secrets_file={}
685
            """
686
    config_string_fmt = config_string.format(
687
        auth_file,
688
        secrets_file
689
    )
690
    with open('%s/config.ini-cli-batch-plugin-googlephotos' % gettempdir(), 'w') as f:
691
        f.write(config_string_fmt)
692
693
    if hasattr(load_config, 'config'):
694
        del load_config.config
695
696
    final_file_path_1 = helper.get_file('plain.jpg')
697
    final_file_path_2 = helper.get_file('no-exif.jpg')
698
    sample_metadata_1 = Photo(final_file_path_1).get_metadata()
699
    sample_metadata_2 = Photo(final_file_path_2).get_metadata()
700
    gp = GooglePhotos()
701
    gp.after('', '', final_file_path_1, sample_metadata_1)
702
    gp.after('', '', final_file_path_2, sample_metadata_1)
703
704
    if hasattr(load_config, 'config'):
705
        del load_config.config
706
707
    runner = CliRunner()
708
    result = runner.invoke(elodie._batch)
709
    assert "elodie/elodie/tests/files/plain.jpg uploaded successfully.\"}\n" in result.output, result.output
710
    assert "elodie/elodie/tests/files/no-exif.jpg uploaded successfully.\"}\n" in result.output, result.output
711
712
def test_cli_debug_import():
713
    runner = CliRunner()
714
    # import
715
    result = runner.invoke(elodie._import, ['--destination', '/does/not/exist', '/does/not/exist'])
716
    assert "Could not find /does/not/exist\n" not in result.output, result.output
717
    result = runner.invoke(elodie._import, ['--destination', '/does/not/exist', '--debug', '/does/not/exist'])
718
    assert "Could not find /does/not/exist\n" in result.output, result.output
719
720
def test_cli_debug_update():
721
    runner = CliRunner()
722
    # update
723
    result = runner.invoke(elodie._update, ['--location', 'foobar', '/does/not/exist'])
724
    assert "Could not find /does/not/exist\n" not in result.output, result.output
725
    result = runner.invoke(elodie._update, ['--location', 'foobar', '--debug', '/does/not/exist'])
726
    assert "Could not find /does/not/exist\n" in result.output, result.output
727