repository-manager 0.1.16 → 0.1.18

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b215f3835b3f6d5607af3584d728891288809873
4
- data.tar.gz: 2db5f3fa34414eca002e0b6479a786ba24321193
3
+ metadata.gz: 5570145fdab6a68044c23360f2cda512bbff93da
4
+ data.tar.gz: 63ac568cef21b1e6e1c69f34ec14701a811e393b
5
5
  SHA512:
6
- metadata.gz: af70a3c06755dbc515c7f84358b5628f60e7795815cfb00303e2f6ba234d6b73aa992a960de19a36606fcaa1c1524d37483ba94048a8a9479f25416df252668e
7
- data.tar.gz: 45a648974b60a5cdfb28c36ce9bcbc3b07699d9b75c1accdfbe6e8237cac76cc2392d1575aec0b166e91ad491b915b4873780c037a964ff4b145d7f62cbea39c
6
+ metadata.gz: 3aa7875fc7c3cbcb7653af770e548eade784c6d10dc35bb6e86a8baffcd5c3764acf9133d3cf86386cb1fc98ae33a5ec7c757c4f88ea7723bbb52930bf05a208
7
+ data.tar.gz: 82b701bd769e352108cbcf7c25773d1e48ad0b7b068056c6f75f2956429f74cc238124b5182393f8af7228c626aba9f8c65e019f75fa278d81534ca8a8dd54d8
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- repository-manager (0.1.15)
4
+ repository-manager (0.1.17)
5
5
  ancestry
6
6
  carrierwave (>= 0.5.8)
7
7
  rails (> 3.0.0)
@@ -36,7 +36,7 @@ GEM
36
36
  tzinfo (~> 0.3.37)
37
37
  ancestry (2.0.0)
38
38
  activerecord (>= 3.0.0)
39
- arel (4.0.1)
39
+ arel (4.0.2)
40
40
  atomic (1.1.14)
41
41
  builder (3.1.4)
42
42
  carrierwave (0.9.0)
data/README.md CHANGED
@@ -273,9 +273,9 @@ children = @user1.create_folder('Children', nested)
273
273
 
274
274
  @user1.share(nested, @user2)
275
275
 
276
- nested.has_nested_sharing? # Returns false (because `nested` is shared but there is no nested sharing)
277
- parent.has_nested_sharing? # Returns true (because there is a sharing on one of his descendants)
278
- children.has_nested_sharing? # Returns true (because there is a sharing on one of his ancestors)
276
+ nested.can_be_shared_without_nesting? # Returns true (because `nested` is shared but there exist no nested sharing)
277
+ parent.can_be_shared_without_nesting? # Returns false (because there is a sharing on one of his descendants)
278
+ children.can_be_shared_without_nesting? # Returns false (because there is a sharing on one of his ancestors)
279
279
 
280
280
  # Here we can't share 'Parent' or 'Children' because it already exist a nested sharing.
281
281
  @user1.share(parent, @user2) # Returns false
@@ -382,7 +382,7 @@ sharing.add_members(member, {can_add: true, can_remove: false})
382
382
 
383
383
 
384
384
  # Remove members from the sharing
385
- sharing.remove_members({user2, group1})
385
+ sharing.remove_members([user2, group1])
386
386
  ```
387
387
 
388
388
  ### Authorisations
@@ -414,7 +414,7 @@ You can get all the authorisations of an `object` in a `repo_item` with this met
414
414
  end
415
415
  ```
416
416
 
417
- #### Sharing permissions
417
+ #### Sharing authorisations
418
418
 
419
419
  You can manage the permissions of a member in a sharing. The owner of the sharing has all the permissions. The sharing permissions are:
420
420
  - `can_add_to?(sharing)` : The member can add a new instance in this sharing.
@@ -456,7 +456,9 @@ the_folder.delete_zip
456
456
  ## TODO
457
457
 
458
458
  - Do the rename file method
459
- - Write the methods : copy, share_link.
459
+ - Test the copy method
460
+ - Configure path to save files
461
+ - Write the methods : share_link.
460
462
  - Snapshot the file if possible
461
463
  - Versioning
