sauce_whisk 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NTVhMzg0MGRmMjk3NGZjMjEwMDA4Mzk5M2RiYzQ3N2I3Y2E0ZDQxOA==
4
+ YmIzOTdjOTU0M2IyNDIyOWE4YWRiZGIyYjdlNjY1ZTA5OTFjMWIxOQ==
5
5
  data.tar.gz: !binary |-
6
- MDBiZDc3M2Q3MDc0OGYzYjlmMzk4YTNmNWZjZjI2ZWRiNmIyZjYyYQ==
6
+ YThkYzRhMTNiNTk5MTYwYTlmZTc0MzBlOTliMTQzMmJjNTk0ODgwNA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- Zjk3NDY0MmY2Y2I2NDc4YmYzNzljMGZhNDVhZmQ4Zjc0Yjg5NTQxOTkzZGE5
10
- OWMzNGZkYzE4MmU2ZjY0MTIzYTVlYzZiYTU1NjM1ODIxN2Y2OGMxMzJlOWJl
11
- YjgxMDQ1OGNmNDI0NTJkNzcyNzMyZTZiNjI4OTI2N2FkY2Y2OGI=
9
+ M2MwNWVkNTk0YzI0N2NmMmUxZGZmOTJjMDFjNmY2NmE0OTc1OWFjNjgyMDc5
10
+ ZWI3ZDE2ZTNiMzdhYTNkMmYzMWFjMTE4YzdlNjZhOWFhMzZhN2NlZTdkMzk0
11
+ MTViZjZiMWM3MDkyMDViMWEzZWYxOTBlM2YwZThlZDNhMzZiMDY=
12
12
  data.tar.gz: !binary |-
13
- MmZjMGUwNGM5N2QyNGQxYWQ0NWMzMjgwYmJlZjFlMjFhYTAxMGYzNTQyYWFh
14
- MzgwYTRhNWYwODhlOTcyNGRhYTE1YWEwNDE1ODU5YjcwNGVkZDM1NzM1MGIx
15
- ZGQzYmU2NzMyYTVkZDYyYmZjZWI1MTVhNDlhODljNTFiMGQwNDc=
13
+ NmEwZjAzMDc2MDk1NTNjYTVkNDFjYmQ1NzE1Mzg0YjE5ZDVhODNiYWU1NmI2
14
+ NGJhZmY3MTFkN2M1ZjQ0NjhhYTg0YjQyOThhM2U3ZmI2ZTUwOGY5NzVmOWNm
15
+ ZmJkOTQwZGE4ZjE0NTgwYzI0NjNmMDExZTZjOGE2ZWIwMWQ3ZTQ=
data/README.md CHANGED
@@ -18,15 +18,74 @@ Or install it yourself as:
18
18
 
19
19
  $ gem install sauce_whisk
20
20
 
21
+ ## Configuration
22
+
23
+ You'll need a [Sauce Labs account](http://wwww.saucelabs.com/signup). They're free to try and, if you're an open source project, [your access is always free](http://saucelabs.com/opensauce).
24
+
25
+ Once you've got your account, set the following environment variables:
26
+
27
+ ```bash
28
+ SAUCE_USERNAME=Your Sauce Username
29
+ SAUCE_ACCESS_KEY=Your Access Key, found on the lower left of your Account page
30
+ ```
31
+
21
32
  ## Usage
22
33
 
23
- ### Marking a Job as Passed
24
-
34
+ ### Marking jobs passed or failed
35
+ ```ruby
25
36
  SauceWhisk::Jobs.pass_job job_id
26
-
27
- ### Marking a Job as Failed
28
-
29
37
  SauceWhisk::Jobs.fail_job job_id
38
+ ```
39
+
40
+ ### Creating Job Objects
41
+
42
+ There are two ways to create a Job object.
43
+
44
+ ```ruby
45
+ # Create an 'empty' job (i.e. don't retrieve job details from the API)
46
+ empty_job = Job.new job_id
47
+
48
+ # Create a job with details fetched from the API
49
+ fully_detailed_job = Jobs.fetch job_id
50
+ ```
51
+
52
+ Use the first form when you just want a simple way to push details to the API. Use the last form when you want to fetch details from the API.
53
+
54
+ NB: It's not possible to create a new job on Sauce Labs' infrastructure with the API.
55
+
56
+ ### Updating Job Metadata
57
+
58
+ ```ruby
59
+ job = Job.new job_id
60
+ job.build = "12.3.04-beta"
61
+ job.visibility = "public"
62
+ job.tags = "new_user"
63
+ job.name = "Determine if the User can Invite Friends"
64
+ job.custom_data = {:executor => "jparth", :team_city_config => "standard_with_instrumentation"}
65
+ job.passed = false
66
+
67
+ job.save
68
+ ```
69
+
70
+ It is not possible to alter any other job properties.
71
+
72
+ ### Assets
73
+
74
+ There are three types of asset for Sauce Labs jobs: screenshots, video and logs. Assets are represented as an Asset object, which include the name, asset type and data.
75
+
76
+ #### Screenshots
77
+
78
+ ```ruby
79
+ job = Job.fetch job_id
80
+ screenshots = job.screenshots # An array of Screenshot assets
81
+ ```
82
+
83
+ #### Video
84
+
85
+ ```ruby
86
+ job = Job.fetch job_id
87
+ video = job.video # A single Asset, holding the video
88
+ ```
30
89
 
