ruby_pocket 0.1.1

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 (45) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +191 -0
  4. data/Rakefile +51 -0
  5. data/config/config.rb +14 -0
  6. data/config/database.rb +14 -0
  7. data/db/migrations/001_create_tags.rb +15 -0
  8. data/db/migrations/002_create_favorites.rb +17 -0
  9. data/db/migrations/003_create_favorites_tags.rb +20 -0
  10. data/db/pocket_development.db +0 -0
  11. data/db/pocket_test.db +0 -0
  12. data/lib/ruby_pocket/all.rb +5 -0
  13. data/lib/ruby_pocket/cli/add_action.rb +12 -0
  14. data/lib/ruby_pocket/cli/delete_action.rb +16 -0
  15. data/lib/ruby_pocket/cli/list_action.rb +39 -0
  16. data/lib/ruby_pocket/cli/open_action.rb +12 -0
  17. data/lib/ruby_pocket/cli/options.rb +23 -0
  18. data/lib/ruby_pocket/cli.rb +8 -0
  19. data/lib/ruby_pocket/environment.rb +11 -0
  20. data/lib/ruby_pocket/favorite.rb +36 -0
  21. data/lib/ruby_pocket/favorite_creator.rb +62 -0
  22. data/lib/ruby_pocket/favorite_query.rb +34 -0
  23. data/lib/ruby_pocket/tag.rb +32 -0
  24. data/lib/ruby_pocket/version.rb +3 -0
  25. data/lib/ruby_pocket/web_page.rb +33 -0
  26. data/lib/ruby_pocket.rb +37 -0
  27. data/test/ruby_pocket/cli/options_test.rb +49 -0
  28. data/test/ruby_pocket/favorite_creator_test.rb +80 -0
  29. data/test/ruby_pocket/favorite_query_test.rb +98 -0
  30. data/test/ruby_pocket/favorite_test.rb +76 -0
  31. data/test/ruby_pocket/features/add_test.rb +40 -0
  32. data/test/ruby_pocket/features/delete_test.rb +45 -0
  33. data/test/ruby_pocket/features/list_test.rb +75 -0
  34. data/test/ruby_pocket/tag_test.rb +53 -0
  35. data/test/ruby_pocket/web_page_test.rb +68 -0
  36. data/test/support/add_feature_mocker.rb +37 -0
  37. data/test/support/custom_assertions.rb +9 -0
  38. data/test/support/database_test_case.rb +11 -0
  39. data/test/support/default_test_case.rb +9 -0
  40. data/test/support/favorite_factory.rb +14 -0
  41. data/test/support/feature_assertions.rb +22 -0
  42. data/test/support/feature_test_case.rb +32 -0
  43. data/test/support/webmock.rb +3 -0
  44. data/test/test_helper.rb +19 -0
  45. metadata +305 -0
