redmine-mattermost 0.3 → 0.4.beta1

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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +15 -0
  3. data/LICENSE +1 -0
  4. data/README.md +30 -17
  5. data/Rakefile +9 -0
  6. data/app/views/settings/_mattermost_settings.html.erb +60 -20
  7. data/lib/redmine-mattermost.rb +9 -1
  8. data/lib/redmine_mattermost/bridge.rb +63 -0
  9. data/lib/redmine_mattermost/client.rb +28 -0
  10. data/lib/redmine_mattermost/extractors.rb +88 -0
  11. data/lib/redmine_mattermost/extractors/applied_changeset.rb +55 -0
  12. data/lib/redmine_mattermost/extractors/changed_wiki_page.rb +39 -0
  13. data/lib/redmine_mattermost/extractors/new_issue.rb +44 -0
  14. data/lib/redmine_mattermost/extractors/updated_issue.rb +42 -0
  15. data/lib/redmine_mattermost/infos.rb +1 -2
  16. data/lib/redmine_mattermost/issue_patch.rb +14 -14
  17. data/lib/redmine_mattermost/listener.rb +38 -268
  18. data/lib/redmine_mattermost/message_builder.rb +61 -0
  19. data/lib/redmine_mattermost/redmine_plugin.rb +3 -4
  20. data/lib/redmine_mattermost/utils.rb +3 -0
  21. data/lib/redmine_mattermost/utils/journal_mapper.rb +75 -0
  22. data/lib/redmine_mattermost/utils/text.rb +37 -0
  23. data/lib/redmine_mattermost/utils/urls.rb +20 -0
  24. data/lib/redmine_mattermost/version.rb +1 -1
  25. data/redmine-mattermost.gemspec +4 -1
  26. data/spec/client_spec.rb +29 -0
  27. data/spec/extractors/applied_changeset_spec.rb +82 -0
  28. data/spec/extractors/changed_wiki_page_spec.rb +63 -0
  29. data/spec/extractors/new_issue_spec.rb +209 -0
  30. data/spec/extractors/updated_issue_spec.rb +169 -0
  31. data/spec/message_builder_spec.rb +71 -0
  32. data/spec/redmine_mattermost_spec.rb +9 -0
  33. data/spec/spec_helper.rb +17 -0
  34. data/spec/support/mock_support.rb +113 -0
  35. data/spec/utils/text_spec.rb +142 -0
  36. data/spec/utils/text_spec_alt.rb +142 -0
  37. metadata +87 -9
