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