@@ -0,0 +1,9 @@
1
+ module CustomAssertions
2
+ def assert_subset(subset, collection)
3
+ assert_equal(
4
+ collection,
5
+ collection.merge(subset),
6
+ 'Subset is not included in collection'
7
+ )
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ require 'support/default_test_case'
2
+
3
+ class DatabaseTestCase < DefaultTestCase
4
+ def setup
5
+ DatabaseCleaner.start
6
+ end
7
+
8
+ def teardown
9
+ DatabaseCleaner.clean
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ require 'support/custom_assertions'
2
+
3
+ class DefaultTestCase < Minitest::Test
4
+ include CustomAssertions
5
+
6
+ alias :assert_not :refute
7
+ alias :assert_not_empty :refute_empty
8
+ alias :assert_not_match :refute_match
9
+ end
@@ -0,0 +1,14 @@
1
+ module FavoriteFactory
2
+ private
3
+
4
+ def create_favorite(values = build_values)
5
+ RubyPocket::Favorite.create values
6
+ end
7
+
8
+ def build_values(values = {})
9
+ {
10
+ name: 'Ruby Flow',
11
+ url: 'http:///www.rubyflow.com'
12
+ }.merge(values)
13
+ end
14
+ end
@@ -0,0 +1,22 @@
1
+ module FeatureAssertions
2
+ private
3
+
4
+ def build_favorite_regex(favorite)
5
+ tags = Regexp.union(*favorite.tags.map(&:name))
6
+ %r(#{favorite.id}.+#{favorite.name}.+#{tags})
7
+ end
8
+
9
+ def assert_shows_favorite(favorite, output)
10
+ message = "Favorite '#{favorite.name}' is not on the output. Should be."
11
+ favorite_regex = build_favorite_regex(favorite)
12
+
13
+ assert_match favorite_regex, output.stdout, message
14
+ end
15
+
16
+ def assert_not_shows_favorite(favorite, output)
17
+ message = "Favorite '#{favorite.name}' is on the output. Shouldn't be."
18
+ favorite_regex = build_favorite_regex(favorite)
19
+
20
+ assert_not_match favorite_regex, output.stdout, message
21
+ end
22
+ end
@@ -0,0 +1,32 @@
1
+ require 'support/database_test_case'
2
+ require 'support/feature_assertions'
3
+ require 'open3'
4
+
5
+ class FeatureTestCase < DatabaseTestCase
6
+ include FeatureAssertions
7
+
8
+ private
9
+
10
+ def run_command(command, **env)
11
+ env = env_to_s(env)
12
+ command = "#{env} bin/#{command}"
13
+
14
+ Open3.popen3(command) do |_, stdout, stderr|
15
+ ProgramOutput.new(stdout.read, stderr.read)
16
+ end
17
+ end
18
+
19
+ def env_to_s(env)
20
+ env = apply_env_defaults(env)
21
+ env.map do |value|
22
+ value[1] = "'#{value[1]}'"
23
+ value.join('=')
24
+ end.join(' ')
25
+ end
26
+
27
+ def apply_env_defaults(env)
28
+ { RUBY_POCKET_ENV: 'TEST' }.merge(env)
29
+ end
30
+
31
+ ProgramOutput = Struct.new(:stdout, :stderr)
32
+ end
@@ -0,0 +1,3 @@
1
+ require 'webmock/minitest'
2
+
3
+ WebMock.disable_net_connect!(allow: %w{codeclimate.com})
@@ -0,0 +1,19 @@
1
+ $LOAD_PATH << __dir__
2
+
3
+ if ENV['CODECLIMATE_REPO_TOKEN']
4
+ require 'codeclimate-test-reporter'
5
+ CodeClimate::TestReporter.start
6
+ end
7
+
8
+ require 'ruby_pocket'
9
+ RubyPocket.environment = 'TEST'
10
+
11
+ require 'database_cleaner'
12
+
13
+ require_relative '../config/config'
14
+
15
+ require_relative 'support/default_test_case'
16
+ require_relative 'support/database_test_case'
17
+ require_relative 'support/feature_test_case'
18
+
19
+ DatabaseCleaner.strategy = :truncation
metadata ADDED
@@ -0,0 +1,305 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby_pocket
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Thiago A. Silva
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sqlite3
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.3.10
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.3.10
33
+ - !ruby/object:Gem::Dependency
34
+ name: sequel
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '4.26'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 4.26.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '4.26'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 4.26.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: mechanize
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '2.7'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 2.7.3
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '2.7'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 2.7.3
73
+ - !ruby/object:Gem::Dependency
74
+ name: terminal-table
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '1.5'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 1.5.2
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.5'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 1.5.2
93
+ - !ruby/object:Gem::Dependency
94
+ name: rake
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '10.4'
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 10.4.2
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '10.4'
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 10.4.2
113
+ - !ruby/object:Gem::Dependency
114
+ name: minitest
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '5.8'
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 5.8.0
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '5.8'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 5.8.0
133
+ - !ruby/object:Gem::Dependency
134
+ name: testrbl
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '0.6'
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: 0.6.0
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '0.6'
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: 0.6.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: database_cleaner
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.5'
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: 1.5.0
163
+ type: :development
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - "~>"
168
+ - !ruby/object:Gem::Version
169
+ version: '1.5'
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: 1.5.0
173
+ - !ruby/object:Gem::Dependency
174
+ name: webmock
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '1.21'
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: 1.21.0
183
+ type: :development
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: '1.21'
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: 1.21.0
193
+ - !ruby/object:Gem::Dependency
194
+ name: codeclimate-test-reporter
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '0.4'
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: 0.4.8
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '0.4'
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: 0.4.8
213
+ description: A command line client to store and manage development favorites
214
+ email:
215
+ - thiagoaraujos@gmail.com
216
+ executables: []
217
+ extensions: []
218
+ extra_rdoc_files: []
219
+ files:
220
+ - MIT-LICENSE
221
+ - README.md
222
+ - Rakefile
223
+ - config/config.rb
224
+ - config/database.rb
225
+ - db/migrations/001_create_tags.rb
226
+ - db/migrations/002_create_favorites.rb
227
+ - db/migrations/003_create_favorites_tags.rb
228
+ - db/pocket_development.db
229
+ - db/pocket_test.db
230
+ - lib/ruby_pocket.rb
231
+ - lib/ruby_pocket/all.rb
232
+ - lib/ruby_pocket/cli.rb
233
+ - lib/ruby_pocket/cli/add_action.rb
234
+ - lib/ruby_pocket/cli/delete_action.rb
235
+ - lib/ruby_pocket/cli/list_action.rb
236
+ - lib/ruby_pocket/cli/open_action.rb
237
+ - lib/ruby_pocket/cli/options.rb
238
+ - lib/ruby_pocket/environment.rb
239
+ - lib/ruby_pocket/favorite.rb
240
+ - lib/ruby_pocket/favorite_creator.rb
241
+ - lib/ruby_pocket/favorite_query.rb
242
+ - lib/ruby_pocket/tag.rb
243
+ - lib/ruby_pocket/version.rb
244
+ - lib/ruby_pocket/web_page.rb
245
+ - test/ruby_pocket/cli/options_test.rb
246
+ - test/ruby_pocket/favorite_creator_test.rb
247
+ - test/ruby_pocket/favorite_query_test.rb
248
+ - test/ruby_pocket/favorite_test.rb
249
+ - test/ruby_pocket/features/add_test.rb
250
+ - test/ruby_pocket/features/delete_test.rb
251
+ - test/ruby_pocket/features/list_test.rb
252
+ - test/ruby_pocket/tag_test.rb
253
+ - test/ruby_pocket/web_page_test.rb
254
+ - test/support/add_feature_mocker.rb
255
+ - test/support/custom_assertions.rb
256
+ - test/support/database_test_case.rb
257
+ - test/support/default_test_case.rb
258
+ - test/support/favorite_factory.rb
259
+ - test/support/feature_assertions.rb
260
+ - test/support/feature_test_case.rb
261
+ - test/support/webmock.rb
262
+ - test/test_helper.rb
263
+ homepage: http://github.com/thiagoa/ruby_pocket
264
+ licenses:
265
+ - MIT
266
+ metadata: {}
267
+ post_install_message:
268
+ rdoc_options: []
269
+ require_paths:
270
+ - lib
271
+ required_ruby_version: !ruby/object:Gem::Requirement
272
+ requirements:
273
+ - - ">="
274
+ - !ruby/object:Gem::Version
275
+ version: '0'
276
+ required_rubygems_version: !ruby/object:Gem::Requirement
277
+ requirements:
278
+ - - ">="
279
+ - !ruby/object:Gem::Version
280
+ version: '0'
281
+ requirements: []
282
+ rubyforge_project:
283
+ rubygems_version: 2.4.5.1
284
+ signing_key:
285
+ specification_version: 4
286
+ summary: A warm place to store precious development references
287
+ test_files:
288
+ - test/ruby_pocket/cli/options_test.rb
289
+ - test/ruby_pocket/favorite_creator_test.rb
290
+ - test/ruby_pocket/favorite_query_test.rb
291
+ - test/ruby_pocket/favorite_test.rb
292
+ - test/ruby_pocket/features/add_test.rb
293
+ - test/ruby_pocket/features/delete_test.rb
294
+ - test/ruby_pocket/features/list_test.rb
295
+ - test/ruby_pocket/tag_test.rb
296
+ - test/ruby_pocket/web_page_test.rb
297
+ - test/support/add_feature_mocker.rb
298
+ - test/support/custom_assertions.rb
299
+ - test/support/database_test_case.rb
300
+ - test/support/default_test_case.rb
301
+ - test/support/favorite_factory.rb
302
+ - test/support/feature_assertions.rb
303
+ - test/support/feature_test_case.rb
304
+ - test/support/webmock.rb
305
+ - test/test_helper.rb