ruby_pocket 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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