checkcheckit 0.1.1 → 0.1.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.
data/README.md CHANGED
@@ -8,11 +8,6 @@ use checklists, like a boss
8
8
 
9
9
  ## TODO
10
10
 
11
- - interactive run
12
- - socket.io between page and cmd line
13
- - save a run
14
- - to file
15
- - to service
16
11
  - resume a run
17
12
  - locally
18
13
 
@@ -44,14 +44,19 @@ class CheckCheckIt::Console
44
44
  list = List.new(list_name)
45
45
  if (emails = @options['email']) || @options['live']
46
46
  @list_id = list_id = notify_server_of_start(emails, list)
47
- puts "Live at URL: #{URI.join(web_service_url, list_id)}"
47
+ url = URI.join(web_service_url, list_id)
48
+ puts "Live at URL: #{url}"
49
+
50
+ if @options['open'] || @options['O']
51
+ Process.detach fork{ exec("open #{url}") }
52
+ end
48
53
 
49
54
  begin
50
55
  @client = web_socket.connect(web_service_url, sync: true) do
51
56
  after_start { emit('register', {list_id: list_id}) }
52
57
  end
53
58
  rescue Errno::ECONNREFUSED, WebSocket::Error, RuntimeError => e
54
- STDERR.puts "Websocket refused connection - using POST"
59
+ $stderr.puts "Websocket refused connection - using POST"
55
60
  @use_post = true
56
61
  end
57
62
  end
@@ -103,15 +108,8 @@ class CheckCheckIt::Console
103
108
  return
104
109
  end
105
110
 
106
- if @client
107
- @client.emit 'check', {
108
- list_id: @list_id,
109
- step_id: i
110
- }
111
- end
112
-
113
- if @use_post
114
- post_check(@list_id, i)
111
+ if check
112
+ update_server_with_step(i)
115
113
  end
116
114
 
117
115
  results[i] = {
@@ -164,7 +162,6 @@ class CheckCheckIt::Console
164
162
  def post_check(list_id, step_id)
165
163
  begin
166
164
  url = URI.join(web_service_url, "/#{list_id}/check/#{step_id}").to_s
167
- STDERR.puts url
168
165
  Excon.post(url)
169
166
  rescue Excon::Errors::SocketError, ArgumentError => e
170
167
  puts "Error POSTing to #{url}"
@@ -181,10 +178,18 @@ class CheckCheckIt::Console
181
178
  :headers => {
182
179
  'Content-Type' => 'application/json'
183
180
  })
184
- STDERR.puts response if @options['d'] || @options['debug']
181
+ $stderr.puts response if @options['d'] || @options['debug']
185
182
  return response.body.gsub('"','')
186
183
  rescue Excon::Errors::SocketError => e
187
184
  puts "Error connecting to #{web_service_url}"
188
185
  end
189
186
  end
187
+
188
+ def update_server_with_step(i)
189
+ if @client
190
+ @client.emit 'check', {list_id: @list_id, step_id: i}
191
+ elsif @use_post
192
+ post_check(@list_id, i)
193
+ end
194
+ end
190
195
  end
@@ -1,3 +1,3 @@
1
1
  module CheckCheckIt
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/test/start_test.rb CHANGED
@@ -9,6 +9,12 @@ class StartTest < CheckCheckIt::TestCase
9
9
  console.web_socket = MiniTest::Mock.new
10
10
  end
11
11
 
12
+ def mock_web_socket
13
+ client = MiniTest::Mock.new
14
+ console.web_socket.expect :connect, client, [String, {sync: true}]
15
+ client
16
+ end
17
+
12
18
  def test_list_parses_steps
13
19
  3.times { console.in_stream.expect :gets, "y" }
14
20
  result = check "start groceries"
@@ -23,15 +29,28 @@ class StartTest < CheckCheckIt::TestCase
23
29
 
24
30
  # When you do
25
31
  #
26
- # check start deploy --email csquared@heroku.com
32
+ # check start deploy --live
33
+ #
34
+ # we setup the POST with the list data
35
+ def test_live_flag_triggers_live_mode
36
+ client = mock_web_socket
37
+ 3.times { client.expect :emit, true, ['check', Hash] }
38
+ Excon.stub({:method => :post, :body => {
39
+ emails: nil,
40
+ list: List.new(home + '/personal/groceries').to_h
41
+ }.to_json}, {:status => 200})
42
+ 3.times { console.in_stream.expect :gets, "y" }
43
+ check "start groceries --live"
44
+ end
45
+
46
+ # When you do
27
47
  #
28
- # It PUT/POSTS? to the checkcheckit webservice
48
+ # check start deploy --email csquared@heroku.com
29
49
  #
30
50
  # The webservice sends you an email with a link to the list so
31
51
  # you can run it on the web.
32
52
  def test_email_flag_triggers_live_mode
33
- client = MiniTest::Mock.new
34
- console.web_socket.expect :connect, client, [String, {sync: true}]
53
+ client = mock_web_socket
35
54
  3.times { client.expect :emit, true, ['check', Hash] }
36
55
  Excon.stub({:method => :post, :body => {
37
56
  emails: "csquared@heroku.com,thea.lamkin@gmail.com",
@@ -44,8 +63,7 @@ class StartTest < CheckCheckIt::TestCase
44
63
  # Same as above but with env set
45
64
  def test_reads_email_from_env
46
65
  set_env 'CHECKCHECKIT_EMAIL', "csquared@heroku.com,thea.lamkin@gmail.com"
47
- client = MiniTest::Mock.new
48
- console.web_socket.expect :connect, client, [String, {sync: true}]
66
+ client = mock_web_socket
49
67
  3.times { client.expect :emit, true, ['check', Hash] }
50
68
  Excon.stub({:method => :post, :body => {
51
69
  emails: "csquared@heroku.com,thea.lamkin@gmail.com",
@@ -55,7 +73,28 @@ class StartTest < CheckCheckIt::TestCase
55
73
  check "start groceries"
56
74
  end
57
75
 
76
+ def test_live_only_sends_on_success
77
+ client = mock_web_socket
78
+ 1.times { client.expect :emit, true, ['check', Hash] }
79
+ Excon.stub({:method => :post}, {:status => 200})
80
+ 2.times { console.in_stream.expect :gets, "n" }
81
+ 1.times { console.in_stream.expect :gets, "y" }
82
+ check "start groceries --live"
83
+ end
84
+
85
+ def test_live_falls_back_to_post
86
+ # stub it the old way
87
+ ws = console.web_socket
88
+ def ws.connect(*args); raise WebSocket::Error; end
89
+ 4.times { Excon.stub({:method => :post}, {:status => 200}) }
90
+ 3.times { console.in_stream.expect :gets, "y" }
91
+ assert_output(//,/POST/) do
92
+ check "start groceries --live"
93
+ end
94
+ end
95
+
58
96
  def test_reads_url_from_env
97
+ #skip "too lazy to implement"
59
98
  end
60
99
  end
61
100
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: checkcheckit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -114,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
114
  version: '0'
115
115
  segments:
116
116
  - 0
117
- hash: 362655053570657751
117
+ hash: -2207512465125543391
118
118
  required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  none: false
120
120
  requirements:
@@ -123,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  version: '0'
124
124
  segments:
125
125
  - 0
126
- hash: 362655053570657751
126
+ hash: -2207512465125543391
127
127
  requirements: []
128
128
  rubyforge_project:
129
129
  rubygems_version: 1.8.23