screenbeacon 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.travis.yml +29 -0
  4. data/Gemfile +8 -0
  5. data/LICENSE +21 -0
  6. data/README.rdoc +44 -0
  7. data/Rakefile +7 -0
  8. data/VERSION +1 -0
  9. data/bin/screenbeacon-console +7 -0
  10. data/gemfiles/default-with-activesupport.gemfile +10 -0
  11. data/gemfiles/json.gemfile +12 -0
  12. data/gemfiles/yajl.gemfile +12 -0
  13. data/lib/data/ca-certificates.crt +5165 -0
  14. data/lib/screenbeacon/alert.rb +32 -0
  15. data/lib/screenbeacon/api_operations/create.rb +16 -0
  16. data/lib/screenbeacon/api_operations/delete.rb +11 -0
  17. data/lib/screenbeacon/api_operations/list.rb +17 -0
  18. data/lib/screenbeacon/api_operations/request.rb +42 -0
  19. data/lib/screenbeacon/api_operations/update.rb +17 -0
  20. data/lib/screenbeacon/api_resource.rb +35 -0
  21. data/lib/screenbeacon/errors/api_connection_error.rb +4 -0
  22. data/lib/screenbeacon/errors/api_error.rb +4 -0
  23. data/lib/screenbeacon/errors/authentication_error.rb +4 -0
  24. data/lib/screenbeacon/errors/invalid_request_error.rb +10 -0
  25. data/lib/screenbeacon/errors/screenbeacon_error.rb +20 -0
  26. data/lib/screenbeacon/project.rb +13 -0
  27. data/lib/screenbeacon/screenbeacon_object.rb +263 -0
  28. data/lib/screenbeacon/test.rb +8 -0
  29. data/lib/screenbeacon/util.rb +130 -0
  30. data/lib/screenbeacon/version.rb +3 -0
  31. data/lib/screenbeacon.rb +305 -0
  32. data/screenbeacon.gemspec +27 -0
  33. data/test/screenbeacon/alert_test.rb +14 -0
  34. data/test/screenbeacon/api_resource_test.rb +82 -0
  35. data/test/screenbeacon/project_test.rb +36 -0
  36. data/test/screenbeacon/screenbeacon_object_test.rb +28 -0
  37. data/test/screenbeacon/test_test.rb +36 -0
  38. data/test/screenbeacon/util_test.rb +34 -0
  39. data/test/test_data.rb +147 -0
  40. data/test/test_helper.rb +43 -0
  41. metadata +176 -0