31
90
  ## Contributing
32
91
 
@@ -1,25 +1,27 @@
1
- class Assets
2
- extend RestRequestBuilder
1
+ module SauceWhisk
2
+ class Assets
3
+ extend RestRequestBuilder
3
4
 
4
- def self.resource
5
- "#{SauceWhisk.username}/jobs"
6
- end
5
+ def self.resource
6
+ "#{SauceWhisk.username}/jobs"
7
+ end
7
8
 
8
- def self.fetch(job_id, asset, type=nil)
9
- data = get "#{job_id}/assets/#{asset}"
10
- Asset.new({:name => asset, :data => data, :job_id => job_id, :type => type})
9
+ def self.fetch(job_id, asset, type=nil)
10
+ data = get "#{job_id}/assets/#{asset}"
11
+ Asset.new({:name => asset, :data => data, :job_id => job_id, :type => type})
12
+ end
11
13
  end
12
- end
13
14
 
14
- class Asset
15
+ class Asset
15
16
 
16
- attr_reader :asset_type, :name, :data, :job
17
+ attr_reader :asset_type, :name, :data, :job
17
18
 
18
- def initialize(parameters={})
19
- @asset_type = parameters[:type] || :screenshot
20
- @name = parameters[:name]
21
- @data = parameters[:data]
22
- @job = parameters[:job_id]
23
- end
19
+ def initialize(parameters={})
20
+ @asset_type = parameters[:type] || :screenshot
21
+ @name = parameters[:name]
22
+ @data = parameters[:data]
23
+ @job = parameters[:job_id]
24
+ end
24
25
 
26
+ end
25
27
  end
@@ -2,111 +2,113 @@ require 'json'
2
2
 
3
3
  require 'sauce_whisk/rest_request_builder'
4
4
 
5
- class Jobs
6
- extend RestRequestBuilder
5
+ module SauceWhisk
6
+ class Jobs
7
+ extend RestRequestBuilder
7
8
 
8
- def self.resource
9
- "#{SauceWhisk.username}/jobs"
10
- end
9
+ def self.resource
10
+ "#{SauceWhisk.username}/jobs"
11
+ end
11
12
 
12
- def self.all
13
- all_jobs = JSON.parse get
14
- all_jobs.map {|job| Job.new(job)}
15
- end
13
+ def self.all
14
+ all_jobs = JSON.parse get
15
+ all_jobs.map {|job| Job.new(job)}
16
+ end
16
17
 
17
- def self.change_status(job_id, status)
18
- put job_id, {"passed" => status}.to_json
19
- end
18
+ def self.change_status(job_id, status)
19
+ put job_id, {"passed" => status}.to_json
20
+ end
20
21
 
21
- def self.pass_job(job_id)
22
- change_status(job_id, true)
23
- end
22
+ def self.pass_job(job_id)
23
+ change_status(job_id, true)
24
+ end
24
25
 
25
- def self.fail_job(job_id)
26
- change_status(job_id, false)
27
- end
26
+ def self.fail_job(job_id)
27
+ change_status(job_id, false)
28
+ end
28
29
 
29
- def self.save(job)
30
- fields_to_save = job.updated_fields.each_with_object(Hash.new) do |field, hsh|
31
- hsh[field] = job.send(field.to_s)
30
+ def self.save(job)
31
+ fields_to_save = job.updated_fields.each_with_object(Hash.new) do |field, hsh|
32
+ hsh[field] = job.send(field.to_s)
33
+ end
34
+ put job.id, fields_to_save.to_json
32
35
  end