462
464
  - ...
@@ -19,6 +19,42 @@ class RepositoryManager::RepoFile < RepositoryManager::RepoItem
19
19
  path = file.path
20
20
  end
21
21
 
22
+ # Copy itself into the source_folder
23
+ # options
24
+ # :source_folder = the folder in witch you copy this item
25
+ # :owner = the owner of the item
26
+ # :sender = the sender of the item (if you don't specify sender.. The sender is still the same)
27
+ def copy!(options = {})
28
+ new_item = RepositoryManager::RepoFile.new
29
+ new_item.file = File.open(self.file.current_path)
30
+
31
+ if options[:source_folder]
32
+ options[:source_folder].add!(new_item)
33
+ elsif options[:owner].repo_item_name_exist_in_root?(new_item.name)
34
+ raise RepositoryManager::RepositoryManagerException.new("copy failed. The repo_file '#{new_item.name}' already exist in root.")
35
+ end
36
+
37
+ options[:owner] ? new_item.owner = options[:owner] : new_item.owner = self.owner
38
+ if options[:sender]
39
+ new_item.sender = options[:sender]
40
+ #elsif options[:owner]
41
+ # new_item.sender = options[:owner]
42
+ else
43
+ new_item.sender = self.sender
44
+ end
45
+
46
+ new_item.save!
47
+ new_item
48
+ end
49
+
50
+ def copy(options = {})
51
+ begin
52
+ copy!(options)
53
+ rescue RepositoryManager::AuthorisationException, RepositoryManager::RepositoryManagerException, ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
54
+ false
55
+ end
56
+ end
57
+
22
58
  private
23
59
 
24
60
  def update_asset_attributes
@@ -47,6 +47,48 @@ class RepositoryManager::RepoFolder < RepositoryManager::RepoItem
47
47
  end
48
48
  end
49
49
 
50
+ # Copy itself into the source_folder
51
+ # options
52
+ # :source_folder = the folder in witch you copy this item
53
+ # :owner = the owner of the item
54
+ # :sender = the sender of the item (if you don't specify sender.. The sender is still the same)
55
+ def copy!(options = {})
56
+ new_item = RepositoryManager::RepoFolder.new
57
+ new_item.name = self.name
58
+
59
+ if options[:source_folder]
60
+ options[:source_folder].add!(new_item)
61
+ elsif options[:owner].repo_item_name_exist_in_root?(new_item.name)
62
+ raise RepositoryManager::RepositoryManagerException.new("copy failed. The repo_folder '#{new_item.name}' already exist in root.")
63
+ end
64
+
65
+ options[:owner] ? new_item.owner = options[:owner] : new_item.owner = self.owner
66
+ if options[:sender]
67
+ new_item.sender = options[:sender]
68
+ #elsif options[:owner]
69
+ # new_item.sender = options[:owner]
70
+ else
71
+ new_item.sender = self.sender
72
+ end
73
+
74
+ new_item.save!
75
+
76
+ # Recursive method who copy all children.
77
+ children.each do |c|
78
+ c.copy!(source_folder: new_item, owner: options[:owner], sender: options[:sender])
79
+ end
80
+
81
+ new_item
82
+ end
83
+
84
+ def copy(options = {})
85
+ begin
86
+ copy!(options)
87
+ rescue RepositoryManager::AuthorisationException, RepositoryManager::RepositoryManagerException, ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
88
+ false
89
+ end
90
+ end
91
+
50
92
  # Download this folder (zip it first)
51
93
  # Return the path to the folder.zip
52
94
  # options can have :
@@ -27,47 +27,11 @@ class RepositoryManager::RepoItem < ActiveRecord::Base
27
27
  scope :folders, where(type: 'RepositoryManager::RepoFolder')
28
28
  end
29
29
 
30
- # Copy itself into the source_folder
30
+ # Move itself into the target or root
31
31
  # options
32
32
  # :source_folder = the folder in witch you copy this item
33
33
  # :owner = the owner of the item