data/test/test_data.rb ADDED
@@ -0,0 +1,147 @@
1
+ module Screenbeacon
2
+ module TestData
3
+ def test_response(body, code=200)
4
+ # When an exception is raised, restclient clobbers method_missing. Hence we
5
+ # can't just use the stubs interface.
6
+ body = JSON.generate(body) if !(body.kind_of? String)
7
+ m = mock
8
+ m.instance_variable_set('@screenbeacon_values', { :body => body, :code => code })
9
+ def m.body; @screenbeacon_values[:body]; end
10
+ def m.code; @screenbeacon_values[:code]; end
11
+ m
12
+ end
13
+
14
+ def test_project(params={})
15
+ {
16
+ :id => 13,
17
+ :name => "Screenbeacon",
18
+ :created_at => "2015-01-15T06:32:24Z",
19
+ :updated_at =>"2015-06-06T23:35:33Z",
20
+ :image_url => "https://screenbeacon.s3.amazonaws.com/projects/project/13/thumb_avatar_2x.png",
21
+ :active_alerts_count => 1,
22
+ :owner_avatar_url => "https://screenbeacon.s3.amazonaws.com/uploads/user/avatar/2/retina_jordan-humphreys.jpg",
23
+ :position => 0,
24
+ :tests_count => 2
25
+ }.merge(params)
26
+ end
27
+
28
+ def test_project_array
29
+ [test_project, test_project, test_project]
30
+ end
31
+
32
+ def test_test(params={})
33
+ {
34
+ :id => 3,
35
+ :name => "Amazon Test 2",
36
+ :description => "Testing broken images.",
37
+ :project_id => 14,
38
+ :state => "failed",
39
+ :last_run_at => "2015-06-06T23:33:58Z",
40
+ :active_alert => test_alert({:project => test_project, :test_version => test_version}),
41
+ :source => nil,
42
+ :md5 => "70c584f3b0ddba3f7e70663ed8cc61ff",
43
+ :times_run => 447,
44
+ :estimated_next_run_at => nil,
45
+ :steps => [test_step, test_step, test_step],
46
+ :created_at => "2015-01-17T03:41:32Z",
47
+ :updated_at => "2015-01-17T03:41:32Z"
48
+ }.merge(params)
49
+ end
50
+
51
+ def test_test_array
52
+ [test_test, test_test, test_test]
53
+ end
54
+
55
+ def test_alert(params={})
56
+ {
57
+ :id => 489,
58
+ :resolved_at => "2015-01-26T06:31:53Z",
59
+ :resolved_by_user_id => 2,
60
+ :baseline_image_url => "https://screenbeacon.s3.amazonaws.com/captures/alert/489/baseline_image.png?",
61
+ :diff_image_url => "https://screenbeacon.s3.amazonaws.com/comparisons/alert/489/diff_image.gif?",
62
+ :failed_at => "2015-01-16T03:13:25Z",
63
+ :resolved => true,
64
+ :failure_image_url => "https://screenbeacon.s3.amazonaws.com/captures/alert/489/failure_image.png",
65
+ :project_id => 14,
66
+ :message => "Unable to find element",
67
+ :completed => false,
68
+ :success => false,
69
+ :state => "resolved",
70
+ :step => nil,
71
+ :created_at => "2015-01-16T03:13:25Z",
72
+ :updated_at => "2015-01-26T06:31:53Z",
73
+ :times_seen_count => 1,
74
+ :passing => false,
75
+ :failing => false,
76
+ :error => false,
77
+ :test_id => 2,
78
+ :thumb_url => "https://screenbeacon.s3.amazonaws.com/captures/alert/489/thumb_baseline_image.png?",
79
+ :screenshot => true
80
+ }
81
+ end
82
+
83
+ def test_alert_array
84
+ [test_alert, test_alert, test_alert]
85
+ end
86
+
87
+ def test_step(params={})
88
+ {
89
+ :id => 14,
90
+ :position => 0,
91
+ :command => "width 1280",
92
+ :completed => true,
93
+ :success => true,
94
+ :message => nil,
95
+ :screenshot => false,
96
+ :created_at => "2015-01-17T03:41:32Z",
97
+ :updated_at => "2015-01-17T04:32:54Z",
98
+ :baseline_img_url => "https://captures-screenbeacon.s3.amazonaws.com/70c584f3b0ddba3f7e70663ed8cc61ff/baselines/0_screen.png?1433638217",
99
+ :diff_img_url => "https://captures-screenbeacon.s3.amazonaws.com/70c584f3b0ddba3f7e70663ed8cc61ff/diffs/0_screen.png?1433638217",
100
+ :failure_img_url => "https://captures-screenbeacon.s3.amazonaws.com/70c584f3b0ddba3f7e70663ed8cc61ff/failures/0_screen.png?1433638217",
101
+ :state => "passing"
102
+ }
103
+ end
104
+
105
+ def test_step_array
106
+ [test_step, test_step, test_step]
107
+ end
108
+
109
+ def test_version(params={})
110
+ {
111
+ :id => 3,
112
+ :test_id => 3,
113
+ :created_at => "2015-01-16T19:41:32.615-08:00",
114
+ :updated_at => "2015-06-06T16:33:57.256-07:00",
115
+ :last_run_at => "2015-06-06T16:33:58.000-07:00",
116
+ :times_run => 447,
117
+ :state => "failing",
118
+ :source => nil,
119
+ :last_enqueued_at => nil
120
+ }
121
+ end
122
+
123
+ def test_version_array
124
+ [test_version, test_version, test_version]
125
+ end
126
+
127
+ def test_invalid_api_id_error
128
+ {
129
+ :error => {
130
+ :type => "invalid_request_error",
131
+ :message => "Invalid API ID provided: invalid"
132
+ }
133
+ }
134
+ end
135
+
136
+ def test_missing_id_error
137
+ {
138
+ :error => {
139
+ :param => "id",
140
+ :type => "invalid_request_error",
141
+ :message => "Missing id"
142
+ }
143
+ }
144
+ end
145
+
146
+ end
147
+ end
@@ -0,0 +1,43 @@
1
+ require 'screenbeacon'
2
+ require 'test/unit'
3
+ require 'mocha/setup'
4
+ require 'stringio'
5
+ require 'shoulda'
6
+ require File.expand_path('../test_data', __FILE__)
7
+
8
+ # monkeypatch request methods
9
+ module Screenbeacon
10
+ @mock_rest_client = nil
11
+
12
+ def self.mock_rest_client=(mock_client)
13
+ @mock_rest_client = mock_client
14
+ end
15
+
16
+ def self.execute_request(opts)
17
+ get_params = (opts[:headers] || {})[:params]
18
+ post_params = opts[:payload]
19
+ case opts[:method]
20
+ when :get then @mock_rest_client.get opts[:url], get_params, post_params
21
+ when :post then @mock_rest_client.post opts[:url], get_params, post_params
22
+ when :delete then @mock_rest_client.delete opts[:url], get_params, post_params
23
+ end
24
+ end
25
+ end
26
+
27
+ class Test::Unit::TestCase
28
+ include Screenbeacon::TestData
29
+ include Mocha
30
+
31
+ setup do
32
+ @mock = mock
33
+ Screenbeacon.mock_rest_client = @mock
34
+ Screenbeacon.api_id="foo"
35
+ Screenbeacon.api_token="bar"
36
+ end
37
+
38
+ teardown do
39
+ Screenbeacon.mock_rest_client = nil
40
+ Screenbeacon.api_id=nil
41
+ Screenbeacon.api_token=nil
42
+ end
43
+ end
metadata ADDED
@@ -0,0 +1,176 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: screenbeacon
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jordan Humphreys
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.8.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.8.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: mocha
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.13.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.13.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: shoulda
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 3.4.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 3.4.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: test-unit
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Screenbeacon is a visual design testing service.
98
+ email:
99
+ - jordan@screenbeacon.com
100
+ executables:
101
+ - screenbeacon-console
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".gitignore"
106
+ - ".travis.yml"
107
+ - Gemfile
108
+ - LICENSE
109
+ - README.rdoc
110
+ - Rakefile
111
+ - VERSION
112
+ - bin/screenbeacon-console
113
+ - gemfiles/default-with-activesupport.gemfile
114
+ - gemfiles/json.gemfile
115
+ - gemfiles/yajl.gemfile
116
+ - lib/data/ca-certificates.crt
117
+ - lib/screenbeacon.rb
118
+ - lib/screenbeacon/alert.rb
119
+ - lib/screenbeacon/api_operations/create.rb
120
+ - lib/screenbeacon/api_operations/delete.rb
121
+ - lib/screenbeacon/api_operations/list.rb
122
+ - lib/screenbeacon/api_operations/request.rb
123
+ - lib/screenbeacon/api_operations/update.rb
124
+ - lib/screenbeacon/api_resource.rb
125
+ - lib/screenbeacon/errors/api_connection_error.rb
126
+ - lib/screenbeacon/errors/api_error.rb
127
+ - lib/screenbeacon/errors/authentication_error.rb
128
+ - lib/screenbeacon/errors/invalid_request_error.rb
129
+ - lib/screenbeacon/errors/screenbeacon_error.rb
130
+ - lib/screenbeacon/project.rb
131
+ - lib/screenbeacon/screenbeacon_object.rb
132
+ - lib/screenbeacon/test.rb
133
+ - lib/screenbeacon/util.rb
134
+ - lib/screenbeacon/version.rb
135
+ - screenbeacon.gemspec
136
+ - test/screenbeacon/alert_test.rb
137
+ - test/screenbeacon/api_resource_test.rb
138
+ - test/screenbeacon/project_test.rb
139
+ - test/screenbeacon/screenbeacon_object_test.rb
140
+ - test/screenbeacon/test_test.rb
141
+ - test/screenbeacon/util_test.rb
142
+ - test/test_data.rb
143
+ - test/test_helper.rb
144
+ homepage: https://screenbeacon.readme.io
145
+ licenses:
146
+ - MIT
147
+ metadata: {}
148
+ post_install_message:
149
+ rdoc_options: []
150
+ require_paths:
151
+ - lib
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ requirements: []
163
+ rubyforge_project:
164
+ rubygems_version: 2.2.2
165
+ signing_key:
166
+ specification_version: 4
167
+ summary: Ruby bindings for the Screenbeacon API
168
+ test_files:
169
+ - test/screenbeacon/alert_test.rb
170
+ - test/screenbeacon/api_resource_test.rb
171
+ - test/screenbeacon/project_test.rb
172
+ - test/screenbeacon/screenbeacon_object_test.rb
173
+ - test/screenbeacon/test_test.rb
174
+ - test/screenbeacon/util_test.rb
175
+ - test/test_data.rb
176
+ - test/test_helper.rb