redpomo 0.0.5 → 0.0.6
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 +17 -14
- data/lib/redpomo/cli.rb +76 -24
- data/lib/redpomo/config.rb +4 -2
- data/lib/redpomo/issue.rb +17 -10
- data/lib/redpomo/task.rb +15 -0
- data/lib/redpomo/task_list.rb +11 -0
- data/lib/redpomo/templates/config.yml +38 -7
- data/lib/redpomo/templates/issue_stub.textile +7 -0
- data/lib/redpomo/tracker.rb +30 -10
- data/lib/redpomo/ui.rb +73 -0
- data/lib/redpomo/version.rb +1 -1
- data/lib/redpomo.rb +6 -11
- data/spec/fixtures/add_results.txt +4 -0
- data/spec/fixtures/cassettes/cli_add.yml +102 -0
- data/spec/fixtures/cassettes/cli_close.yml +10 -11
- data/spec/fixtures/cassettes/create_issue.yml +102 -0
- data/spec/fixtures/cassettes/push_entry.yml +55 -0
- data/spec/fixtures/close_results.txt +1 -1
- data/spec/fixtures/config.yml +16 -0
- data/spec/fixtures/pull_results.txt +5 -5
- data/spec/fixtures/tasks.txt +3 -0
- data/spec/integration/init_spec.rb +38 -0
- data/spec/lib/redpomo/cli_spec.rb +46 -58
- data/spec/lib/redpomo/tracker_spec.rb +37 -3
- data/spec/spec_helper.rb +6 -2
- data/spec/support/cli_helpers.rb +75 -0
- data/spec/support/fixtures.rb +17 -0
- data/spec/support/ruby_ext.rb +20 -0
- data/spec/tmp/REDME.md +0 -0
- metadata +52 -33
- data/lib/redpomo/config_generator.rb +0 -17
- data/lib/redpomo/puller.rb +0 -35
- data/lib/redpomo/pusher.rb +0 -59
- data/spec/support/capture.rb +0 -13
@@ -0,0 +1,102 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://code.welaika.com/users/current.json?key=WELAIKA_TOKEN
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip, deflate
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
User-Agent:
|
17
|
+
- Ruby
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
headers:
|
23
|
+
Date:
|
24
|
+
- Sun, 13 May 2012 15:49:32 GMT
|
25
|
+
Server:
|
26
|
+
- Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch mod_ssl/2.2.9
|
27
|
+
OpenSSL/0.9.8g Phusion_Passenger/3.0.0
|
28
|
+
X-Powered-By:
|
29
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.0
|
30
|
+
Etag:
|
31
|
+
- ! '"210f37abc00e2352ce9a7ebfc82e684d"'
|
32
|
+
X-Runtime:
|
33
|
+
- '48'
|
34
|
+
Cache-Control:
|
35
|
+
- private, max-age=0, must-revalidate
|
36
|
+
Content-Length:
|
37
|
+
- '196'
|
38
|
+
Status:
|
39
|
+
- '200'
|
40
|
+
Content-Type:
|
41
|
+
- application/json; charset=utf-8
|
42
|
+
body:
|
43
|
+
encoding: US-ASCII
|
44
|
+
string: ! '{"user":{"mail":"stefano.verna@welaika.com","last_login_on":"2012/05/13
|
45
|
+
11:17:28 +0200","lastname":"Verna","login":"steffoz","created_on":"2010/02/11
|
46
|
+
09:34:28 +0100","firstname":"Stefano","id":4}}'
|
47
|
+
http_version:
|
48
|
+
recorded_at: Sun, 13 May 2012 15:49:33 GMT
|
49
|
+
- request:
|
50
|
+
method: post
|
51
|
+
uri: http://code.welaika.com/issues.json?key=WELAIKA_TOKEN
|
52
|
+
body:
|
53
|
+
encoding: UTF-8
|
54
|
+
string: ! '{"issue":{"subject":"foobar","description":null,"due_date":null,"project_id":"olasagasti","priority_id":4,"assigned_to_id":4}}'
|
55
|
+
headers:
|
56
|
+
Accept:
|
57
|
+
- application/json
|
58
|
+
Accept-Encoding:
|
59
|
+
- gzip, deflate
|
60
|
+
Content-Type:
|
61
|
+
- application/json
|
62
|
+
Content-Length:
|
63
|
+
- '126'
|
64
|
+
User-Agent:
|
65
|
+
- Ruby
|
66
|
+
response:
|
67
|
+
status:
|
68
|
+
code: 201
|
69
|
+
message: Created
|
70
|
+
headers:
|
71
|
+
Date:
|
72
|
+
- Sun, 13 May 2012 15:49:33 GMT
|
73
|
+
Server:
|
74
|
+
- Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch mod_ssl/2.2.9
|
75
|
+
OpenSSL/0.9.8g Phusion_Passenger/3.0.0
|
76
|
+
X-Powered-By:
|
77
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.0
|
78
|
+
X-Runtime:
|
79
|
+
- '288'
|
80
|
+
Cache-Control:
|
81
|
+
- no-cache
|
82
|
+
Set-Cookie:
|
83
|
+
- _redmine_session=BAh7BzoPc2Vzc2lvbl9pZCIlMGE5Y2M5NGZmNjRiYjA4NjE2MTY1MDk3ZDE2MmUzN2IiCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7BjoLbm90aWNlIhpDcmVhemlvbmUgZWZmZXR0dWF0YS4GOgpAdXNlZHsGOwdG--4f2ec2b1d5f84985b5475828990ec5b42bdd9c17;
|
84
|
+
path=/; HttpOnly
|
85
|
+
Location:
|
86
|
+
- http://code.welaika.com/issues/3397
|
87
|
+
Content-Length:
|
88
|
+
- '408'
|
89
|
+
Status:
|
90
|
+
- '201'
|
91
|
+
Content-Type:
|
92
|
+
- application/json; charset=utf-8
|
93
|
+
body:
|
94
|
+
encoding: US-ASCII
|
95
|
+
string: ! '{"issue":{"status":{"name":"New","id":1},"updated_on":"2012/05/13
|
96
|
+
17:49:33 +0200","assigned_to":{"name":"Stefano Verna","id":4},"done_ratio":0,"tracker":{"name":"Bug","id":1},"start_date":"2012/05/13","created_on":"2012/05/13
|
97
|
+
17:49:33 +0200","spent_hours":0.0,"subject":"foobar","author":{"name":"Stefano
|
98
|
+
Verna","id":4},"id":3397,"priority":{"name":"Normal","id":4},"project":{"name":"Olasagasti
|
99
|
+
","id":52}}}'
|
100
|
+
http_version:
|
101
|
+
recorded_at: Sun, 13 May 2012 15:49:33 GMT
|
102
|
+
recorded_with: VCR 2.0.1
|
@@ -2,10 +2,10 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: put
|
5
|
-
uri:
|
5
|
+
uri: http://code.welaika.com/issues/3290.json?key=WELAIKA_TOKEN
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
|
-
string: ! '{"issue":{"status_id":5}}'
|
8
|
+
string: ! '{"issue":{"status_id":5,"notes":"bar"}}'
|
9
9
|
headers:
|
10
10
|
Accept:
|
11
11
|
- application/json
|
@@ -14,7 +14,7 @@ http_interactions:
|
|
14
14
|
Content-Type:
|
15
15
|
- application/json
|
16
16
|
Content-Length:
|
17
|
-
- '
|
17
|
+
- '39'
|
18
18
|
User-Agent:
|
19
19
|
- Ruby
|
20
20
|
response:
|
@@ -23,20 +23,19 @@ http_interactions:
|
|
23
23
|
message: OK
|
24
24
|
headers:
|
25
25
|
Date:
|
26
|
-
-
|
26
|
+
- Sun, 13 May 2012 15:23:49 GMT
|
27
27
|
Server:
|
28
|
-
- Apache/2.2.9 (Debian)
|
29
|
-
|
28
|
+
- Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch mod_ssl/2.2.9
|
29
|
+
OpenSSL/0.9.8g Phusion_Passenger/3.0.0
|
30
30
|
X-Powered-By:
|
31
31
|
- Phusion Passenger (mod_rails/mod_rack) 3.0.0
|
32
32
|
X-Runtime:
|
33
|
-
- '
|
33
|
+
- '120'
|
34
34
|
Cache-Control:
|
35
35
|
- no-cache
|
36
36
|
Set-Cookie:
|
37
|
-
- _redmine_session=
|
37
|
+
- _redmine_session=BAh7BzoPc2Vzc2lvbl9pZCIlMzFkMDkyZDBkZDFjYjA3YjgyYjY1MTU1ZGQ0MmIzNTkiCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7BjoLbm90aWNlIhlNb2RpZmljYSBlZmZldHR1YXRhLgY6CkB1c2VkewY7B0Y%3D--81bc19aea06cf94b7f7703393d43f792b17fcde0;
|
38
38
|
path=/; HttpOnly
|
39
|
-
- autologin=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT
|
40
39
|
Content-Length:
|
41
40
|
- '1'
|
42
41
|
Status:
|
@@ -46,6 +45,6 @@ http_interactions:
|
|
46
45
|
body:
|
47
46
|
encoding: US-ASCII
|
48
47
|
string: ! ' '
|
49
|
-
http_version:
|
50
|
-
recorded_at:
|
48
|
+
http_version:
|
49
|
+
recorded_at: Sun, 13 May 2012 15:23:49 GMT
|
51
50
|
recorded_with: VCR 2.0.1
|
@@ -0,0 +1,102 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://code.welaika.com/users/current.json?key=WELAIKA_TOKEN
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip, deflate
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
User-Agent:
|
17
|
+
- Ruby
|
18
|
+
response:
|
19
|
+
status:
|
20
|
+
code: 200
|
21
|
+
message: OK
|
22
|
+
headers:
|
23
|
+
Date:
|
24
|
+
- Sun, 13 May 2012 12:36:06 GMT
|
25
|
+
Server:
|
26
|
+
- Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch mod_ssl/2.2.9
|
27
|
+
OpenSSL/0.9.8g Phusion_Passenger/3.0.0
|
28
|
+
X-Powered-By:
|
29
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.0
|
30
|
+
Etag:
|
31
|
+
- ! '"210f37abc00e2352ce9a7ebfc82e684d"'
|
32
|
+
X-Runtime:
|
33
|
+
- '212'
|
34
|
+
Cache-Control:
|
35
|
+
- private, max-age=0, must-revalidate
|
36
|
+
Content-Length:
|
37
|
+
- '196'
|
38
|
+
Status:
|
39
|
+
- '200'
|
40
|
+
Content-Type:
|
41
|
+
- application/json; charset=utf-8
|
42
|
+
body:
|
43
|
+
encoding: US-ASCII
|
44
|
+
string: ! '{"user":{"mail":"stefano.verna@welaika.com","last_login_on":"2012/05/13
|
45
|
+
11:17:28 +0200","lastname":"Verna","login":"steffoz","created_on":"2010/02/11
|
46
|
+
09:34:28 +0100","firstname":"Stefano","id":4}}'
|
47
|
+
http_version:
|
48
|
+
recorded_at: Sun, 13 May 2012 12:36:07 GMT
|
49
|
+
- request:
|
50
|
+
method: post
|
51
|
+
uri: http://code.welaika.com/issues.json?key=WELAIKA_TOKEN
|
52
|
+
body:
|
53
|
+
encoding: UTF-8
|
54
|
+
string: ! '{"issue":{"subject":"foo","description":"bar","due_date":"2012-12-01","project_id":"olasagasti","priority_id":5,"assigned_to_id":4}}'
|
55
|
+
headers:
|
56
|
+
Accept:
|
57
|
+
- application/json
|
58
|
+
Accept-Encoding:
|
59
|
+
- gzip, deflate
|
60
|
+
Content-Type:
|
61
|
+
- application/json
|
62
|
+
Content-Length:
|
63
|
+
- '132'
|
64
|
+
User-Agent:
|
65
|
+
- Ruby
|
66
|
+
response:
|
67
|
+
status:
|
68
|
+
code: 201
|
69
|
+
message: Created
|
70
|
+
headers:
|
71
|
+
Date:
|
72
|
+
- Sun, 13 May 2012 12:36:07 GMT
|
73
|
+
Server:
|
74
|
+
- Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch mod_ssl/2.2.9
|
75
|
+
OpenSSL/0.9.8g Phusion_Passenger/3.0.0
|
76
|
+
X-Powered-By:
|
77
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.0
|
78
|
+
X-Runtime:
|
79
|
+
- '124'
|
80
|
+
Cache-Control:
|
81
|
+
- no-cache
|
82
|
+
Set-Cookie:
|
83
|
+
- _redmine_session=BAh7BzoPc2Vzc2lvbl9pZCIlYzJiNzBmNmU4NmVjNjY3NmZjNDcyOTgxYzMxMWE5OGQiCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7BjoLbm90aWNlIhpDcmVhemlvbmUgZWZmZXR0dWF0YS4GOgpAdXNlZHsGOwdG--a60050631dc0708324a571c42a5577b94471e05e;
|
84
|
+
path=/; HttpOnly
|
85
|
+
Location:
|
86
|
+
- http://code.welaika.com/issues/3395
|
87
|
+
Content-Length:
|
88
|
+
- '447'
|
89
|
+
Status:
|
90
|
+
- '201'
|
91
|
+
Content-Type:
|
92
|
+
- application/json; charset=utf-8
|
93
|
+
body:
|
94
|
+
encoding: US-ASCII
|
95
|
+
string: ! '{"issue":{"status":{"name":"New","id":1},"updated_on":"2012/05/13
|
96
|
+
14:36:07 +0200","due_date":"2012/12/01","assigned_to":{"name":"Stefano Verna","id":4},"done_ratio":0,"description":"bar","tracker":{"name":"Bug","id":1},"start_date":"2012/05/13","created_on":"2012/05/13
|
97
|
+
14:36:07 +0200","spent_hours":0.0,"subject":"foo","author":{"name":"Stefano
|
98
|
+
Verna","id":4},"id":3395,"priority":{"name":"High","id":5},"project":{"name":"Olasagasti
|
99
|
+
","id":52}}}'
|
100
|
+
http_version:
|
101
|
+
recorded_at: Sun, 13 May 2012 12:36:08 GMT
|
102
|
+
recorded_with: VCR 2.0.1
|
@@ -0,0 +1,55 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://code.welaika.com/time_entries.json?key=WELAIKA_TOKEN
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ! '{"time_entry":{"issue_id":3392,"spent_on":"2012-01-01","hours":0.001388888888888889,"comments":"Foobar"}}'
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip, deflate
|
14
|
+
Content-Type:
|
15
|
+
- application/json
|
16
|
+
Content-Length:
|
17
|
+
- '105'
|
18
|
+
User-Agent:
|
19
|
+
- Ruby
|
20
|
+
response:
|
21
|
+
status:
|
22
|
+
code: 201
|
23
|
+
message: Created
|
24
|
+
headers:
|
25
|
+
Date:
|
26
|
+
- Sun, 13 May 2012 12:27:38 GMT
|
27
|
+
Server:
|
28
|
+
- Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch mod_ssl/2.2.9
|
29
|
+
OpenSSL/0.9.8g Phusion_Passenger/3.0.0
|
30
|
+
X-Powered-By:
|
31
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.0
|
32
|
+
X-Runtime:
|
33
|
+
- '80'
|
34
|
+
Cache-Control:
|
35
|
+
- no-cache
|
36
|
+
Set-Cookie:
|
37
|
+
- _redmine_session=BAh7BjoPc2Vzc2lvbl9pZCIlZmVlOTJlNzQ0NDQxZmQ1YjBhYzJhZDhlMmVkYjc3ODY%3D--be9fdcbbc0ed25d715650a2684f1a590641636a4;
|
38
|
+
path=/; HttpOnly
|
39
|
+
Location:
|
40
|
+
- http://code.welaika.com/time_entries/4015
|
41
|
+
Content-Length:
|
42
|
+
- '321'
|
43
|
+
Status:
|
44
|
+
- '201'
|
45
|
+
Content-Type:
|
46
|
+
- application/json; charset=utf-8
|
47
|
+
body:
|
48
|
+
encoding: US-ASCII
|
49
|
+
string: ! '{"time_entry":{"spent_on":"2012/01/01","updated_on":"2012/05/13 14:27:38
|
50
|
+
+0200","activity":{"name":"Development","id":9},"user":{"name":"Stefano Verna","id":4},"created_on":"2012/05/13
|
51
|
+
14:27:38 +0200","hours":0.00138888888888889,"comments":"Foobar","issue":{"id":3392},"id":4015,"project":{"name":"Olasagasti
|
52
|
+
","id":52}}}'
|
53
|
+
http_version:
|
54
|
+
recorded_at: Sun, 13 May 2012 12:27:38 GMT
|
55
|
+
recorded_with: VCR 2.0.1
|
@@ -1,2 +1,2 @@
|
|
1
|
-
|
1
|
+
Make screenshot #838 @cantiere
|
2
2
|
Another task @home
|
@@ -0,0 +1,16 @@
|
|
1
|
+
cache: false
|
2
|
+
trackers:
|
3
|
+
cantiere:
|
4
|
+
url: "https://project.cantierecreativo.net"
|
5
|
+
token: "CANTIERE_TOKEN"
|
6
|
+
default_project_id: "cc"
|
7
|
+
closed_status_id: 5
|
8
|
+
default_priority_id: 4
|
9
|
+
priority_ids: [ 16, 6, 5 ]
|
10
|
+
welaika:
|
11
|
+
url: "http://code.welaika.com"
|
12
|
+
token: "WELAIKA_TOKEN"
|
13
|
+
default_project_id: "welaika"
|
14
|
+
closed_status_id: 5
|
15
|
+
default_priority_id: 4
|
16
|
+
priority_ids: [ 7, 6, 5 ]
|
@@ -4,14 +4,14 @@ gestione utenti #987 +giunti-web @cantiere
|
|
4
4
|
Documentazione server su Wiki #986 +giunti-web @cantiere
|
5
5
|
Form richiesta kit #985 +giunti-web @cantiere
|
6
6
|
Invia libro ad un amico #976 +giunti-web @cantiere
|
7
|
-
Immagini promo per chrome
|
8
|
-
Correzioni frase e logo zazit
|
9
|
-
|
10
|
-
icona per chrome market
|
7
|
+
2012-04-04 Immagini promo per chrome #859 +zazit @cantiere
|
8
|
+
(C) 2012-04-04 Correzioni frase e logo zazit #858 +zazit @cantiere
|
9
|
+
(B) 2012-04-02 icone per safari #839 +zazit @cantiere
|
10
|
+
(B) 2012-04-02 icona per chrome market #837 +zazit @cantiere
|
11
11
|
Rel Canonical e rel author #820 +railsyard @cantiere
|
12
12
|
DSL backend per la gestione dei model #731 +railsyard @cantiere
|
13
13
|
paradosso zazit #728 +zazit @cantiere
|
14
|
-
New Users iOS #3316 +dashboard-fiat @welaika
|
14
|
+
(B) New Users iOS #3316 +dashboard-fiat @welaika
|
15
15
|
Orlando Locator #3296 +olasagasti @welaika
|
16
16
|
Il Paniere #3295 +olasagasti @welaika
|
17
17
|
Scheda Prodotto #3294 +olasagasti @welaika
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe "redpomo init" do
|
5
|
+
|
6
|
+
let(:config_path) {
|
7
|
+
new_config = Tempfile.new('redpomo')
|
8
|
+
new_config_path = new_config.path
|
9
|
+
new_config.unlink
|
10
|
+
new_config_path
|
11
|
+
}
|
12
|
+
|
13
|
+
it "generates a .redpomo config file" do
|
14
|
+
redpomo "init #{config_path}", env: { "EDITOR" => "echo editor" }
|
15
|
+
File.exists?(config_path).should be_true
|
16
|
+
end
|
17
|
+
|
18
|
+
it "opens the config with REDPOMO_EDITOR as highest priority" do
|
19
|
+
redpomo "init #{config_path}", :env => {"EDITOR" => "echo editor", "VISUAL" => "echo visual", "REDPOMO_EDITOR" => "echo redpomo_editor"}
|
20
|
+
out.should == "redpomo_editor #{config_path}"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "opens the config with VISUAL as 2nd highest priority" do
|
24
|
+
redpomo "init #{config_path}", :env => {"EDITOR" => "echo editor", "VISUAL" => "echo visual", "REDPOMO_EDITOR" => ""}
|
25
|
+
out.should == "visual #{config_path}"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "opens the config with EDITOR as 3rd highest priority" do
|
29
|
+
redpomo "init #{config_path}", :env => {"EDITOR" => "echo editor", "VISUAL" => "", "REDPOMO_EDITOR" => ""}
|
30
|
+
out.should == "editor #{config_path}"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "complains if no EDITOR is set" do
|
34
|
+
redpomo "init #{config_path}", :env => {"EDITOR" => "", "VISUAL" => "", "REDPOMO_EDITOR" => ""}
|
35
|
+
out.should == "To open the .redpomo config file, set $EDITOR or $REDPOMO_EDITOR"
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -1,67 +1,41 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'tempfile'
|
3
2
|
require 'launchy'
|
4
3
|
require 'applescript'
|
5
4
|
require 'redpomo/cli'
|
5
|
+
require 'fileutils'
|
6
6
|
|
7
7
|
describe Redpomo::CLI do
|
8
8
|
|
9
|
-
let(:
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
let(:todo_file) do
|
18
|
-
Tempfile.new('todo')
|
19
|
-
end
|
9
|
+
let(:todo_path) {
|
10
|
+
file = File.open(tmp('tasks.txt'), 'w')
|
11
|
+
file.write read_fixture("tasks.txt")
|
12
|
+
file.close
|
13
|
+
file.path
|
14
|
+
}
|
20
15
|
|
21
|
-
let(:
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
"default_project" => "cc",
|
30
|
-
"closed_status" => 5
|
31
|
-
},
|
32
|
-
"welaika" => {
|
33
|
-
"url" => "http://code.welaika.com",
|
34
|
-
"token" => "WELAIKA_TOKEN",
|
35
|
-
"default_project" => "welaika",
|
36
|
-
"closed_status" => 5
|
37
|
-
}
|
38
|
-
}
|
39
|
-
}
|
40
|
-
end
|
41
|
-
|
42
|
-
let(:config_file) do
|
43
|
-
Tempfile.new('config')
|
44
|
-
end
|
16
|
+
let(:config_path) {
|
17
|
+
config = YAML::load_file fixture("config.yml")
|
18
|
+
config["todo"] = todo_path
|
19
|
+
file = File.open(tmp('config.yml'), 'w')
|
20
|
+
file.write config.to_yaml
|
21
|
+
file.close
|
22
|
+
file.path
|
23
|
+
}
|
45
24
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
after(:each) do
|
54
|
-
todo_file.unlink
|
55
|
-
config_file.unlink
|
25
|
+
describe "push LOG" do
|
26
|
+
it "pushes the specified timelog to remote trackers" do
|
27
|
+
VCR.use_cassette('cli_push') do
|
28
|
+
cli_redpomo "push #{fixture("timelog.csv")}"
|
29
|
+
out.strip.should == "Pushed 2 time entries!"
|
30
|
+
end
|
31
|
+
end
|
56
32
|
end
|
57
33
|
|
58
|
-
describe "push LOG" do
|
34
|
+
describe "push -n LOG" do
|
59
35
|
it "pushes the specified timelog to remote trackers" do
|
60
36
|
VCR.use_cassette('cli_push') do
|
61
|
-
|
62
|
-
|
63
|
-
end
|
64
|
-
output.should == File.read("spec/fixtures/printer_output.txt")
|
37
|
+
cli_redpomo "push -n #{fixture("timelog.csv")}"
|
38
|
+
out.should == read_fixture("printer_output.txt")
|
65
39
|
end
|
66
40
|
end
|
67
41
|
end
|
@@ -69,22 +43,23 @@ describe Redpomo::CLI do
|
|
69
43
|
describe "start ISSUE" do
|
70
44
|
it "starts the specified issue on Pomodoro.app" do
|
71
45
|
AppleScript.expects(:execute).with('tell application "Pomodoro" to start "Make screenshot #838 @cantiere"')
|
72
|
-
|
46
|
+
cli_redpomo "start 1"
|
73
47
|
end
|
74
48
|
end
|
75
49
|
|
76
50
|
describe "open ISSUE" do
|
77
51
|
it "shows the specified issue on the browser" do
|
78
52
|
Launchy.expects(:open).with('https://project.cantierecreativo.net/issues/838')
|
79
|
-
|
53
|
+
cli_redpomo "open 1"
|
80
54
|
end
|
81
55
|
end
|
82
56
|
|
83
57
|
describe "close ISSUE" do
|
84
58
|
it "closes issue on remote tracker and marks current task as done" do
|
85
59
|
VCR.use_cassette('cli_close') do
|
86
|
-
|
87
|
-
File.read(
|
60
|
+
cli_redpomo "close 2 -m bar"
|
61
|
+
File.read(todo_path).should == read_fixture("close_results.txt")
|
62
|
+
out.strip.should == 'Issue updated, see it at http://code.welaika.com/issues/3290'
|
88
63
|
end
|
89
64
|
end
|
90
65
|
end
|
@@ -92,12 +67,25 @@ describe Redpomo::CLI do
|
|
92
67
|
describe "pull" do
|
93
68
|
it "fetches all the trackers and converts the issues in todo tasks" do
|
94
69
|
VCR.use_cassette('cli_pull') do
|
95
|
-
|
96
|
-
File.read(
|
70
|
+
cli_redpomo "pull"
|
71
|
+
File.read(todo_path).should == read_fixture("pull_results.txt")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "add" do
|
77
|
+
it "creates a new task, adds it the list, and pushes it to the tracker" do
|
78
|
+
VCR.use_cassette('cli_add') do
|
79
|
+
cli_redpomo ["add", "foobar +olasagasti @welaika"]
|
80
|
+
File.read(todo_path).should == read_fixture("add_results.txt")
|
81
|
+
out.strip.should == 'Issue created, see it at http://code.welaika.com/issues/3397'
|
97
82
|
end
|
98
83
|
end
|
99
84
|
end
|
100
85
|
|
101
|
-
|
86
|
+
after(:each) do
|
87
|
+
File.unlink(todo_path)
|
88
|
+
File.unlink(config_path)
|
89
|
+
end
|
102
90
|
|
103
91
|
end
|
@@ -7,8 +7,8 @@ describe Redpomo::Tracker do
|
|
7
7
|
Redpomo::Tracker.new(
|
8
8
|
"welaika",
|
9
9
|
url: "http://code.welaika.com",
|
10
|
-
token: "WELAIKA_TOKEN",
|
11
|
-
|
10
|
+
token: "WELAIKA_TOKEN",#"WELAIKA_TOKEN",
|
11
|
+
closed_status_id: "5"
|
12
12
|
)
|
13
13
|
end
|
14
14
|
|
@@ -28,11 +28,45 @@ describe Redpomo::Tracker do
|
|
28
28
|
issues = subject.issues
|
29
29
|
issues.should have(7).issues
|
30
30
|
issues.first.tracker.should == subject
|
31
|
-
issues.first.
|
31
|
+
issues.first.project_id.should == 'dashboard-fiat'
|
32
32
|
issues.first.issue_id.should == 3316
|
33
33
|
issues.first.due_date.should be_nil
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
describe ".push_entry!" do
|
39
|
+
it "creates a TimeEntry" do
|
40
|
+
VCR.use_cassette('push_entry') do
|
41
|
+
task = stub(
|
42
|
+
issue: 3392,
|
43
|
+
text: "Foobar"
|
44
|
+
)
|
45
|
+
entry = stub(
|
46
|
+
to_task: task,
|
47
|
+
datetime: Date.new(2012, 1, 1),
|
48
|
+
duration: 5
|
49
|
+
)
|
50
|
+
result = subject.push_entry!(entry)
|
51
|
+
result["time_entry"]["issue"]["id"].should == 3392
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe ".create_issue!" do
|
57
|
+
it "creates an Issue" do
|
58
|
+
VCR.use_cassette('create_issue') do
|
59
|
+
issue = stub(
|
60
|
+
subject: "foo",
|
61
|
+
description: "bar",
|
62
|
+
due_date: Date.new(2012, 12, 1),
|
63
|
+
project_id: "olasagasti",
|
64
|
+
priority_id: 5
|
65
|
+
)
|
66
|
+
result = subject.create_issue!(issue)
|
67
|
+
result["issue"]["id"].should be_present
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
38
72
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,8 +8,14 @@ end
|
|
8
8
|
|
9
9
|
Bundler.require(:default, :development)
|
10
10
|
|
11
|
+
require 'support/ruby_ext'
|
12
|
+
require 'support/cli_helpers'
|
13
|
+
require 'support/fixtures'
|
14
|
+
|
11
15
|
RSpec.configure do |config|
|
12
16
|
config.mock_framework = :mocha
|
17
|
+
config.include Spec::CLIHelpers
|
18
|
+
config.include Spec::Fixtures
|
13
19
|
end
|
14
20
|
|
15
21
|
VCR.configure do |c|
|
@@ -19,5 +25,3 @@ VCR.configure do |c|
|
|
19
25
|
match_requests_on: [:method, :host, :path, :body]
|
20
26
|
}
|
21
27
|
end
|
22
|
-
|
23
|
-
require 'support/capture'
|