34
- # :sender = the sender of the item (if you specify owner and not sender.. The sender becomes the owner)
35
- def copy!(options = {})
36
- new_item = RepoItem.new
37
- new_item.type = self.type
38
- new_item.file = self.file
39
- new_item.content_type = self.content_type
40
- new_item.file_size = self.file_size
41
- new_item.name = self.name
42
- options[:owner] ? new_item.owner = options[:owner] : new_item.owner = self.owner
43
- if options[:sender]
44
- new_item.sender = options[:sender]
45
- elsif options[:owner]
46
- new_item.sender = options[:owner]
47
- else
48
- new_item.sender = self.sender
49
- end
50
-
51
- if options[:source_folder]
52
- options[:source_folder].add!(new_item)
53
- end
54
-
55
- new_item.save!
56
- new_item
57
- end
58
-
59
- def copy(options = {})
60
- begin
61
- copy!(options)
62
- rescue RepositoryManager::AuthorisationException, RepositoryManager::RepositoryManagerException, ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
63
- false
64
- end
65
- end
66
-
67
- # Move itself into the source_folder or root
68
- # options
69
- # :source_folder => move into this source_folder
70
- # :owner = the owner of the item
34
+ # If :source_folder = nil, move to the root (of same owner)
71
35
  def move!(options = {})
72
36
  # If we are in source_folder, we check if it's ok
73
37
  if options[:source_folder]
@@ -77,18 +41,19 @@ class RepositoryManager::RepoItem < ActiveRecord::Base
77
41
  if options[:source_folder].name_exist_in_children?(self.name)
78
42
  raise RepositoryManager::RepositoryManagerException.new("move failed. The repo_item '#{name}' already exist ine the folder '#{options[:source_folder].name}'")
79
43
  end
80
- else
81
- # We are in root, we check if name exist in root
82
- if options[:owner]
83
- if options[:owner].repo_item_name_exist_in_root?(self.name)
84
- raise RepositoryManager::RepositoryManagerException.new("move failed. The repo_item '#{name}' already exist ine the root")
85
- elsif self.owner.repo_item_name_exist_in_root?(self.name)
86
- raise RepositoryManager::RepositoryManagerException.new("move failed. The repo_item '#{name}' already exist ine the root")
87
- end
88
- end
44
+ # We are in root, we check if name exist in root
45
+ # We stay in the same owner
46
+ elsif self.owner.repo_item_name_exist_in_root?(self.name)
47
+ raise RepositoryManager::RepositoryManagerException.new("move failed. The repo_item '#{name}' already exist ine the root")
89
48
  end
90
49
  # here, all is ok
91
- self.owner = options[:owner] if options[:owner]
50
+ # We change the owner if another one is specify
51
+ if options[:owner]
52
+ self.owner = options[:owner]
53
+ elsif options[:source_folder]
54
+ self.owner = options[:source_folder].owner
55
+ end
56
+ # we update the tree with the new parent
92
57
  self.update_attribute :parent, options[:source_folder]
93
58
  self.save!
94
59
  self
@@ -103,7 +68,7 @@ class RepositoryManager::RepoItem < ActiveRecord::Base
103
68
  end
104
69
 
105
70
  # Returns true if it exist a sharing in the ancestors of descendant_ids of the repo_item (without itself)
106
- def has_nested_sharing?
71
+ def can_be_shared_without_nesting?
107
72
  # An array with the ids of all ancestors and descendants
108
73
  ancestor_and_descendant_ids = []
109
74
  ancestor_and_descendant_ids << self.descendant_ids if self.is_folder? && !self.descendant_ids.empty?
@@ -111,9 +76,9 @@ class RepositoryManager::RepoItem < ActiveRecord::Base
111
76
 
112
77
  # If it exist a sharing, it returns true
113
78
  if RepositoryManager::Sharing.where(repo_item_id: ancestor_and_descendant_ids).count > 0
114
- true
115
- else
116
79
  false
80
+ else
81
+ true
117
82
  end
118
83
  end
119
84
 
@@ -15,9 +15,9 @@ class RepositoryManager::Sharing < ActiveRecord::Base
15
15
  #scope :recipient, lambda { |recipient|
16
16
  # joins(:receipts).where('receipts.receiver_id' => recipient.id,'receipts.receiver_type' => recipient.class.base_class.to_s)