33
- put job.id, fields_to_save.to_json
34
- end
35
36
 
36
- def self.fetch(job_id)
37
- job_hash = JSON.parse(get job_id)
38
- assets = JSON.parse get "#{job_id}/assets"
39
- screenshots = assets["screenshots"]
37
+ def self.fetch(job_id)
38
+ job_hash = JSON.parse(get job_id)
39
+ assets = JSON.parse get "#{job_id}/assets"
40
+ screenshots = assets["screenshots"]
40
41
 
41
- job_hash.merge!({"screenshot_urls" => screenshots})
42
- Job.new(job_hash)
43
- end
42
+ job_hash.merge!({"screenshot_urls" => screenshots})
43
+ Job.new(job_hash)
44
+ end
44
45
 
45
- def self.fetch_asset(job_id, asset)
46
- asset = get "#{job_id}/assets/#{asset}"
46
+ def self.fetch_asset(job_id, asset)
47
+ asset = get "#{job_id}/assets/#{asset}"
48
+ end
47
49
  end
48
- end
49
-
50
- class Job
51
- attr_writer :updated_fields
52
-
53
- def self.tracked_attr_accessor(*methods)
54
- methods.each do |method|
55
- attr_reader method
56
- self.define_method("#{method}=") do |arg|
57
- if method != arg
58
- updated_fields << method
59
- instance_variable_set("@#{method}", arg)
50
+
51
+ class Job
52
+ attr_writer :updated_fields
53
+
54
+ def self.tracked_attr_accessor(*methods)
55
+ methods.each do |method|
56
+ attr_reader method
57
+ self.send(:define_method, "#{method}=") do |arg|
58
+ if method != arg
59
+ updated_fields << method
60
+ instance_variable_set("@#{method}", arg)
61
+ end
60
62
  end
61
63
  end
62
64
  end
63
- end
64
65
 
65
- attr_reader :id, :owner, :browser, :browser_version, :os, :log_url
66
- attr_reader :error, :creation_time, :start_time, :end_time, :video_url
67
- attr_reader :screenshot_urls
66
+ attr_reader :id, :owner, :browser, :browser_version, :os, :log_url
67
+ attr_reader :error, :creation_time, :start_time, :end_time, :video_url
68
+ attr_reader :screenshot_urls
68
69
 
69
- tracked_attr_accessor :custom_data, :tags, :name, :visibility, :build, :passed
70
+ tracked_attr_accessor :custom_data, :tags, :name, :visibility, :build, :passed
70
71
 
71
- def initialize(parameters={})
72
- passed = parameters.delete "status"
73
- cd = parameters.delete "custom-data"
74
- visibility = parameters.delete "public"
72
+ def initialize(parameters={})
73
+ passed = parameters.delete "status"
74
+ cd = parameters.delete "custom-data"
75
+ visibility = parameters.delete "public"
75
76
 
76
- self.passed = passed
77
- self.custom_data = cd
78
- self.visibility = visibility
77
+ self.passed = passed
78
+ self.custom_data = cd
79
+ self.visibility = visibility
79
80
 
80
- parameters.each do |k,v|
81
- self.instance_variable_set("@#{k}".to_sym, v)
82
- end
81
+ parameters.each do |k,v|
82
+ self.instance_variable_set("@#{k}".to_sym, v)
83
+ end
83
84
 
84
- @updated_fields = []
85
- end
85
+ @updated_fields = []
86
+ end
86
87
 
87
- def save
88
- Jobs.save(self)
89
- end
88
+ def save
89
+ Jobs.save(self)
90
+ end
90
91
 
91
- def updated_fields
92
- @updated_fields ||= []
93
- end
92
+ def updated_fields
93
+ @updated_fields ||= []
94
+ end
94
95
 
95
- def screenshots
96
- unless @screenshots
97
- @screenshots = screenshot_urls.map do |screenshot|
98
- Assets.fetch id, screenshot
96
+ def screenshots
97
+ unless @screenshots
98
+ @screenshots = screenshot_urls.map do |screenshot|
99
+ Assets.fetch id, screenshot
100
+ end
99
101
  end
102
+
103
+ @screenshots
100
104
  end
101
105
 
102
- @screenshots
103
- end
106
+ def video
107
+ unless @video
108
+ @video = Assets.fetch id, "video.flv", :video
109
+ end
104
110
 
105
- def video
106
- unless @video
107
- @video = Assets.fetch id, "video.flv", :video
111
+ @video
108
112
  end
109
-
110
- @video
111
113
  end
