shoot 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8cdeac72398c6ad021640a455b460f2e9c03b90
4
- data.tar.gz: 0b709c5258ffb4cc973ed6193bb2f049ed009119
3
+ metadata.gz: f471b23de129e1d36b02ac4f695648e991d260f0
4
+ data.tar.gz: 75106d08c978cbdb2ddaaacf05f67a27456f94b7
5
5
  SHA512:
6
- metadata.gz: bbe3a19d0669ba7c859ef1f8a784bab49dc30101e66ab2490409072369f21e07cbd9b4ec6c99543c5088bf29bac6221562a063e6c646526f76486ec1d661004c
7
- data.tar.gz: a81a8f8ccb782f9a479baf9b99303cf4ef34f71c8beca8a893ed12743ead1b7e6167d841ec246f4e65c58045871b8d18ec40d2173aebf82b37ddb78092f6c7cf
6
+ metadata.gz: 6885fdc2f83d8145aed592e9727fa9f0cbb87718171e7505d582572903d00a6b2ba578765e08007409339e670407e2eaa587fb2ed8cc6e18ba52a11215df5d26
7
+ data.tar.gz: 2f81457e2f77ff7f49b6d436a754291773269d0e0898541e0341d6a9637cd86097b39b73c7cf745f559f6fa924794ae258e77de3971b0cd58ad2c7d384b806e5
data/README.md CHANGED
@@ -8,7 +8,7 @@ Add this line to your application's Gemfile:
8
8
 
9
9
  ```ruby
10
10
  group :test do
11
- gem 'shoot'
11
+ gem 'shoot'
12
12
  end
13
13
  ```
14
14
 
data/lib/shoot/cli.rb CHANGED
@@ -20,7 +20,7 @@ module Shoot
20
20
 
21
21
  desc 'scenario', 'Runs the given scenario on all active platforms or one platform, based on ID'
22
22
  def scenario(file, id = nil, test = 'all')
23
- require Dir.pwd + '/' + file
23
+ require_file(file)
24
24
  klass_name = File.basename(file, '.rb').split('_').map(&:capitalize).join
25
25
  klass = Kernel.const_get(klass_name)
26
26
 
@@ -50,6 +50,10 @@ module Shoot
50
50
  end
51
51
 
52
52
  no_commands do
53
+ def require_file(file)
54
+ require Dir.pwd + '/' + file
55
+ end
56
+
53
57
  def table(browsers)
54
58
  table = browsers.map do |p|
55
59
  to_row(p)
@@ -23,6 +23,16 @@ class Shoot::Scenario
23
23
  Capybara.current_driver = platform_name
24
24
  end
25
25
 
26
+ def shoot(method)
27
+ send(method)
28
+ Kernel.sleep(1) # Just in case
29
+ require 'fileutils'
30
+ FileUtils::mkdir_p '.screenshots'
31
+ save_screenshot(".screenshots/#{method} #{platform_name}.png")
32
+ end
33
+
34
+ private
35
+
26
36
  def platform_name
27
37
  @platform_name ||= if @platform['device']
28
38
  @platform['device']
@@ -50,11 +60,4 @@ class Shoot::Scenario
50
60
  @capabilities[:device] = @platform['device'] if @platform['device']
51
61
  end
52
62
 
53
- def shoot(method)
54
- send(method)
55
- sleep(1) # Just in case
56
- require 'fileutils'
57
- FileUtils::mkdir_p '.screenshots'
58
- save_screenshot(".screenshots/#{method} #{platform_name}.png")
59
- end
60
63
  end
data/lib/shoot/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Shoot
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.0"
3
3
  end
data/shoot.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["juan.lulkin@klarna.com"]
11
11
  spec.summary = %q{A helper to take shots on BrowserStack}
12
12
  spec.description = %q{A helper to take shots on BrowserStack. Run the shoot binary for more info.}
13
- spec.homepage = ""
13
+ spec.homepage = "http://joaomilho.github.io/shoot"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
@@ -20,10 +20,11 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec", "~> 2"
23
24
 
24
25
  spec.add_dependency "selenium-webdriver", "~> 2.44"
25
26
  spec.add_dependency "capybara", "~> 2.4"
26
27
  spec.add_dependency "thor", "~> 0.19"
27
28
  spec.add_dependency "colorize", "~> 0.7"
28
- spec.add_dependency "rest_client"
29
+ spec.add_dependency "rest_client", "~> 1.7"
29
30
  end