@@ -0,0 +1,142 @@
1
+ require "spec_helper"
2
+
3
+ describe RedmineMattermost::Utils::Text do
4
+ subject { Dummy.new(bridge) }
5
+ let(:bridge) { MockBridge.new(settings) }
6
+ let(:settings) { Defaults.settings }
7
+
8
+ describe "h" do
9
+ it "escapes special chars" do
10
+ text = subject.h("some & special <chars>")
11
+ text.must_equal("some &amp; special &lt;chars&gt;")
12
+ end
13
+
14
+ it "handles nil inputs" do
15
+ subject.h(nil).must_be_nil
16
+ end
17
+ end
18
+
19
+ describe "link" do
20
+ it "builds a markdown link" do
21
+ text = subject.link("the < label", "the_target")
22
+ text.must_equal("<the_target|the &lt; label>")
23
+ end
24
+ end
25
+
26
+ describe "to_markdown" do
27
+ it "transforms HTML" do
28
+ input = <<HTML.strip
29
+ <h1>Header1</h1>
30
+ <h2>Header2</h2>
31
+ <p>This is a new comment</p>
32
+ <ul>
33
+ <li>with multiple items</li>
34
+ <li>in a list</li>
35
+ </ul>
36
+
37
+ <p>or a</p>
38
+
39
+ <ol>
40
+ <li>Numbered</li>
41
+ <li>List</li>
42
+ </ol>
43
+
44
+ <p>
45
+ <del>strike</del> <ins>underline</ins> <em>italic</em> <strong>bold</strong>
46
+ </p>
47
+
48
+ <blockquote>
49
+ <p>Block quote</p>
50
+ </blockquote>
51
+
52
+ <p>
53
+ <img src="https://www.example.org/image.png" alt="Example Image">
54
+ </p>
55
+
56
+ <p>
57
+ External link: <a href="https://www.example.org" class="external">ExampleORG</a>
58
+ </p>
59
+
60
+ <pre>
61
+ Some pre-indented text
62
+ in two lines
63
+ </pre>
64
+
65
+ <pre><code class="ruby syntaxhl">
66
+ class Ruby
67
+ end
68
+ </code></pre>
69
+
70
+ HTML
71
+ expected = <<MARKDOWN.strip
72
+ # Header1
73
+
74
+ ## Header2
75
+
76
+ This is a new comment
77
+
78
+ - with multiple items
79
+ - in a list
80
+
81
+ or a
82
+
83
+ 1. Numbered
84
+ 2. List
85
+
86
+ ~~strike~~ underline _italic_ **bold**
87
+
88
+ > Block quote
89
+
90
+ ![Example Image](https://www.example.org/image.png)
91
+
92
+ External link: [ExampleORG](https://www.example.org)
93
+
94
+ ```
95
+ Some pre-indented text
96
+ in two lines
97
+ ```
98
+
99
+ ```
100
+ class Ruby
101
+ end
102
+ ```
103
+ MARKDOWN
104
+ text = subject.to_markdown(input)
105
+ text.must_equal(expected)
106
+ end
107
+
108
+ it "passes already used markdown" do
109
+ settings.text_formatting = "markdown"
110
+ text = subject.to_markdown("> Markdown")
111
+ text.must_equal("> Markdown")
112
+ end
113
+
114
+ it "rescues to escaped test" do
115
+ stub = proc do |formatting, text|
116
+ raise "some error"
117
+ end
118
+ bridge.stub(:to_html, stub) do
119
+ text = subject.to_markdown("<code>")
120
+ text.must_equal("&lt;code&gt;")
121
+ end
122
+ end
123
+ end
124
+
125
+ private
126
+
127
+ class Dummy
128
+ include RedmineMattermost::Utils::Text
129
+
130
+ attr_reader :bridge
131
+
132
+ def initialize(bridge)
133
+ @bridge = bridge
134
+ end
135
+
136
+ # just use the input (assuming the test already)
137
+ # provides valid HTML
138
+ def to_html(formatting, text)
139
+ text
140
+ end
141
+ end
142
+ end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine-mattermost
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: 0.4.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - AltSol
8
+ - Jonas Thiel
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2016-09-13 00:00:00.000000000 Z
12
+ date: 2016-09-21 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rails
@@ -25,19 +26,19 @@ dependencies:
25
26
  - !ruby/object:Gem::Version
26
27
  version: 4.2.0
27
28
  - !ruby/object:Gem::Dependency
28
- name: httpclient
29
+ name: reverse_markdown
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - "~>"
32
33
  - !ruby/object:Gem::Version
33
- version: 2.8.2
34
+ version: 1.0.3
34
35
  type: :runtime
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
39
  - - "~>"
39
40
  - !ruby/object:Gem::Version
40
- version: 2.8.2
41
+ version: 1.0.3
41
42
  - !ruby/object:Gem::Dependency
42
43
  name: bundler
43
44
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +67,48 @@ dependencies:
66
67
  - - "~>"
67
68
  - !ruby/object:Gem::Version
68
69
  version: '10.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: minitest
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: 5.9.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: 5.9.0
84
+ - !ruby/object:Gem::Dependency
85
+ name: webmock
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: 2.1.0
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: 2.1.0
98
+ - !ruby/object:Gem::Dependency
99
+ name: RedCloth
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: 4.3.2
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: 4.3.2
69
112
  description: Mattermost chat integration
70
113
  email:
71
114
  executables: []
@@ -73,19 +116,43 @@ extensions: []
73
116
  extra_rdoc_files: []
74
117
  files:
75
118
  - ".gitignore"
119
+ - ".travis.yml"
76
120
  - Gemfile
77
121
  - LICENSE
78
122
  - README.md
79
123
  - Rakefile
80
124
  - app/views/settings/_mattermost_settings.html.erb
81
125
  - lib/redmine-mattermost.rb
126
+ - lib/redmine_mattermost/bridge.rb
127
+ - lib/redmine_mattermost/client.rb
82
128
  - lib/redmine_mattermost/engine.rb
129
+ - lib/redmine_mattermost/extractors.rb
130
+ - lib/redmine_mattermost/extractors/applied_changeset.rb
131
+ - lib/redmine_mattermost/extractors/changed_wiki_page.rb
132
+ - lib/redmine_mattermost/extractors/new_issue.rb
133
+ - lib/redmine_mattermost/extractors/updated_issue.rb
83
134
  - lib/redmine_mattermost/infos.rb
84
135
  - lib/redmine_mattermost/issue_patch.rb
85
136
  - lib/redmine_mattermost/listener.rb
137
+ - lib/redmine_mattermost/message_builder.rb
86
138
  - lib/redmine_mattermost/redmine_plugin.rb
139
+ - lib/redmine_mattermost/utils.rb
140
+ - lib/redmine_mattermost/utils/journal_mapper.rb
141
+ - lib/redmine_mattermost/utils/text.rb
142
+ - lib/redmine_mattermost/utils/urls.rb
87
143
  - lib/redmine_mattermost/version.rb
88
144
  - redmine-mattermost.gemspec
145
+ - spec/client_spec.rb
146
+ - spec/extractors/applied_changeset_spec.rb
147
+ - spec/extractors/changed_wiki_page_spec.rb
148
+ - spec/extractors/new_issue_spec.rb
149
+ - spec/extractors/updated_issue_spec.rb
150
+ - spec/message_builder_spec.rb
151
+ - spec/redmine_mattermost_spec.rb
152
+ - spec/spec_helper.rb
153
+ - spec/support/mock_support.rb
154
+ - spec/utils/text_spec.rb
155
+ - spec/utils/text_spec_alt.rb
89
156
  homepage: https://github.com/neopoly/redmine-mattermost
90
157
  licenses:
91
158
  - MIT
@@ -101,13 +168,24 @@ required_ruby_version: !ruby/object:Gem::Requirement
101
168
  version: '0'
102
169
  required_rubygems_version: !ruby/object:Gem::Requirement
103
170
  requirements:
104
- - - ">="
171
+ - - ">"
105
172
  - !ruby/object:Gem::Version
106
- version: '0'
173
+ version: 1.3.1
107
174
  requirements: []
108
175
  rubyforge_project:
109
- rubygems_version: 2.4.6
176
+ rubygems_version: 2.4.3
110
177
  signing_key:
111
178
  specification_version: 4
112
179
  summary: Mattermost chat integration
113
- test_files: []
180
+ test_files:
181
+ - spec/client_spec.rb
182
+ - spec/extractors/applied_changeset_spec.rb
183
+ - spec/extractors/changed_wiki_page_spec.rb
184
+ - spec/extractors/new_issue_spec.rb
185
+ - spec/extractors/updated_issue_spec.rb
186
+ - spec/message_builder_spec.rb
187
+ - spec/redmine_mattermost_spec.rb
188
+ - spec/spec_helper.rb
189
+ - spec/support/mock_support.rb
190
+ - spec/utils/text_spec.rb
191
+ - spec/utils/text_spec_alt.rb