17
17
  #}
18
- scope :members, lambda { |member|
19
- joins(:sharings_members).where('sharings_members.member_id' => member.id,'sharings_members.member_type' => member.class.base_class.to_s)
20
- }
18
+ #scope :members, lambda { |member|
19
+ # joins(:sharings_members).where('sharings_members.member_id' => member.id,'sharings_members.member_type' => member.class.base_class.to_s)
20
+ #}
21
21
 
22
22
  # Return the authorisations of the sharing for the member
23
23
  def get_authorisations(member)
@@ -36,12 +36,18 @@ class RepositoryManager::Sharing < ActiveRecord::Base
36
36
  if members.kind_of?(Array)
37
37
  # Add each member to this sharing
38
38
  members.each do |i|
39
+ unless i.respond_to? :share # Check if this object "has_repository"
40
+ raise RepositoryManager::RepositoryManagerException.new("add members failed. The object passed into members should be a model who 'has_repository'")
41
+ end
39
42
  sharing_member = RepositoryManager::SharingsMember.new(sharing_permissions)
40
43
  sharing_member.member = i
41
44
  # Add the sharings members in the sharing
42
45
  self.sharings_members << sharing_member
43
46
  end
44
47
  else
48
+ unless members.respond_to? :share # Check if this object "has_repository"
49
+ raise RepositoryManager::RepositoryManagerException.new("add members failed. The object passed into members should be a model who 'has_repository'")
50
+ end
45
51
  sharing_member = RepositoryManager::SharingsMember.new(sharing_permissions)
46
52
  sharing_member.member = members
47
53
  # Add the sharings members in the sharing
@@ -48,7 +48,7 @@ module RepositoryManager
48
48
  # Nested sharing are not accepted
49
49
  if !RepositoryManager.accept_nested_sharing
50
50
  # Check if no other sharing exist in the path
51
- if repo_item.has_nested_sharing?
51
+ unless repo_item.can_be_shared_without_nesting?
52
52
  raise RepositoryManager::NestedSharingException.new("sharing failed. Another sharing already exist on the subtree or an ancestor of '#{repo_item.name}'")
53
53
  end
54
54
  end
@@ -286,78 +286,71 @@ module RepositoryManager
286
286
  end
287
287
 
288
288
  # Move the repo_item. If you let all options empty, the item is moving into the self.root
289
- # options
290
- # :source_folder => move into this source_folder
291
- # :owner => the new owner if we move it to root (source_folder => nil)
292
- def move_repo_item!(repo_item, options = {})
289
+ # target => move into this source_folder
290
+ # if target == nil, move to the root
291
+ def move_repo_item!(repo_item, target = nil)
292
+ if !can_read?(repo_item)
293
+ raise RepositoryManager::AuthorisationException.new("move repo_item failed. You don't have the permission to read the repo_item '#{repo_item.name}'")
294
+ end
293
295
  # If we want to change the owner we have to have the can_delete authorisation
294
- if options[:source_folder]
296
+ if target
295
297
  # If want to change the owner, we have to check if we have the authorisation
296
- if options[:source_folder].owner != repo_item.owner && !can_delete?(repo_item)
298
+ if target.owner != repo_item.owner && !can_delete?(repo_item)
297
299
  raise RepositoryManager::AuthorisationException.new("move repo_item failed. You don't have the permission to delete the repo_item '#{repo_item.name}'")
298
300
  end
299
301
  # If we don't want to change the owner, we look if we can_update
300
- if options[:source_folder].owner == repo_item.owner && !can_update?(repo_item)
302
+ if target.owner == repo_item.owner && !can_update?(repo_item)
301
303
  raise RepositoryManager::AuthorisationException.new("move repo_item failed. You don't have the permission to update the '#{repo_item.name}'")
302
304
  end
303
305
  # We check if we can_create in the source_folder
304
- unless can_create?(options[:source_folder])
306
+ unless can_create?(target)
305
307
  raise RepositoryManager::AuthorisationException.new("move repo_item failed. You don't have the permission to create in the source_folder '#{options[:source_folder].name}'")