data/spec/cli_spec.rb ADDED
@@ -0,0 +1,93 @@
1
+ require_relative '../lib/shoot/cli'
2
+
3
+ describe 'Shoot::CLI' do
4
+ subject(:cli) do
5
+ Shoot::CLI.new
6
+ end
7
+
8
+ let(:mock_json) do
9
+ [
10
+ {os: "Foo", os_version: "Foo 1", browser: "Foo browser", device: nil, browser_version: "6.0", id: 0, 'active' => false},
11
+ {os: "Bar", os_version: "Bar 2", browser: "Bar browser", device: nil, browser_version: "7.0", id: 1, 'active' => true}
12
+ ]
13
+ end
14
+
15
+ before do
16
+ allow(cli).to receive(:json).and_return(mock_json)
17
+ end
18
+
19
+ describe 'list' do
20
+ before do
21
+ allow(cli).to receive(:json).and_return(mock_json)
22
+ allow(cli).to receive(:table) {|arg| arg }
23
+ end
24
+
25
+ context 'list all' do
26
+ it 'show the json in a table' do
27
+ expect(cli.list).to eq(mock_json)
28
+ end
29
+ end
30
+
31
+ context 'list with filter' do
32
+ it 'show the the filtered json in a table' do
33
+ expect(cli.list("Foo browser")).to eq([mock_json[0]])
34
+ expect(cli.list("7.0")).to eq([mock_json[1]])
35
+ end
36
+ end
37
+ end
38
+
39
+ describe 'active' do
40
+ before do
41
+ allow(cli).to receive(:table) {|arg| arg }
42
+ end
43
+
44
+ it 'displays the active browsers' do
45
+ expect(cli.active).to eq([mock_json[1]])
46
+ end
47
+ end
48
+
49
+ describe 'activate' do
50
+ before do
51
+ allow(cli).to receive(:table) {|arg| arg }
52
+ allow(cli).to receive(:save_json)
53
+ end
54
+
55
+ it 'activates the browser' do
56
+ expect{ cli.activate(0) }.to change{ mock_json[0]['active'] }.from(false).to(true)
57
+ expect(cli).to have_received(:save_json)
58
+ end
59
+ end
60
+
61
+ describe 'deactivate' do
62
+ before do
63
+ allow(cli).to receive(:table) {|arg| arg }
64
+ allow(cli).to receive(:save_json)
65
+ end
66
+
67
+ it 'deactivates the browser' do
68
+ expect{ cli.deactivate(1) }.to change{ mock_json[1]['active'] }.from(true).to(false)
69
+ expect(cli).to have_received(:save_json)
70
+ end
71
+ end
72
+
73
+ describe 'scenario' do
74
+ before do
75
+ class Foo
76
+ def initialize(config); end
77
+ def method; end
78
+ end
79
+
80
+ allow_any_instance_of(Foo).to receive(:shoot)
81
+ expect_any_instance_of(Foo).to receive(:ok)
82
+
83
+ allow(cli).to receive(:_active).and_return(["foo"])
84
+ allow(cli).to receive(:require_file)
85
+ end
86
+
87
+ it 'runs scenario' do
88
+ cli.scenario('foo.rb')
89
+ expect(cli).to have_received(:require_file)
90
+ end
91
+ end
92
+
93
+ end
@@ -0,0 +1,31 @@
1
+ require_relative '../lib/shoot'
2
+ require 'capybara'
3
+
4
+ describe 'Shoot::Scenario' do
5
+
6
+ describe 'shoot' do
7
+ before do
8
+ allow(Capybara).to receive(:register_driver).with("browser 5.0 os 22.0")
9
+ allow(Capybara).to receive(:current_driver=).with("browser 5.0 os 22.0")
10
+ allow(FileUtils).to receive(:mkdir_p)
11
+ allow(Kernel).to receive(:sleep)
12
+
13
+ @scenario = Shoot::Scenario.new({
14
+ 'browser' => 'browser',
15
+ 'browser_version' => '5.0',
16
+ 'os' => 'os',
17
+ 'os_version' => '22.0'
18
+ })
19
+
20
+ allow(@scenario).to receive(:foo)
21
+ allow(@scenario).to receive(:save_screenshot)
22
+ end
23
+
24
+ it 'shoots' do
25
+ @scenario.shoot(:foo)
26
+ expect(@scenario).to have_received(:foo)
27
+ expect(@scenario).to have_received(:save_screenshot)
28
+ end
29
+ end
30
+
31
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Lulkin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-25 00:00:00.000000000 Z
11
+ date: 2015-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: selenium-webdriver
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -98,16 +112,16 @@ dependencies:
98
112
  name: rest_client
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - ">="
115
+ - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '0'
117
+ version: '1.7'
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - ">="
122
+ - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: '0'
124
+ version: '1.7'
111
125
  description: A helper to take shots on BrowserStack. Run the shoot binary for more
112
126
  info.
113
127
  email:
@@ -130,7 +144,9 @@ files:
130
144
  - lib/shoot/version.rb
131
145
  - shoot-0.0.2.gem
132
146
  - shoot.gemspec
133
- homepage: ''
147
+ - spec/cli_spec.rb
148
+ - spec/scenario_spec.rb
149
+ homepage: http://joaomilho.github.io/shoot
134
150
  licenses:
135
151
  - MIT
136
152
  metadata: {}
@@ -154,4 +170,6 @@ rubygems_version: 2.2.2
154
170
  signing_key:
155
171
  specification_version: 4
156
172
  summary: A helper to take shots on BrowserStack
157
- test_files: []
173
+ test_files:
174
+ - spec/cli_spec.rb
175
+ - spec/scenario_spec.rb