112
114
  end
@@ -1,29 +1,31 @@
1
- module RestRequestBuilder
1
+ module SauceWhisk
2
+ module RestRequestBuilder
2
3
 
3
- def get(resource_to_fetch=nil)
4
- resource_url = fully_qualified_resource
5
- resource_url << "/#{resource_to_fetch}" if resource_to_fetch
6
- RestClient::Request.execute({:method => :get, :url => resource_url}.merge auth_details)
7
- end
4
+ def get(resource_to_fetch=nil)
5
+ resource_url = fully_qualified_resource
6
+ resource_url << "/#{resource_to_fetch}" if resource_to_fetch
7
+ RestClient::Request.execute({:method => :get, :url => resource_url}.merge auth_details)
8
+ end
8
9
 
9
- def put(resource_id, body)
10
- url = "#{fully_qualified_resource}/#{resource_id}"
11
- length = body.length
12
- headers = {"Content-Length" => length}
13
- req_params = {
14
- :method => :put,
15
- :url => url,
16
- :payload => body,
17
- :content_type => "application/json"
18
- }
19
- RestClient::Request.execute(req_params.merge auth_details)
20
- end
10
+ def put(resource_id, body)
11
+ url = "#{fully_qualified_resource}/#{resource_id}"
12
+ length = body.length
13
+ headers = {"Content-Length" => length}
14
+ req_params = {
15
+ :method => :put,
16
+ :url => url,
17
+ :payload => body,
18
+ :content_type => "application/json"
19
+ }
20
+ RestClient::Request.execute(req_params.merge auth_details)
21
+ end
21
22
 
22
- def auth_details
23
- {:user => SauceWhisk.username, :password => SauceWhisk.password}
24
- end
23
+ def auth_details
24
+ {:user => SauceWhisk.username, :password => SauceWhisk.password}
25
+ end
25
26
 
26
- def fully_qualified_resource
27
- "#{SauceWhisk.base_url}/#{resource}"
27
+ def fully_qualified_resource
28
+ "#{SauceWhisk.base_url}/#{resource}"
29
+ end
28
30
  end
29
- end
31
+ end
@@ -1,3 +1,3 @@
1
1
  module SauceWhisk
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Asset do
3
+ describe SauceWhisk::Asset do
4
4
 
5
5
  describe "#initialize" do
6
6
  let(:data) {"DEDEDEDEDED"}
@@ -11,7 +11,7 @@ describe Asset do
11
11
  before :each do
12
12
  params = {:data => data, :name => name, :type => type, :job_id => job_id}
13
13
 
14
- @asset = Asset.new params
14
+ @asset = SauceWhisk::Asset.new params
15
15
  end
16
16
 
17
17
  it "should store the name" do
@@ -33,7 +33,7 @@ describe Asset do
33
33
 
34
34
  describe "#type" do
35
35
  it "should default to screenshot" do
36
- Asset.new.asset_type.should eq :screenshot
36
+ SauceWhisk::Asset.new.asset_type.should eq :screenshot
37
37
  end
38
38
  end
39
39
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Assets do
3
+ describe SauceWhisk::Assets do
4
4
  let(:auth) {"#{ENV["SAUCE_USERNAME"]}:#{ENV["SAUCE_ACCESS_KEY"]}"}
5
5
 
6
6
  describe "#fetch", :vcr => {:cassette_name => "assets"} do
@@ -8,17 +8,17 @@ describe Assets do
8
8
  let(:asset_name) {"0000screenshot.png"}
9
9
 
10
10
  it "fetches an asset for the requested job" do
11
- Assets.fetch job_id, asset_name
11
+ SauceWhisk::Assets.fetch job_id, asset_name
12
12
 
13
13
  assert_requested :get, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/jobs/#{job_id}/assets/#{asset_name}"
14
14
  end
15
15
 
16
16
  it "returns an asset" do
17
- Assets.fetch(job_id, asset_name).should be_an_instance_of Asset
17
+ SauceWhisk::Assets.fetch(job_id, asset_name).should be_an_instance_of SauceWhisk::Asset
18
18
  end
19
19
 
20
20
  it "initializes the asset properly" do
21
- asset = Assets.fetch job_id, asset_name
21
+ asset = SauceWhisk::Assets.fetch job_id, asset_name
22
22
  asset.name.should eq asset_name
23
23
  asset.job.should eq job_id
24
24
  asset.asset_type.should eq :screenshot