306
308
  end
307
- elsif options[:owner]
308
- # elsif there is no source_folder, but a specify owner, we check if we can delete, if owner change
309
- if options[:owner] != repo_item.owner && !can_delete?(repo_item)
310
- raise RepositoryManager::AuthorisationException.new("move repo_item failed. You don't have the permission to delete the repo_item '#{repo_item.name}'")
311
- end
312
- # If we don't want to change the owner, we look if we can_update
313
- if options[:owner] == repo_item.owner && !can_update?(repo_item)
314
- raise RepositoryManager::AuthorisationException.new("move repo_item failed. You don't have the permission to update the '#{repo_item.name}'")
315
- end
316
309
  else
317
310
  # Else if there is no source_folder, we check if we can delete the repo_item, if the owner change
318
311
  if self != repo_item.owner && !can_delete?(repo_item)
319
312
  raise RepositoryManager::AuthorisationException.new("move repo_item failed. You don't have the permission to delete the repo_item '#{repo_item.name}'")
320
313
  end
321
314
  end
322
- # We put the owner
323
- if options[:source_folder]
324
- owner = options[:source_folder].owner
325
- elsif options[:owner]
326
- owner = options[:owner].owner
327
- else
328
- owner = self
329
- end
330
315
  # If it has the permission, we move the repo_item in the source_folder
331
- repo_item.move!(source_folder: options[:source_folder], owner: owner)
316
+ repo_item.move!(source_folder: target)
332
317
  end
333
318
 
334
- def move_repo_item(repo_item, options = {})
319
+ def move_repo_item(repo_item, target = nil)
335
320
  begin
336
- move_repo_item!(repo_item, options)
321
+ move_repo_item!(repo_item, target)
337
322
  rescue RepositoryManager::RepositoryManagerException, ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
338
323
  false
339
324
  end
340
325
  end
341
326
 
342
- # Copy the repo_item in the source_folder or in the root
327
+ # Copy the repo_item in the source_folder or in own root
328
+ # target => the folder in witch we want to copy the repo item
343
329
  # options
344
- # :source_folder => the folder in witch we want to copy the repo item
345
- # :sender => the new sender (by default => owner)
346
- def copy_repo_item!(repo_item, options = {})
330
+ # :sender => the new sender (by default => still the old sender)
331
+ def copy_repo_item!(repo_item, target = nil, options = {})
347
332
  unless can_read?(repo_item)
348
333
  raise RepositoryManager::AuthorisationException.new("copy repo_item failed. You don't have the permission to read the repo_item '#{repo_item.name}'")
349
334
  end
350
335
 
351
- if options[:source_folder] && !can_create?(options[:source_folder])
352
- raise RepositoryManager::AuthorisationException.new("copy repo_item failed. You don't have the permission to create in the source_folder '#{source_folder.name}'")
336
+ if target && !can_create?(target)
337
+ raise RepositoryManager::AuthorisationException.new("copy repo_item failed. You don't have the permission to create in the source_folder '#{target.name}'")
353
338
  end
339
+
340
+ # The new owner
341
+ if target
342
+ owner = target.owner
343
+ else
344
+ owner = self
345
+ end
346
+
354
347
  # If it has the permission, we move the repo_item in the source_folder
355
- repo_item.copy!(source_folder: options[:source_folder], owner: self, sender: options[:sender])
348
+ repo_item.copy!(source_folder: target, owner: owner, sender: options[:sender])
356
349
  end
357
350
 
358
- def copy_repo_item(repo_item, options = {})
351
+ def copy_repo_item(repo_item, target = nil, options = {})
359
352
  begin
360
- copy_repo_item!(repo_item, options)
353
+ copy_repo_item!(repo_item, target, options)
361
354
  rescue RepositoryManager::AuthorisationException, RepositoryManager::RepositoryManagerException, ActiveRecord::RecordInvalid, ActiveRecord::RecordNotSaved
362
355
  false
363
356
  end
@@ -451,7 +444,7 @@ module RepositoryManager
451
444
  end
452
445
  end
453
446
 
