Class: Spaceship::Tunes::Tester

Inherits:
TunesBase show all
Defined in:
lib/spaceship/tunes/tester.rb

Direct Known Subclasses

External, Internal

Defined Under Namespace

Classes: External, Internal

Instance Attribute Summary collapse

Attributes inherited from Base

#client, #raw_data

App collapse

Subclasses collapse

Class Method Summary collapse

Methods inherited from TunesBase

client

Methods inherited from Base

attr_accessor, attr_mapping, #attributes, attributes, #initialize, #inspect, mapping_module, method_missing, set_client, #to_s

Constructor Details

This class inherits a constructor from Spaceship::Base

Instance Attribute Details

#devicesArray

Returns An array of registered devices for this user.

Examples:

[{
  "model": "iPhone 6",
  "os": "iOS",
  "osVersion": "8.3",
  "name": null
}]


32
33
34
# File 'lib/spaceship/tunes/tester.rb', line 32

def devices
  @devices
end

#emailString

Returns The email of this tester.

Examples:

"[email protected]"


12
13
14
# File 'lib/spaceship/tunes/tester.rb', line 12

def email
  @email
end

#first_nameString

Returns The first name of this tester.

Examples:

"Cary"


17
18
19
# File 'lib/spaceship/tunes/tester.rb', line 17

def first_name
  @first_name
end

#last_nameString

Returns The last name of this tester.

Examples:

"Bennett"


22
23
24
# File 'lib/spaceship/tunes/tester.rb', line 22

def last_name
  @last_name
end

#latest_install_app_idInteger

Information about the most recent beta install



36
37
38
# File 'lib/spaceship/tunes/tester.rb', line 36

def latest_install_app_id
  @latest_install_app_id
end

#latest_install_dateInteger



40
41
42
# File 'lib/spaceship/tunes/tester.rb', line 40

def latest_install_date
  @latest_install_date
end

#latest_installed_build_numberInteger



43
44
45
# File 'lib/spaceship/tunes/tester.rb', line 43

def latest_installed_build_number
  @latest_installed_build_number
end

#latest_installed_version_numberInteger



46
47
48
# File 'lib/spaceship/tunes/tester.rb', line 46

def latest_installed_version_number
  @latest_installed_version_number
end

#tester_idString

Returns The identifier of this tester, provided by iTunes Connect.

Examples:

"60f858b4-60a8-428a-963a-f943a3d68d17"


7
8
9
# File 'lib/spaceship/tunes/tester.rb', line 7

def tester_id
  @tester_id
end

Class Method Details

.add_all_to_app!(app_id) ⇒ Object

Add all testers to the app received



123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/spaceship/tunes/tester.rb', line 123

def add_all_to_app!(app_id)
  all.each do |tester|
    begin
      tester.add_to_app!(app_id)
    rescue => ex
      if ex.to_s.include? "testerEmailExistsInternal" or ex.to_s.include? "duplicate.email"
        # That's a non-relevant error message by iTC
        # ignore that
      else
        raise ex
      end
    end
  end
end

.allArray



73
74
75
# File 'lib/spaceship/tunes/tester.rb', line 73

def all
  client.testers(self).map { |tester| self.factory(tester) }
end

.all_by_app(app_id) ⇒ Array



107
108
109
# File 'lib/spaceship/tunes/tester.rb', line 107

def all_by_app(app_id)
  client.testers_by_app(self, app_id).map { |tester| self.factory(tester) }
end

.create!(email: nil, first_name: nil, last_name: nil) ⇒ Tester

Create new tester in iTunes Connect

Examples:

Spaceship::Tunes::Tester.external.create!(email: "[email protected]", first_name: "Cary", last_name:"Bennett")


93
94
95
96
97
98
99
# File 'lib/spaceship/tunes/tester.rb', line 93

def create!(email: nil, first_name: nil, last_name: nil)
  data = client.create_tester!(tester: self,
                                email: email,
                           first_name: first_name,
                            last_name: last_name)
  self.factory(data)
end

.factory(attrs) ⇒ Object

Create a new object based on a hash. This is used to create a new object based on the server response.



68
69
70
# File 'lib/spaceship/tunes/tester.rb', line 68

def factory(attrs)
  self.new(attrs)
end

.find(identifier) ⇒ Spaceship::Tunes::Tester



80
81
82
83
84
# File 'lib/spaceship/tunes/tester.rb', line 80

def find(identifier)
  all.find do |tester|
    (tester.tester_id.to_s.casecmp(identifier.to_s).zero? or tester.email.to_s.casecmp(identifier.to_s).zero?)
  end
end

.find_by_app(app_id, identifier) ⇒ Spaceship::Tunes::Tester



115
116
117
118
119
# File 'lib/spaceship/tunes/tester.rb', line 115

def find_by_app(app_id, identifier)
  all_by_app(app_id).find do |tester|
    (tester.tester_id.to_s.casecmp(identifier.to_s).zero? or tester.email.to_s.casecmp(identifier.to_s).zero?)
  end
end

.urlHash



62
63
64
# File 'lib/spaceship/tunes/tester.rb', line 62

def url
  raise "You have to use a subclass: Internal or External"
end

Instance Method Details

#add_to_app!(app_id) ⇒ Object

Add current tester to list of the app testers



181
182
183
# File 'lib/spaceship/tunes/tester.rb', line 181

def add_to_app!(app_id)
  client.add_tester_to_app!(self, app_id)
end

#delete!Object

Delete current tester



171
172
173
# File 'lib/spaceship/tunes/tester.rb', line 171

def delete!
  client.delete_tester!(self)
end

#remove_from_app!(app_id) ⇒ Object

Remove current tester from list of the app testers



187
188
189
# File 'lib/spaceship/tunes/tester.rb', line 187

def remove_from_app!(app_id)
  client.remove_tester_from_app!(self, app_id)
end

#setupObject



139
140
141
# File 'lib/spaceship/tunes/tester.rb', line 139

def setup
  self.devices ||= [] # by default, an empty array instead of nil
end