@@ -1,8 +1,8 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Job do
4
- let(:job) {Job.new}
5
- subject {Job.new}
3
+ describe SauceWhisk::Job do
4
+ let(:job) {SauceWhisk::Job.new}
5
+ subject {SauceWhisk::Job.new}
6
6
 
7
7
  it {should respond_to :id}
8
8
 
@@ -26,7 +26,7 @@ describe Job do
26
26
  "custom_data" => ""
27
27
  }}
28
28
 
29
- subject {Job.new(params)}
29
+ subject {SauceWhisk::Job.new(params)}
30
30
 
31
31
  it "sets parameters at init" do
32
32
  params.each do |k,v|
@@ -47,20 +47,20 @@ describe Job do
47
47
  end
48
48
 
49
49
  it "has empty updated_fields for new instances" do
50
- new_job = Job.new(params)
50
+ new_job = SauceWhisk::Job.new(params)
51
51
  new_job.updated_fields.should eq []
52
52
  end
53
53
 
54
54
  describe "#save" do
55
- subject {Job.new(params)}
55
+ subject {SauceWhisk::Job.new(params)}
56
56
 
57
57
  context "with changed values" do
58
58
  before(:each) do
59
59
  subject.name = "New_Name"
60
60
  end
61
61
 
62
- it "calls the save method of the Jobs object" do
63
- Jobs.should_receive(:save).with(subject)
62
+ it "calls the save method of the SauceWhisk::Jobs object" do
63
+ SauceWhisk::Jobs.should_receive(:save).with(subject)
64
64
  subject.save
65
65
  end
66
66
  end
@@ -90,7 +90,7 @@ describe Job do
90
90
  end
91
91
 
92
92
  context "fetched from the API" do
93
- subject {Jobs.fetch "bd9c43dd6b5549f1b942d1d581d98cac"}
93
+ subject {SauceWhisk::Jobs.fetch "bd9c43dd6b5549f1b942d1d581d98cac"}
94
94
 
95
95
  describe "#screenshots", :vcr => {:cassette_name => "assets"} do
96
96
  it "contains all the screenshots for that job" do
@@ -98,14 +98,14 @@ describe Job do
98
98
  end
99
99
 
100
100
  it "contains actual screenshots" do
101
- subject.screenshots.first.should be_a_kind_of Asset
101
+ subject.screenshots.first.should be_a_kind_of SauceWhisk::Asset
102
102
  subject.screenshots.first.asset_type.should eq :screenshot
103
103
  end
104
104
  end
105
105
 
106
106
  describe "#video", :vcr => {:cassette_name => "assets"} do
107
107
  it "should be a video asset" do
108
- subject.video.should be_a_kind_of Asset
108
+ subject.video.should be_a_kind_of SauceWhisk::Asset
109
109
  subject.video.asset_type.should eq :video
110
110
  end
111
111
  end
@@ -1,28 +1,28 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Jobs do
3
+ describe SauceWhisk::Jobs do
4
4
  let(:auth) {"#{ENV["SAUCE_USERNAME"]}:#{ENV["SAUCE_ACCESS_KEY"]}"}
5
5
  describe "#all", :vcr => {:cassette_name => 'jobs'} do
6
6
 
7
7
  it "should return an enumerable" do
8
- Jobs.all.should be_an Enumerable
8
+ SauceWhisk::Jobs.all.should be_an Enumerable
9
9
  end
10
10
 
11
11
  it "should return a set of jobs" do
12
- jobs_found = Jobs.all
13
- jobs_found.each {|job| job.should be_a Job}
12
+ jobs_found = SauceWhisk::Jobs.all
13
+ jobs_found.each {|job| job.should be_a SauceWhisk::Job}
14
14
  end
15
15
  end
16
16
 
17
17
  describe "##change_status", :vcr => {:cassette_name => "jobs"} do
18
18
  let(:pass_string) {{:passed => true}.to_json}
19
19
  it "exists" do
20
- Jobs.respond_to? :change_status
20
+ SauceWhisk::Jobs.respond_to? :change_status
21
21
  end
22
22
 
23
23
  it "passes a test status to the REST api" do
24
24
  job_id = "bd9c43dd6b5549f1b942d1d581d98cac"
25
- Jobs.change_status job_id, true
25
+ SauceWhisk::Jobs.change_status job_id, true
26
26
  assert_requested :put, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/jobs/#{job_id}", :body => pass_string, :content_type => "application/json"
27
27
  end
28
28
  end
@@ -30,41 +30,41 @@ describe Jobs do
30
30
  describe "##pass_job" do