454
- # You can here remove members in the sharing
447
+ # You can here remove members in the sharing
455
448
  # Param member could be an object or an array of object
456
449
  def remove_members_from!(sharing, members)
457
450
  if can_remove_from?(sharing)
@@ -476,13 +469,7 @@ module RepositoryManager
476
469
 
477
470
  # Returns true of false if the name exist in the root path of this instance
478
471
  def repo_item_name_exist_in_root?(name)
479
- # add : or file : name
480
- #RepoItem.where(name: name).where(owner: self).where(ancestry: nil).first ? true : false
481
- #puts RepoItem.where('name = ? OR file = ?', name, name).where(owner: self).where(ancestry: nil).first.inspect
482
- #puts self.inspect
483
-
484
472
  RepoItem.where('name = ? OR file = ?', name, name).where(owner: self).where(ancestry: nil).first ? true : false
485
-
486
473
  end
487
474
 
488
475
  private
@@ -500,6 +487,12 @@ module RepositoryManager
500
487
  end
501
488
  end
502
489
 
490
+ # reflexion: can_do?(what, options)
491
+ # options
492
+ # hash : authorisations hash
493
+ # class: RepoItem => get_authorisations
494
+ # class: has_repository => regarder si on peu déplacer dans root (question: non pas possible ?)
495
+
503
496
  # Return if you can do or not this action (what)
504
497
  def can_do?(what, repo_item, authorisations = nil)
505
498
  # If we pass no authorisations we have to get it
@@ -612,4 +605,4 @@ module RepositoryManager
612
605
  end
613
606
  end
614
607
 
615
- ActiveRecord::Base.send :include, RepositoryManager::HasRepository
608
+ ActiveRecord::Base.send :include, RepositoryManager::HasRepository
@@ -1,3 +1,3 @@
1
1
  module RepositoryManager
2
- VERSION = '0.1.16'
2
+ VERSION = '0.1.18'
3
3
  end
Binary file
@@ -18,7 +18,6 @@ describe 'HasRepository' do
18
18
  expect(@user2.sharings.last).to eq(sharing)
19
19
  end
20
20
 
21
-
22
21
  it 'can share his own repo_item with other users' do
23
22
  rep = FactoryGirl.build(:rm_repo_file)
24
23
  rep.owner = @user1
@@ -224,9 +223,9 @@ describe 'HasRepository' do
224
223
 
225
224
  @user1.share(nested, @user2)
226
225
 
227
- expect(nested.has_nested_sharing?).to eq(false) # Returns false (because `nested` is shared but there is no nested sharing)
228
- expect(parent.has_nested_sharing?).to eq(true) # Returns true (because there is a sharing on one of his descendants)
229
- expect(parent.has_nested_sharing?).to eq(true) # Returns true (because there is a sharing on one of his ancestors)
226
+ expect(nested.can_be_shared_without_nesting?).to eq(true) # Returns true (because `nested` is shared but there is no nested sharing)
227
+ expect(parent.can_be_shared_without_nesting?).to eq(false) # Returns false (because there is a sharing on one of his descendants)
228
+ expect(parent.can_be_shared_without_nesting?).to eq(false) # Returns false (because there is a sharing on one of his ancestors)
230
229
 
231
230
  # Here we can't share 'Parent' or 'Children' because it already exist a nested sharing.
232
231
  expect(@user1.share(parent, @user2)).to eq(false) # Returns false
@@ -143,6 +143,24 @@ describe 'RepoItem' do
143
143
  @user2.delete_download_path()
144
144
  end
145
145
 
146
+ it 'can copy a hard folder (nested folders and files)' do
147
+ nested = @user2.create_folder!('a')
148
+ a = @user2.create_folder!('a', source_folder: nested)
149
+ b = @user2.create_folder!('b', source_folder: a)
150
+ c = @user2.create_folder!('c', source_folder: b)
151
+ d = @user2.create_folder!('a', source_folder: c)
152
+ e = @user2.create_folder!('a', source_folder: d)
153
+
154
+ file = FactoryGirl.build(:rm_repo_file)
155
+ #@user2.create_file!(file, source_folder: a)
156
+ #@user2.create_file!(file, source_folder: nested)
157
+ @user2.create_file!(file, source_folder: c)
158
+ @user2.share!(nested, @user1, repo_item_permissions: {can_read: true})
159
+ copy = @user1.copy_repo_item!(nested)
160
+ @user1.download(copy)
161
+ @user1.delete_download_path()
162
+ end
163
+
146
164
  it 'can\'t add a repo_item with the same name in a folder' do
