errbit_plugin 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -4
- data/README.md +42 -14
- data/lib/errbit_plugin/issue_trackers/none.rb +2 -1
- data/lib/errbit_plugin/version.rb +1 -1
- data/spec/errbit_plugin/validate_issue_tracker_spec.rb +40 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0da88b0c10182c8a6cdcd9027d600a3149dc2e29
|
4
|
+
data.tar.gz: 0ebd3654aff4015119a467f1db58967f3f5c70b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67de6652286cec7dc1f78c2496235a2f10460786e7327c0900b66bef4d394d567d216de034df19757a0c7892e06547a51b655424350742b36a2bd0a249423a52
|
7
|
+
data.tar.gz: c33bc5ac88fe5707687e63c8ee7aaba80c90a361d0d6e9bdba064cbf26c1cde1e9862ab3b6ec9a570ca763dfc2fda0f876a6aa93043b67f5c6ca113d07f003e7
|
data/.travis.yml
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
language: ruby
|
2
2
|
env:
|
3
3
|
- COVERAGE=true
|
4
|
+
before_install:
|
5
|
+
- gem install bundler
|
4
6
|
script: bundle exec rspec spec
|
5
7
|
rvm:
|
6
|
-
- 2.
|
7
|
-
-
|
8
|
-
-
|
8
|
+
- 2.1
|
9
|
+
- 2.2
|
10
|
+
- 2.3.0
|
11
|
+
- rbx-2
|
9
12
|
- ruby-head
|
10
13
|
matrix:
|
11
14
|
allow_failures:
|
12
|
-
- rvm: rbx-19mode
|
13
15
|
- rvm: ruby-head
|
data/README.md
CHANGED
@@ -16,7 +16,9 @@ errbit to an issue in an external issue tracker like Github. An app within
|
|
16
16
|
errbit can be associated an issue tracker or not. When there is an association,
|
17
17
|
errbit users can choose 'create issue' from an error page which will both
|
18
18
|
create an issue on the external issue tracker out of the given error and link
|
19
|
-
that issue to the errbit error.
|
19
|
+
that issue to the errbit error. Likewise, a user can also choose 'close issue'
|
20
|
+
to close the issue on the external issue tracker, if your plugin provides a
|
21
|
+
method to do so.
|
20
22
|
|
21
23
|
Your issue tracker plugin is responsible for providing the interface defined by
|
22
24
|
ErrbitPlugin::IssueTracker. All of the required methods must be implemented and
|
@@ -42,7 +44,8 @@ class MyIssueTracker < ErrbitPlugin::IssueTracker
|
|
42
44
|
placeholder: "Some placeholder text"
|
43
45
|
},
|
44
46
|
password: {
|
45
|
-
placeholder: "Some more placeholder text"
|
47
|
+
placeholder: "Some more placeholder text",
|
48
|
+
label: "Passphrase" # a label to use in the UI instead of 'password'
|
46
49
|
}
|
47
50
|
}
|
48
51
|
end
|
@@ -63,30 +66,53 @@ class MyIssueTracker < ErrbitPlugin::IssueTracker
|
|
63
66
|
# errbit know by returning a Boolean here
|
64
67
|
def configured?
|
65
68
|
# In this case, we'll say this issue tracker is configured when username
|
66
|
-
#
|
67
|
-
|
69
|
+
# and password are set
|
70
|
+
options[:username].present? && options[:password].present?
|
68
71
|
end
|
69
72
|
|
70
73
|
# Called to validate user input. Just return a hash of errors if there are
|
71
74
|
# any
|
72
75
|
def errors
|
73
|
-
if
|
76
|
+
if options[:username]
|
74
77
|
{}
|
75
78
|
else
|
76
|
-
{ :
|
79
|
+
{ field_one: 'username must be present' }
|
77
80
|
end
|
78
81
|
end
|
79
82
|
|
80
83
|
# This is where you actually go create the issue on the external issue
|
81
|
-
# tracker. You get access to everything in
|
82
|
-
# user
|
83
|
-
#
|
84
|
-
|
84
|
+
# tracker. You get access to everything in options, an issue title, body and
|
85
|
+
# a user record representing the user who's creating the issue.
|
86
|
+
#
|
87
|
+
# Return a string with a link to the issue
|
88
|
+
def create_issue(title, body, user: {})
|
85
89
|
# Create an issue! Then update the problem to link it.
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
+
|
91
|
+
'http://sometracker.com/my/issue/123'
|
92
|
+
end
|
93
|
+
|
94
|
+
# This method is optional. Errbit will create body text for your issue by
|
95
|
+
# calling render_to_string with some arguments. If you want control over
|
96
|
+
# those arguments, you can specify them here. You can control which file is
|
97
|
+
# rendered and anything else Rails allows you to specify as arguments in
|
98
|
+
# render_to_string.
|
99
|
+
#
|
100
|
+
# If you don't implement this method, Errbit will render a body using a
|
101
|
+
# default template
|
102
|
+
#
|
103
|
+
# @see http://apidock.com/rails/ActionController/Base/render_to_string
|
104
|
+
def render_body_args
|
105
|
+
# In this example, we want to render a special file
|
106
|
+
['/path/to/some/template', formats: [:rdoc]]
|
107
|
+
end
|
108
|
+
|
109
|
+
# This method is optional, and is where you actually go close the issue on
|
110
|
+
# the external issue tracker. You get access to everything in options, a
|
111
|
+
# string with a link to the issue # and a user resource.
|
112
|
+
#
|
113
|
+
# return true if successful, false otherwise
|
114
|
+
def close_issue(issue_link, user = {})
|
115
|
+
# Close the issue! (Perhaps using the passed in issue_link url to identify it.)
|
90
116
|
end
|
91
117
|
|
92
118
|
# The URL for your remote issue tracker
|
@@ -96,6 +122,8 @@ class MyIssueTracker < ErrbitPlugin::IssueTracker
|
|
96
122
|
end
|
97
123
|
```
|
98
124
|
|
125
|
+
|
126
|
+
|
99
127
|
## Contributing
|
100
128
|
|
101
129
|
Discuss any changes you'd like to make with the authors on the mailing list, or
|
@@ -12,6 +12,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
12
12
|
def configured?; true; end
|
13
13
|
def errors; true; end
|
14
14
|
def create_issue; 'http'; end
|
15
|
+
def close_issue; 'http'; end
|
15
16
|
def url; 'http'; end
|
16
17
|
end
|
17
18
|
|
@@ -30,6 +31,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
30
31
|
def configured?; true; end
|
31
32
|
def errors; true; end
|
32
33
|
def create_issue; 'http'; end
|
34
|
+
def close_issue; 'http'; end
|
33
35
|
def url; 'http'; end
|
34
36
|
end
|
35
37
|
|
@@ -52,6 +54,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
52
54
|
def configured?; true; end
|
53
55
|
def errors; true; end
|
54
56
|
def create_issue; 'http'; end
|
57
|
+
def close_issue; 'http'; end
|
55
58
|
def url; 'http'; end
|
56
59
|
end
|
57
60
|
|
@@ -59,7 +62,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
59
62
|
expect(ErrbitPlugin::ValidateIssueTracker.new(klass).valid?).to be false
|
60
63
|
end
|
61
64
|
|
62
|
-
it 'say not implement
|
65
|
+
it 'say not implement label method' do
|
63
66
|
is = ErrbitPlugin::ValidateIssueTracker.new(klass)
|
64
67
|
is.valid?
|
65
68
|
expect(is.errors).to eql [[:class_method_missing, :label]]
|
@@ -74,6 +77,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
74
77
|
def configured?; true; end
|
75
78
|
def errors; true; end
|
76
79
|
def create_issue; 'http'; end
|
80
|
+
def close_issue; 'http'; end
|
77
81
|
def url; 'http'; end
|
78
82
|
end
|
79
83
|
|
@@ -81,7 +85,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
81
85
|
expect(ErrbitPlugin::ValidateIssueTracker.new(klass).valid?).to be false
|
82
86
|
end
|
83
87
|
|
84
|
-
it 'say not implement
|
88
|
+
it 'say not implement icons method' do
|
85
89
|
is = ErrbitPlugin::ValidateIssueTracker.new(klass)
|
86
90
|
is.valid?
|
87
91
|
expect(is.errors).to eql [[:class_method_missing, :icons]]
|
@@ -96,6 +100,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
96
100
|
def configured?; true; end
|
97
101
|
def errors; true; end
|
98
102
|
def create_issue; 'http'; end
|
103
|
+
def close_issue; 'http'; end
|
99
104
|
def url; 'http'; end
|
100
105
|
end
|
101
106
|
|
@@ -103,7 +108,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
103
108
|
expect(ErrbitPlugin::ValidateIssueTracker.new(klass).valid?).to be false
|
104
109
|
end
|
105
110
|
|
106
|
-
it 'say not implement
|
111
|
+
it 'say not implement fields method' do
|
107
112
|
is = ErrbitPlugin::ValidateIssueTracker.new(klass)
|
108
113
|
is.valid?
|
109
114
|
expect(is.errors).to eql [[:class_method_missing, :fields]]
|
@@ -118,6 +123,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
118
123
|
def self.icons; {}; end
|
119
124
|
def errors; true; end
|
120
125
|
def create_issue; 'http'; end
|
126
|
+
def close_issue; 'http'; end
|
121
127
|
def url; 'http'; end
|
122
128
|
end
|
123
129
|
|
@@ -125,7 +131,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
125
131
|
expect(ErrbitPlugin::ValidateIssueTracker.new(klass).valid?).to be false
|
126
132
|
end
|
127
133
|
|
128
|
-
it 'say not implement configured?' do
|
134
|
+
it 'say not implement configured? method' do
|
129
135
|
is = ErrbitPlugin::ValidateIssueTracker.new(klass)
|
130
136
|
is.valid?
|
131
137
|
expect(is.errors).to eql [[:instance_method_missing, :configured?]]
|
@@ -140,6 +146,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
140
146
|
def self.icons; {}; end
|
141
147
|
def configured?; true; end
|
142
148
|
def create_issue; 'http'; end
|
149
|
+
def close_issue; 'http'; end
|
143
150
|
def url; 'http'; end
|
144
151
|
end
|
145
152
|
|
@@ -147,7 +154,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
147
154
|
expect(ErrbitPlugin::ValidateIssueTracker.new(klass).valid?).to be false
|
148
155
|
end
|
149
156
|
|
150
|
-
it 'say not implement errors' do
|
157
|
+
it 'say not implement errors method' do
|
151
158
|
is = ErrbitPlugin::ValidateIssueTracker.new(klass)
|
152
159
|
is.valid?
|
153
160
|
expect(is.errors).to eql [[:instance_method_missing, :errors]]
|
@@ -162,19 +169,43 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
162
169
|
def self.icons; {}; end
|
163
170
|
def configured?; true; end
|
164
171
|
def errors; true; end
|
172
|
+
def close_issue; 'http'; end
|
165
173
|
def url; 'http'; end
|
166
174
|
end
|
167
175
|
|
168
176
|
it 'not valid' do
|
169
177
|
expect(ErrbitPlugin::ValidateIssueTracker.new(klass).valid?).to be false
|
170
178
|
end
|
171
|
-
it 'say not implement
|
179
|
+
it 'say not implement create_issue method' do
|
172
180
|
is = ErrbitPlugin::ValidateIssueTracker.new(klass)
|
173
181
|
is.valid?
|
174
182
|
expect(is.errors).to eql [[:instance_method_missing, :create_issue]]
|
175
183
|
end
|
176
184
|
end
|
177
185
|
|
186
|
+
context "without close_issue method" do
|
187
|
+
# this is an optional method
|
188
|
+
klass = Class.new(ErrbitPlugin::IssueTracker) do
|
189
|
+
def self.label; 'foo'; end
|
190
|
+
def self.note; 'foo'; end
|
191
|
+
def self.fields; ['foo']; end
|
192
|
+
def self.icons; {}; end
|
193
|
+
def configured?; true; end
|
194
|
+
def errors; true; end
|
195
|
+
def create_issue; 'http'; end
|
196
|
+
def url; 'http'; end
|
197
|
+
end
|
198
|
+
|
199
|
+
it 'is valid' do
|
200
|
+
expect(ErrbitPlugin::ValidateIssueTracker.new(klass).valid?).to be true
|
201
|
+
end
|
202
|
+
it 'not say not implement close_issue method' do
|
203
|
+
is = ErrbitPlugin::ValidateIssueTracker.new(klass)
|
204
|
+
is.valid?
|
205
|
+
expect(is.errors).not_to eql [[:instance_method_missing, :close_issue]]
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
178
209
|
context "without url method" do
|
179
210
|
klass = Class.new(ErrbitPlugin::IssueTracker) do
|
180
211
|
def self.label; 'foo'; end
|
@@ -184,13 +215,14 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
184
215
|
def configured?; true; end
|
185
216
|
def errors; true; end
|
186
217
|
def create_issue; 'http'; end
|
218
|
+
def close_issue; 'http'; end
|
187
219
|
end
|
188
220
|
|
189
221
|
it 'not valid' do
|
190
222
|
expect(ErrbitPlugin::ValidateIssueTracker.new(klass).valid?).to be false
|
191
223
|
end
|
192
224
|
|
193
|
-
it 'say not implement url' do
|
225
|
+
it 'say not implement url method' do
|
194
226
|
is = ErrbitPlugin::ValidateIssueTracker.new(klass)
|
195
227
|
is.valid?
|
196
228
|
expect(is.errors).to eql [[:instance_method_missing, :url]]
|
@@ -205,6 +237,7 @@ describe ErrbitPlugin::ValidateIssueTracker do
|
|
205
237
|
def configured?; true; end
|
206
238
|
def errors; true; end
|
207
239
|
def create_issue; 'http'; end
|
240
|
+
def close_issue; 'http'; end
|
208
241
|
def url; 'foo'; end
|
209
242
|
end
|
210
243
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: errbit_plugin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Crosby
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|