class TestdroidApi::Client::Project

Attributes

app_file[R]
description[R]
id[R]
name[R]
test_file[R]

Public Class Methods

new(client, config) click to toggle source
# File lib/testdroid-api/client/project.rb, line 6
def initialize(client, config)
  @client      = client
  @id          = config['id']
  @name        = config['name']
  @description = config['description']

  #TODO: Add uploadTimeslate
  @app_file    = config['appFile'] && config['appFile']['originalName']

  #TODO: Add uploadTime
  @test_file   = config['testFile'] && config['testFile']['originalName']
end

Public Instance Methods

config() click to toggle source
# File lib/testdroid-api/client/project.rb, line 89
def config
  raise NotImplementedError
end
create_test_run(device_group = 'all devices', instatest = false, screenshots = false) click to toggle source

Start new test run @return [TestdroidApi::Client::Project::TestRun]

@param device_group [TestdroidApi::Client::DeviceGroup] devices to be tested @param instatest [Boolean] run project in instatest mode @param screenshots [Boolean] take screenshots automatically

# File lib/testdroid-api/client/project.rb, line 63
def create_test_run(device_group = 'all devices', instatest = false, screenshots = false)
  res_name = "project/run/#{id}"
  endpoint = "projects/#{id}/run"
  params   = {
    :instatestMode   => instatest,
    :autoScreenshots => screenshots,
    :usedClusterId   => get_group_id(device_group)
  }
  test_run = @client.post_api_request(endpoint, params, res_name)

  TestdroidApi::Client::Project::TestRun.new(@client, self, test_run)
end
delete!() click to toggle source

Delete project

# File lib/testdroid-api/client/project.rb, line 50
def delete!
  res_name = "project/#{id}"
  endpoint = "projects/#{id}/delete"

  @client.post_api_request(endpoint, nil, res_name)
end
test_runs() click to toggle source

Returns project runs from project @return [Array<Project>]

# File lib/testdroid-api/client/project.rb, line 78
def test_runs
  res_name = "runs"
  endpoint = "projects/#{id}/runs"

  configs = @client.get_api_request(endpoint, res_name)

  configs.map{|config|
    TestdroidApi::Client::Project::TestRun.new(@client, self, config)
  }
end
update_config(new_config) click to toggle source
# File lib/testdroid-api/client/project.rb, line 93
def update_config(new_config)
  raise NotImplementedError
end
upload_app_file(path) click to toggle source

Upload application binary @param path path to application file

# File lib/testdroid-api/client/project.rb, line 21
def upload_app_file(path)
  endpoint = "projects/#{id}/apks/application"

  file     = File.new(path)
  digest   = mh5digest(file)
  params   = { :file => file, :multipart => true }

  res_name = "upload#{id}application#{digest}"
  extra_headers = {'X-Testdroid-MD5' => digest}

  @client.post_api_request(endpoint, params, res_name, extra_headers )
end
upload_test_file(path) click to toggle source

Upload test binary @param path path to test file

# File lib/testdroid-api/client/project.rb, line 36
def upload_test_file(path)
  endpoint = "projects/#{id}/apks/instrumentation"

  file     = File.new(path)
  digest   = mh5digest(file)
  params   = { :file => file, :multipart => true }

  res_name = "upload#{id}instrumentation#{digest}"
  extra_headers = {'X-Testdroid-MD5' => digest}

  @client.post_api_request(endpoint, params, res_name, extra_headers )
end

Private Instance Methods

get_group_id(object) click to toggle source
# File lib/testdroid-api/client/project.rb, line 101
def get_group_id(object)
  (object.respond_to? :id) ? object.id : object
end
mh5digest(file) click to toggle source
# File lib/testdroid-api/client/project.rb, line 97
def mh5digest(file)
  Digest::MD5.hexdigest(file.read)
end