sauce_whisk 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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