31
31
  it "Calls the API and passes the given job" do
32
32
  job_id = "rerfreferf"
33
- Jobs.should_receive(:change_status).with(job_id, true) {}
33
+ SauceWhisk::Jobs.should_receive(:change_status).with(job_id, true) {}
34
34
 
35
- Jobs.pass_job job_id
35
+ SauceWhisk::Jobs.pass_job job_id
36
36
  end
37
37
  end
38
38
 
39
39
  describe "##fail_job" do
40
40
  it "Calls change_status to fail the job" do
41
41
  job_id = "rcercer"
42
- Jobs.should_receive(:change_status).with(job_id, false) {}
42
+ SauceWhisk::Jobs.should_receive(:change_status).with(job_id, false) {}
43
43
 
44
- Jobs.fail_job job_id
44
+ SauceWhisk::Jobs.fail_job job_id
45
45
  end
46
46
  end
47
47
 
48
48
  describe "##save", :vcr => {:cassette_name => "jobs"} do
49
49
  it "sends a put request" do
50
50
  job_id = "bd9c43dd6b5549f1b942d1d581d98cac"
51
- job = Job.new({:id => job_id})
52
- Jobs.save (job)
51
+ job = SauceWhisk::Job.new({:id => job_id})
52
+ SauceWhisk::Jobs.save (job)
53
53
  assert_requested :put, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/jobs/#{job.id}", :body => anything, :content_type => "application/json"
54
54
  end
55
55
 
56
56
  it "only sends updated information" do
57
57
  job_id = "bd9c43dd6b5549f1b942d1d581d98cac"
58
- job = Job.new({:id => job_id})
58
+ job = SauceWhisk::Job.new({:id => job_id})
59
59
  job.name = "Updated Name"
60
- Jobs.save (job)
60
+ SauceWhisk::Jobs.save (job)
61
61
  expected_body = {:name => "Updated Name"}.to_json
62
62
  assert_requested :put, "https://#{auth}@saucelabs.com/rest/v1/dylanatsauce/jobs/#{job.id}", :body => expected_body, :content_type => "application/json"
63
63
  end
64
64
  end
65
65
 
66
66
  describe "##fetch", :vcr => {:cassette_name => "jobs"} do
67
- let(:job) {Jobs.fetch("bd9c43dd6b5549f1b942d1d581d98cac")}
67
+ let(:job) {SauceWhisk::Jobs.fetch("bd9c43dd6b5549f1b942d1d581d98cac")}
68
68
 
69
69
  it "contains the list of screenshots for the job" do
70
70
  job.screenshot_urls.should be_a_kind_of Enumerable
@@ -72,7 +72,7 @@ describe Jobs do
72
72
  end
73
73
 
74
74
  it "returns a job when a valid one is fetched" do
75
- job.should be_an_instance_of Job
75
+ job.should be_an_instance_of SauceWhisk::Job
76
76
  end
77
77
  end
78
78
  end
@@ -1,10 +1,10 @@
1
1
  require "spec_helper"
2
2
  require "rest_client"
3
3
 
4
- describe RestRequestBuilder do
4
+ describe SauceWhisk::RestRequestBuilder do
5
5
  let(:dummy_client) {
6
6
  Class.new do
7
- extend RestRequestBuilder
7
+ extend SauceWhisk::RestRequestBuilder
8
8
 
9
9
  def self.resource
10
10
  "dummy"
@@ -20,7 +20,7 @@ describe SauceWhisk do
20
20
  describe "##pass_job" do
21
21
  it "should call #pass on the jobs object" do
22
22
  job_id = "0418999"
23
- Jobs.should_receive(:pass_job).with(job_id) {true}
23
+ SauceWhisk::Jobs.should_receive(:pass_job).with(job_id) {true}
24
24
  SauceWhisk.pass_job job_id
25
25
  end
26
26
  end
@@ -16,8 +16,6 @@ VCR.configure do |config|
16
16
  }
17
17
  config.filter_sensitive_data("<SAUCE_USERNAME>") { ENV["SAUCE_USERNAME"] }
18
18
  config.filter_sensitive_data("<SAUCE_ACCESS_KEY>") { ENV["SAUCE_ACCESS_KEY"] }
19
-
20
- #config.debug_logger = STDOUT
21
19
  end
22
20
 
23
21
  RSpec.configure do |config|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sauce_whisk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dylan Lacey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-28 00:00:00.000000000 Z
11
+ date: 2013-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client