github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/tests/system/lib/bootstrap.rb (about) 1 class Bootstrap 2 attr_reader :sharing, :owner, :recipients, :objects 3 4 def initialize(owner, recipients, rules) 5 @owner = owner 6 @recipients = recipients 7 @objects = rules.map(&:object) 8 @sharing = Sharing.new 9 @sharing.rules = rules 10 @sharing.members << owner 11 recipients.each do |r| 12 contact = Contact.create owner, given_name: r.name 13 @sharing.members << contact 14 end 15 owner.register @sharing 16 end 17 18 def open 19 @owner.open @objects.first 20 end 21 22 def accept(recipient = nil) 23 recipient ||= @recipients.first 24 recipient.accept @sharing 25 end 26 27 def self.sync_folder 28 owner = Instance.create name: "Alice" 29 object = Folder.create owner 30 dir = Folder.create owner, dir_id: object.couch_id 31 f = "../fixtures/wet-cozy_20160910__M4Dz.jpg" 32 opts = CozyFile.options_from_fixture(f, dir_id: object.couch_id) 33 file = CozyFile.create owner, opts 34 object.children << dir << file 35 recipient = Instance.create name: "Bob" 36 [owner, recipient].map { |i| i.install_app "home" } 37 rule = Rule.sync object 38 Bootstrap.new owner, [recipient], [rule] 39 end 40 41 def self.push_folder 42 owner = Instance.create name: "Alice" 43 object = Folder.create owner 44 dir = Folder.create owner, dir_id: object.couch_id 45 f = "../fixtures/wet-cozy_20160910__M4Dz.jpg" 46 opts = CozyFile.options_from_fixture(f, dir_id: object.couch_id) 47 file = CozyFile.create owner, opts 48 object.children << dir << file 49 recipient = Instance.create name: "Bob" 50 [owner, recipient].map { |i| i.install_app "home" } 51 rule = Rule.push object 52 Bootstrap.new owner, [recipient], [rule] 53 end 54 55 def self.photos_album 56 owner = Instance.create name: "Alice" 57 CozyFile.ensure_photos_in_cache 58 album = Album.create owner 59 dir = Folder.create owner 60 photos = CozyFile.create_photos owner, dir_id: dir.couch_id 61 photos.each { |p| album.add owner, p } 62 recipient = Instance.create name: "Bob" 63 [owner, recipient].map { |i| i.install_app "photos" } 64 rules = [] 65 rules << Rule.new(doctype: album.doctype, 66 title: album.name, 67 values: [album.couch_id]) 68 rules << Rule.new(doctype: photos.first.doctype, 69 title: "photos", 70 selector: "referenced_by", 71 values: ["#{album.doctype}/#{album.couch_id}"], 72 add: :push, 73 update: :push, 74 remove: :push) 75 Bootstrap.new owner, [recipient], rules 76 end 77 end