repository-manager 0.1.21 → 0.1.24
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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +1 -2
- data/app/models/repository_manager/repo_file.rb +1 -1
- data/app/models/repository_manager/repo_folder.rb +3 -3
- data/app/models/repository_manager/repo_item.rb +2 -2
- data/lib/repository-manager.rb +8 -0
- data/lib/repository_manager/exceptions.rb +3 -0
- data/lib/repository_manager/has_repository.rb +48 -6
- data/lib/repository_manager/locales/repository_manager.en.yml +48 -0
- data/lib/repository_manager/locales/repository_manager.fr.yml +45 -0
- data/lib/repository_manager/version.rb +1 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/has_repository_spec.rb +4 -0
- data/spec/models/repository_spec.rb +37 -15
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3143ce6c4c30c092465f7df4d8a6d034af441c20
|
4
|
+
data.tar.gz: e8312b152f841ae69fcd5edb97e72d403c00b502
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cadd9617228aca58a60b5eaf42d2adc4407d845e67dde41e689f2d8fc9c5b9cd8090d5804e20320d7b2cf5dbaadebd8961749c2a59e0c8308c8670f3be8b6a89
|
7
|
+
data.tar.gz: c9d6f0071279a2c4dd565bc43176502e7fb98b8b2e1cdfbe5420d140495745f765692691341b02ad555b0aa999efc9ac33266abcc8e46ee36244e3f9b8b2a00a
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -227,7 +227,7 @@ file.sender # Returns user1
|
|
227
227
|
|
228
228
|
```
|
229
229
|
|
230
|
-
WARNING : There is no verification if the
|
230
|
+
WARNING : There is no verification if the user1 has the permission to create a file or folder into this group. You have to check this in your controller ! The fact that user1 is the sender of this folder gives him NO PERMISSION on it !
|
231
231
|
|
232
232
|
### How can I share a repo_item (file/folder)
|
233
233
|
|
@@ -456,7 +456,6 @@ the_folder.delete_zip
|
|
456
456
|
## TODO
|
457
457
|
|
458
458
|
- Do the rename file method
|
459
|
-
- Configure path to save files
|
460
459
|
- Write the methods : share_link.
|
461
460
|
- Snapshot the file if possible
|
462
461
|
- Versioning
|
@@ -31,7 +31,7 @@ class RepositoryManager::RepoFile < RepositoryManager::RepoItem
|
|
31
31
|
if options[:source_folder]
|
32
32
|
options[:source_folder].add!(new_item)
|
33
33
|
elsif options[:owner].repo_item_name_exist_in_root?(new_item.name)
|
34
|
-
raise RepositoryManager::
|
34
|
+
raise RepositoryManager::ItemExistException.new("copy failed. The repo_file '#{new_item.name}' already exist in root.")
|
35
35
|
end
|
36
36
|
|
37
37
|
options[:owner] ? new_item.owner = options[:owner] : new_item.owner = self.owner
|
@@ -12,7 +12,7 @@ class RepositoryManager::RepoFolder < RepositoryManager::RepoItem
|
|
12
12
|
if name_exist_in_children?(repo_item.name)
|
13
13
|
# we delete the repo if asked
|
14
14
|
repo_item.destroy if destroy_if_fail
|
15
|
-
raise RepositoryManager::
|
15
|
+
raise RepositoryManager::ItemExistException.new("add failed. The repo_item '#{repo_item.name}' already exist in the folder '#{name}'")
|
16
16
|
else
|
17
17
|
repo_item.update_attribute :parent, self
|
18
18
|
end
|
@@ -29,7 +29,7 @@ class RepositoryManager::RepoFolder < RepositoryManager::RepoItem
|
|
29
29
|
# Rename the item
|
30
30
|
def rename!(new_name)
|
31
31
|
if name_exist_in_siblings?(new_name)
|
32
|
-
raise RepositoryManager::
|
32
|
+
raise RepositoryManager::ItemExistException.new("rename failed. The repo_item '#{new_name}' already exist.'")
|
33
33
|
else
|
34
34
|
self.name = new_name
|
35
35
|
# TODO see if I have to save or not
|
@@ -58,7 +58,7 @@ class RepositoryManager::RepoFolder < RepositoryManager::RepoItem
|
|
58
58
|
if options[:source_folder]
|
59
59
|
options[:source_folder].add!(new_item)
|
60
60
|
elsif options[:owner].repo_item_name_exist_in_root?(new_item.name)
|
61
|
-
raise RepositoryManager::
|
61
|
+
raise RepositoryManager::ItemExistException.new("copy failed. The repo_folder '#{new_item.name}' already exist in root.")
|
62
62
|
end
|
63
63
|
|
64
64
|
options[:owner] ? new_item.owner = options[:owner] : new_item.owner = self.owner
|
@@ -39,12 +39,12 @@ class RepositoryManager::RepoItem < ActiveRecord::Base
|
|
39
39
|
raise RepositoryManager::RepositoryManagerException.new("move failed. target '#{options[:source_folder].name}' can't be a file")
|
40
40
|
end
|
41
41
|
if options[:source_folder].name_exist_in_children?(self.name)
|
42
|
-
raise RepositoryManager::
|
42
|
+
raise RepositoryManager::ItemExistException.new("move failed. The repo_item '#{name}' already exist ine the folder '#{options[:source_folder].name}'")
|
43
43
|
end
|
44
44
|
# We are in root, we check if name exist in root
|
45
45
|
# We stay in the same owner
|
46
46
|
elsif self.owner.repo_item_name_exist_in_root?(self.name)
|
47
|
-
raise RepositoryManager::
|
47
|
+
raise RepositoryManager::ItemExistException.new("move failed. The repo_item '#{name}' already exist ine the root")
|
48
48
|
end
|
49
49
|
# here, all is ok
|
50
50
|
# We change the owner if another one is specify
|
data/lib/repository-manager.rb
CHANGED
@@ -26,6 +26,14 @@ module RepositoryManager
|
|
26
26
|
def protected_attributes?
|
27
27
|
Rails.version < '4' || defined?(ProtectedAttributes)
|
28
28
|
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Loads the Carrierwave locale files before the Rails application locales
|
32
|
+
# letting the Rails application overrite the carrierwave locale defaults
|
33
|
+
#config.before_configuration do
|
34
|
+
I18n.load_path << File.join(File.dirname(__FILE__), 'repository_manager', 'locales', 'repository_manager.en.yml')
|
35
|
+
#end
|
36
|
+
|
29
37
|
end
|
30
38
|
|
31
39
|
end
|
@@ -87,7 +87,14 @@ module RepositoryManager
|
|
87
87
|
def share(repo_item, members, options = {})
|
88
88
|
begin
|
89
89
|
share!(repo_item, members, options)
|
90
|
-
rescue RepositoryManager::PermissionException
|
90
|
+
rescue RepositoryManager::PermissionException
|
91
|
+
repo_item.errors.add(:sharing, I18n.t('repository_manager.errors.sharing.create.no_permission'))
|
92
|
+
false
|
93
|
+
rescue RepositoryManager::NestedSharingException
|
94
|
+
repo_item.errors.add(:sharing, I18n.t('repository_manager.errors.sharing.create.nested_sharing'))
|
95
|
+
false
|
96
|
+
rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
|
97
|
+
repo_item.errors.add(:sharing, I18n.t('repository_manager.errors.sharing.create.not_created'))
|
91
98
|
false
|
92
99
|
end
|
93
100
|
end
|
@@ -122,7 +129,7 @@ module RepositoryManager
|
|
122
129
|
|
123
130
|
# If we are in root path we check if we can add this folder name
|
124
131
|
if !source_folder && repo_item_name_exist_in_root?(name)
|
125
|
-
raise RepositoryManager::
|
132
|
+
raise RepositoryManager::ItemExistException.new("create folder failed. The repo_item '#{name}' already exist in the root folder.")
|
126
133
|
end
|
127
134
|
|
128
135
|
# It raise an error if name already exist and destroy the folder
|
@@ -138,9 +145,17 @@ module RepositoryManager
|
|
138
145
|
# Like create_folder!
|
139
146
|
# Returns false if the folder is not created instead of an exception
|
140
147
|
def create_folder(name = '', options = {})
|
148
|
+
options[:errors] = []
|
141
149
|
begin
|
142
150
|
create_folder!(name, options)
|
143
|
-
rescue RepositoryManager::PermissionException
|
151
|
+
rescue RepositoryManager::PermissionException
|
152
|
+
options[:errors].push(I18n.t'repository_manager.errors.repo_item.repo_folder.create.no_permission')
|
153
|
+
false
|
154
|
+
rescue RepositoryManager::ItemExistException
|
155
|
+
options[:errors].push(I18n.t'repository_manager.errors.repo_item.repo_folder.item_exist')
|
156
|
+
false
|
157
|
+
rescue RepositoryManager::RepositoryManagerException, ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
|
158
|
+
options[:errors].push(I18n.t'repository_manager.errors.repo_item.repo_folder.create.not_created')
|
144
159
|
false
|
145
160
|
end
|
146
161
|
end
|
@@ -158,6 +173,7 @@ module RepositoryManager
|
|
158
173
|
begin
|
159
174
|
delete_repo_item!(repo_item)
|
160
175
|
rescue RepositoryManager::PermissionException
|
176
|
+
repo_item.errors.add(:delete, I18n.t('repository_manager.errors.repo_item.delete.no_permission'))
|
161
177
|
false
|
162
178
|
end
|
163
179
|
end
|
@@ -198,7 +214,7 @@ module RepositoryManager
|
|
198
214
|
|
199
215
|
# If we are in root path we check if we can add this file name
|
200
216
|
if !source_folder && repo_item_name_exist_in_root?(repo_file.file.identifier)
|
201
|
-
raise RepositoryManager::
|
217
|
+
raise RepositoryManager::ItemExistException.new("create file failed. The repo_item '#{repo_file.file.identifier}' already exist in the root folder.")
|
202
218
|
end
|
203
219
|
|
204
220
|
# It raise an error if name already exist and destroy the file
|
@@ -212,9 +228,17 @@ module RepositoryManager
|
|
212
228
|
end
|
213
229
|
|
214
230
|
def create_file(file, options = {})
|
231
|
+
options[:errors] = []
|
215
232
|
begin
|
216
233
|
create_file!(file, options)
|
217
|
-
rescue RepositoryManager::PermissionException
|
234
|
+
rescue RepositoryManager::PermissionException
|
235
|
+
options[:errors].push(I18n.t'repository_manager.errors.repo_item.repo_file.create.no_permission')
|
236
|
+
false
|
237
|
+
rescue RepositoryManager::ItemExistException
|
238
|
+
options[:errors].push(I18n.t'repository_manager.errors.repo_item.repo_file.item_exist')
|
239
|
+
false
|
240
|
+
rescue RepositoryManager::RepositoryManagerException, ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
|
241
|
+
options[:errors].push(I18n.t'repository_manager.errors.repo_item.repo_file.create.not_created')
|
218
242
|
false
|
219
243
|
end
|
220
244
|
end
|
@@ -264,6 +288,7 @@ module RepositoryManager
|
|
264
288
|
begin
|
265
289
|
download!(repo_item, options)
|
266
290
|
rescue RepositoryManager::PermissionException
|
291
|
+
repo_item.errors.add(:download, I18n.t('repository_manager.errors.repo_item.download.no_permission'))
|
267
292
|
false
|
268
293
|
end
|
269
294
|
end
|
@@ -281,6 +306,7 @@ module RepositoryManager
|
|
281
306
|
begin
|
282
307
|
rename_repo_item!(repo_item, new_name)
|
283
308
|
rescue RepositoryManager::PermissionException
|
309
|
+
repo_item.errors.add(:rename, I18n.t('repository_manager.errors.repo_item.rename.no_permission'))
|
284
310
|
false
|
285
311
|
end
|
286
312
|
end
|
@@ -319,7 +345,14 @@ module RepositoryManager
|
|
319
345
|
def move_repo_item(repo_item, target = nil)
|
320
346
|
begin
|
321
347
|
move_repo_item!(repo_item, target)
|
348
|
+
rescue RepositoryManager::PermissionException
|
349
|
+
repo_item.errors.add(:move, I18n.t('repository_manager.errors.repo_item.move.no_permission'))
|
350
|
+
false
|
351
|
+
rescue RepositoryManager::ItemExistException
|
352
|
+
repo_item.errors.add(:move, I18n.t('repository_manager.errors.repo_item.item_exist'))
|
353
|
+
false
|
322
354
|
rescue RepositoryManager::RepositoryManagerException, ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
|
355
|
+
repo_item.errors.add(:move, I18n.t('repository_manager.errors.repo_item.move.not_moved'))
|
323
356
|
false
|
324
357
|
end
|
325
358
|
end
|
@@ -351,7 +384,14 @@ module RepositoryManager
|
|
351
384
|
def copy_repo_item(repo_item, target = nil, options = {})
|
352
385
|
begin
|
353
386
|
copy_repo_item!(repo_item, target, options)
|
354
|
-
rescue RepositoryManager::PermissionException
|
387
|
+
rescue RepositoryManager::PermissionException
|
388
|
+
repo_item.errors.add(:copy, I18n.t('repository_manager.errors.repo_item.copy.no_permission'))
|
389
|
+
false
|
390
|
+
rescue RepositoryManager::ItemExistException
|
391
|
+
repo_item.errors.add(:copy, I18n.t('repository_manager.errors.repo_item.item_exist'))
|
392
|
+
false
|
393
|
+
rescue RepositoryManager::RepositoryManagerException, ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
|
394
|
+
repo_item.errors.add(:copy, I18n.t('repository_manager.errors.repo_item.copy.not_copied'))
|
355
395
|
false
|
356
396
|
end
|
357
397
|
end
|
@@ -440,6 +480,7 @@ module RepositoryManager
|
|
440
480
|
begin
|
441
481
|
add_members_to!(sharing, members, options = RepositoryManager.default_sharing_permissions)
|
442
482
|
rescue RepositoryManager::PermissionException
|
483
|
+
sharing.errors.add(:add, I18n.t('repository_manager.errors.sharing.add.no_permission'))
|
443
484
|
false
|
444
485
|
end
|
445
486
|
end
|
@@ -458,6 +499,7 @@ module RepositoryManager
|
|
458
499
|
begin
|
459
500
|
remove_members_from!(sharing, members)
|
460
501
|
rescue RepositoryManager::PermissionException
|
502
|
+
sharing.errors.add(:remove, I18n.t('repository_manager.errors.sharing.remove.no_permission'))
|
461
503
|
false
|
462
504
|
end
|
463
505
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
en:
|
2
|
+
repository_manager:
|
3
|
+
models:
|
4
|
+
repo_folder:
|
5
|
+
name: New folder
|
6
|
+
success:
|
7
|
+
repo_folder:
|
8
|
+
created: The folder was created with success !
|
9
|
+
repo_file:
|
10
|
+
created: The file was created with success !
|
11
|
+
errors:
|
12
|
+
repo_item:
|
13
|
+
item_exist: This item already exist in the target destination
|
14
|
+
download:
|
15
|
+
no_permission: You don't have the permission to download this item
|
16
|
+
rename:
|
17
|
+
no_permission: You don't have the permission to rename this item
|
18
|
+
delete:
|
19
|
+
no_permission: You don't have the permission to delete this item
|
20
|
+
move:
|
21
|
+
no_permission: You don't have the permission to move this item
|
22
|
+
not_moved: This item was not moved
|
23
|
+
copy:
|
24
|
+
no_permission: You don't have the permission to copy this item
|
25
|
+
not_copied: This item was not copied
|
26
|
+
repo_folder:
|
27
|
+
item_exist: This folder already exist
|
28
|
+
create:
|
29
|
+
no_permission: You don't have the permission to create a folder
|
30
|
+
not_created: The folder was not created
|
31
|
+
repo_file:
|
32
|
+
item_exist: This file already exist
|
33
|
+
create:
|
34
|
+
no_permission: You don't have the permission to create a file
|
35
|
+
not_created: The file was not created
|
36
|
+
sharing:
|
37
|
+
create:
|
38
|
+
no_permission: You don't have the permission to share this item
|
39
|
+
nested_sharing: You can't share this item because another sharing exist on its ancestors or descendants
|
40
|
+
not_created: This item was not shared
|
41
|
+
add:
|
42
|
+
no_permission: You don't have the permission to add member to this share
|
43
|
+
remove:
|
44
|
+
no_permission: You don't have the permission to remove member from this share
|
45
|
+
form:
|
46
|
+
new:
|
47
|
+
repo_folder: Create a folder
|
48
|
+
repo_file: Send a file
|
@@ -0,0 +1,45 @@
|
|
1
|
+
fr:
|
2
|
+
repository_manager:
|
3
|
+
models:
|
4
|
+
repo_folder:
|
5
|
+
name: Nouveau dossier
|
6
|
+
success:
|
7
|
+
repo_folder:
|
8
|
+
created: Le dossier a été créé avec succès !
|
9
|
+
repo_file:
|
10
|
+
created: Le fichier a été créé avec succès !
|
11
|
+
errors:
|
12
|
+
repo_item:
|
13
|
+
download:
|
14
|
+
no_permission: Vous n'avez pas la permission de télécharger cet élément
|
15
|
+
rename:
|
16
|
+
no_permission: Vous n'avez pas la permission de renommer cet élément
|
17
|
+
delete:
|
18
|
+
no_permission: Vous n'avez pas la permission de supprimer cet élément
|
19
|
+
move:
|
20
|
+
no_permission: Vous n'avez pas la permission de déplacer cet élément
|
21
|
+
not_moved: Cet élément n'a pas été déplacé
|
22
|
+
item_exist: Cet élément existe déjà dans la destination cible
|
23
|
+
repo_folder:
|
24
|
+
item_exist: Ce dossier existe déjà
|
25
|
+
create:
|
26
|
+
no_permission: Vous n'avez pas la permission de créer un dossier
|
27
|
+
not_created: Le dossier n'a pas été créé
|
28
|
+
repo_file:
|
29
|
+
item_exist: Ce fichier existe déjà
|
30
|
+
create:
|
31
|
+
no_permission: Vous n'avez pas la permission de créer un fichier
|
32
|
+
not_created: Le fichier n'a pas été envoyé
|
33
|
+
sharing:
|
34
|
+
create:
|
35
|
+
no_permission: Vous n'avez pas la permission de partager cet élément
|
36
|
+
nested_sharing: Vous ne pouvez pas partager cet élément car un partage existe déjà dans un de ces parents ou descendants
|
37
|
+
not_created: L'élément n'a pas été partagé
|
38
|
+
add:
|
39
|
+
no_permission: Vous n'avez pas la permission d'ajouter un membre au partage
|
40
|
+
remove:
|
41
|
+
no_permission: Vous n'avez pas la permission de retirer un membre du partage
|
42
|
+
form:
|
43
|
+
new:
|
44
|
+
repo_folder: Créer un dossier
|
45
|
+
repo_file: Envoyer un fichier
|
data/spec/dummy/db/test.sqlite3
CHANGED
Binary file
|
data/spec/has_repository_spec.rb
CHANGED
@@ -59,6 +59,8 @@ describe 'HasRepository' do
|
|
59
59
|
|
60
60
|
@user1.share(rep, members)
|
61
61
|
|
62
|
+
expect(rep.errors.messages).to eq({sharing: ['You don\'t have the permission to share this item']})
|
63
|
+
|
62
64
|
expect(@user2.sharings.count).to eq(0)
|
63
65
|
expect(@user1.sharings_owners.count).to eq(0)
|
64
66
|
end
|
@@ -229,6 +231,8 @@ describe 'HasRepository' do
|
|
229
231
|
|
230
232
|
# Here we can't share 'Parent' or 'Children' because it already exist a nested sharing.
|
231
233
|
expect(@user1.share(parent, @user2)).to eq(false) # Returns false
|
234
|
+
expect(parent.errors.messages).to eq({sharing: ['You can\'t share this item because another sharing exist on its ancestors or descendants']})
|
235
|
+
|
232
236
|
end
|
233
237
|
|
234
238
|
it 'can\'t share a repo_item with ancestor sharing permissions' do
|
@@ -21,14 +21,20 @@ describe 'RepoItem' do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'can\'t create a folder in it a file' do
|
24
|
-
|
24
|
+
options = {source_folder: @user1_file}
|
25
|
+
folder = @user1.create_folder('Folder1', options)
|
26
|
+
|
27
|
+
expect(options[:errors]).to eq(['The folder was not created'])
|
25
28
|
|
26
29
|
expect(folder).to eq(false)
|
27
30
|
end
|
28
31
|
|
29
32
|
|
30
33
|
it 'can\'t create a folder in another folder without permission' do
|
31
|
-
|
34
|
+
options = {source_folder: @user1_folder}
|
35
|
+
folder = @user2.create_folder('Folder1', options)
|
36
|
+
|
37
|
+
expect(options[:errors]).to eq(['You don\'t have the permission to create a folder'])
|
32
38
|
|
33
39
|
expect(@user1_folder.has_children?).to eq(false)
|
34
40
|
expect(folder).to eq(false)
|
@@ -62,6 +68,8 @@ describe 'RepoItem' do
|
|
62
68
|
|
63
69
|
it 'can\'t delete a repo_item without permission' do
|
64
70
|
@user2.delete_repo_item(@user1_file)
|
71
|
+
expect(@user1_file.errors.messages).to eq({delete: ['You don\'t have the permission to delete this item']})
|
72
|
+
|
65
73
|
expect(@user1.repo_items.count).to eq(2)
|
66
74
|
end
|
67
75
|
|
@@ -97,6 +105,8 @@ describe 'RepoItem' do
|
|
97
105
|
it 'user can\'t download a file without permission' do
|
98
106
|
path = @user2.download(@user1_file)
|
99
107
|
expect(path).to eq(false)
|
108
|
+
expect(@user1_file.errors.messages).to eq({download: ['You don\'t have the permission to download this item']})
|
109
|
+
|
100
110
|
end
|
101
111
|
|
102
112
|
#it 'download the file if there is just one in a folder (no zip)' do
|
@@ -191,6 +201,8 @@ describe 'RepoItem' do
|
|
191
201
|
|
192
202
|
it 'can\'t rename item without share update permission' do
|
193
203
|
@user2.rename_repo_item(@user1_folder, 'test new name')
|
204
|
+
expect(@user1_folder.errors.messages).to eq({rename: ['You don\'t have the permission to rename this item']})
|
205
|
+
|
194
206
|
expect(@user1_folder.reload.name).to eq('Folder')
|
195
207
|
end
|
196
208
|
|
@@ -202,20 +214,19 @@ describe 'RepoItem' do
|
|
202
214
|
folder5 = @user1.create_folder()
|
203
215
|
folder6 = @user1.create_folder('', source_folder: folder1)
|
204
216
|
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
expect(
|
209
|
-
expect(
|
210
|
-
expect(
|
211
|
-
expect(folder4.name).to eq('translation missing: en.repository_manager.models.repo_folder.name 2')
|
212
|
-
expect(folder5.name).to eq('translation missing: en.repository_manager.models.repo_folder.name 3')
|
213
|
-
expect(folder6.name).to eq('translation missing: en.repository_manager.models.repo_folder.name 3')
|
217
|
+
expect(folder1.name).to eq('New folder')
|
218
|
+
expect(folder2.name).to eq('New folder 2')
|
219
|
+
expect(folder3.name).to eq('New folder')
|
220
|
+
expect(folder4.name).to eq('New folder 2')
|
221
|
+
expect(folder5.name).to eq('New folder 3')
|
222
|
+
expect(folder6.name).to eq('New folder 3')
|
214
223
|
end
|
215
224
|
|
216
225
|
it 'can\'t create a folder with the same name at root' do
|
217
226
|
@user1.create_folder('test')
|
218
|
-
folder2 = @user1.create_folder('test')
|
227
|
+
folder2 = @user1.create_folder('test',options={})
|
228
|
+
|
229
|
+
expect(options[:errors]).to eq(['This folder already exist'])
|
219
230
|
|
220
231
|
expect(folder2).to eq(false)
|
221
232
|
end
|
@@ -232,8 +243,11 @@ describe 'RepoItem' do
|
|
232
243
|
it "can't create too file with the same name in folder" do
|
233
244
|
file = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder)
|
234
245
|
expect(file.name).to eq('textfile.txt')
|
235
|
-
|
246
|
+
options = {source_folder: @user1_folder}
|
247
|
+
file2 = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), options)
|
236
248
|
expect(file2).to eq(false)
|
249
|
+
expect(options[:errors]).to eq(['This file already exist'])
|
250
|
+
|
237
251
|
|
238
252
|
#@user1.create_file!(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder)
|
239
253
|
end
|
@@ -280,6 +294,9 @@ describe 'RepoItem' do
|
|
280
294
|
folder = @user2.create_folder('folder')
|
281
295
|
|
282
296
|
expect(@user2.move_repo_item(folder, file)).to eq(false)
|
297
|
+
expect(folder.errors.messages).to eq({move: ['This item was not moved']})
|
298
|
+
|
299
|
+
|
283
300
|
end
|
284
301
|
|
285
302
|
it "move_repo_item default to the root of the self owner" do
|
@@ -294,15 +311,20 @@ describe 'RepoItem' do
|
|
294
311
|
it "move_repo_item can't move a file into a root if file already exist" do
|
295
312
|
file = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder)
|
296
313
|
expect(@user1.move_repo_item(file)).to eq(false)
|
314
|
+
expect(file.errors.messages).to eq({move: ['This item already exist in the target destination']})
|
315
|
+
|
297
316
|
end
|
298
317
|
|
299
318
|
it "move_repo_item can't move if no permission" do
|
300
319
|
file = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder)
|
301
320
|
expect(@user2.move_repo_item(file)).to eq(false)
|
321
|
+
expect(file.errors.messages).to eq({move: ['You don\'t have the permission to move this item']})
|
322
|
+
|
302
323
|
end
|
303
324
|
|
304
|
-
it "can't copy a file
|
305
|
-
expect(@user2.copy_repo_item(@user1_file)).to eq(false)
|
325
|
+
it "can't copy a file without permission" do
|
326
|
+
expect(@user2.copy_repo_item(@user1_file)).to eq(false)
|
327
|
+
expect(@user1_file.errors.messages).to eq({copy: ['You don\'t have the permission to copy this item']})
|
306
328
|
end
|
307
329
|
|
308
330
|
it "can copy a file with read permission" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: repository-manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yves Baumann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -139,6 +139,8 @@ files:
|
|
139
139
|
- lib/repository_manager/engine.rb
|
140
140
|
- lib/repository_manager/exceptions.rb
|
141
141
|
- lib/repository_manager/has_repository.rb
|
142
|
+
- lib/repository_manager/locales/repository_manager.en.yml
|
143
|
+
- lib/repository_manager/locales/repository_manager.fr.yml
|
142
144
|
- lib/repository_manager/version.rb
|
143
145
|
- repository-manager.gemspec
|
144
146
|
- spec/dummy/Gemfile
|