147
165
  root_folder = @user1.create_folder('Root folder')
148
166
  root_folder.add(@user1_folder)
@@ -151,7 +169,7 @@ describe 'RepoItem' do
151
169
  test_folder = @user1.create_folder('Test folder', source_folder: root_test_folder)
152
170
  @user1.create_folder('Nested test folder', source_folder: test_folder)
153
171
 
154
- @user1.move_repo_item(test_folder, source_folder: @user1_folder)
172
+ @user1.move_repo_item(test_folder, @user1_folder)
155
173
 
156
174
  expect(test_folder.parent_id).to eq(@user1_folder.id)
157
175
  end
@@ -244,15 +262,15 @@ describe 'RepoItem' do
244
262
  file = @user2.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"))
245
263
  folder = @user2.create_folder('folder')
246
264
 
247
- @user2.move_repo_item!(file, source_folder: folder)
265
+ @user2.move_repo_item!(file, folder)
248
266
 
249
267
  expect(folder.children).to eq([file])
250
268
  end
251
269
 
252
- it "can move a folder to folder" do
270
+ it "can move a folder into a folder" do
253
271
  folder = @user2.create_folder('folder')
254
272
  folder2 = @user2.create_folder('folder2')
255
- @user2.move_repo_item!(folder, source_folder: folder2)
273
+ @user2.move_repo_item!(folder, folder2)
256
274
 
257
275
  expect(folder2.children).to eq([folder])
258
276
  end
@@ -261,7 +279,35 @@ describe 'RepoItem' do
261
279
  file = @user2.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"))
262
280
  folder = @user2.create_folder('folder')
263
281
 
264
- expect(@user2.move_repo_item!(folder, source_folder: file)).to eq(false)
282
+ expect(@user2.move_repo_item(folder, file)).to eq(false)
283
+ end
284
+
285
+ it "move_repo_item default to the root of the self owner" do
286
+ file = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder)
287
+
288
+ @user1.delete_repo_item!(@user1_file)
289
+ #expect(@user1.root_repo_items.count).to eq(1)
290
+ @user1.move_repo_item!(file)
291
+ expect(@user1.root_repo_items.count).to eq(2)
292
+ end
293
+
294
+ it "move_repo_item can't move a file into a root if file already exist" do
295
+ file = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder)
296
+ expect(@user1.move_repo_item(file)).to eq(false)
265
297
  end
266
298
 
299
+ it "move_repo_item can't move if no permission" do
300
+ file = @user1.create_file(File.open("#{Rails.root}/../fixture/textfile.txt"), source_folder: @user1_folder)
301
+ expect(@user2.move_repo_item(file)).to eq(false)
302
+ end
303
+
304
+ it "can't copy a file withour permission" do
305
+ expect(@user2.copy_repo_item(@user1_file)).to eq(false)
306
+ end
307
+
308
+ it "can copy a file with read permission" do
309
+ @user1.share(@user1_file, @user2, repo_item_permissions: {can_read:true})
310
+ @user2.copy_repo_item(@user1_file)
311
+ expect(@user2.root_repo_items.count).to eq(1)
312
+ end
267
313
  end
@@ -35,6 +35,7 @@ describe 'Sharing' do
35
35
  expect(@user2.shared_repo_items.count).to eq(0)
36
36
  end
37
37
 
38
+
38
39
  it 'can remove a member in a sharing with permission' do
39
40
  sharing = @user1.share(@user1_file, @user2, {sharing_permissions:{can_add: false, can_remove: true}})
40
41
  @user1.add_members_to(sharing, @user3)
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.16
4
+ version: 0.1.18
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-02-12 00:00:00.000000000 Z
11
+ date: 2014-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails