sinatra-admin 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +176 -0
  6. data/Rakefile +2 -0
  7. data/dummy/config.ru +12 -0
  8. data/dummy/config/mongoid.yml +6 -0
  9. data/dummy/dummy.rb +19 -0
  10. data/dummy/models/admin.rb +6 -0
  11. data/dummy/models/comment.rb +5 -0
  12. data/dummy/models/user.rb +11 -0
  13. data/dummy/views/admin/customs/index.haml +4 -0
  14. data/dummy/views/admin/users/custom.haml +2 -0
  15. data/features/admin_login.feature +36 -0
  16. data/features/admin_logout.feature +14 -0
  17. data/features/creating_users.feature +44 -0
  18. data/features/custom_pages.feature +34 -0
  19. data/features/default_root.feature +43 -0
  20. data/features/editing_users.feature +46 -0
  21. data/features/listing_users.feature +46 -0
  22. data/features/main_menu_resources.feature +41 -0
  23. data/features/removing_users.feature +34 -0
  24. data/features/step_definitions/common_steps.rb +59 -0
  25. data/features/step_definitions/web_steps.rb +212 -0
  26. data/features/support/database_cleaner.rb +17 -0
  27. data/features/support/env.rb +18 -0
  28. data/features/support/paths.rb +30 -0
  29. data/features/support/sinatra_admin.rb +3 -0
  30. data/features/support/warden.rb +9 -0
  31. data/features/user_details.feature +31 -0
  32. data/lib/sinatra-admin.rb +42 -0
  33. data/lib/sinatra-admin/app.rb +74 -0
  34. data/lib/sinatra-admin/config.rb +45 -0
  35. data/lib/sinatra-admin/helpers/session.rb +24 -0
  36. data/lib/sinatra-admin/helpers/template_lookup.rb +7 -0
  37. data/lib/sinatra-admin/models/admin.rb +40 -0
  38. data/lib/sinatra-admin/register.rb +8 -0
  39. data/lib/sinatra-admin/register/base.rb +29 -0
  40. data/lib/sinatra-admin/register/custom.rb +10 -0
  41. data/lib/sinatra-admin/register/model.rb +75 -0
  42. data/lib/sinatra-admin/version.rb +3 -0
  43. data/lib/sinatra-admin/views/auth/login.haml +16 -0
  44. data/lib/sinatra-admin/views/edit.haml +21 -0
  45. data/lib/sinatra-admin/views/index.haml +34 -0
  46. data/lib/sinatra-admin/views/layout.haml +19 -0
  47. data/lib/sinatra-admin/views/new.haml +19 -0
  48. data/lib/sinatra-admin/views/show.haml +16 -0
  49. data/lib/sinatra-admin/warden_strategies/sinatra_admin.rb +27 -0
  50. data/sinatra-admin.gemspec +36 -0
  51. data/spec/sinatra-admin/app_spec.rb +15 -0
  52. data/spec/sinatra-admin/config_spec.rb +111 -0
  53. data/spec/sinatra-admin/models/admin_spec.rb +33 -0
  54. data/spec/sinatra-admin/register/base_spec.rb +13 -0
  55. data/spec/sinatra-admin/register/custom_spec.rb +40 -0
  56. data/spec/sinatra-admin/register/model_spec.rb +26 -0
  57. data/spec/sinatra-admin/register_spec.rb +15 -0
  58. data/spec/sinatra-admin/version_spec.rb +5 -0
  59. data/spec/sinatra-admin_spec.rb +73 -0
  60. data/spec/spec_helper.rb +81 -0
  61. metadata +343 -0
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe SinatraAdmin::Register do
4
+ it 'defines ::Base' do
5
+ expect(defined? described_class::Base).to eq('constant')
6
+ end
7
+
8
+ it 'defines ::Model' do
9
+ expect(defined? described_class::Model).to eq('constant')
10
+ end
11
+
12
+ it 'defines ::Custom' do
13
+ expect(defined? described_class::Custom).to eq('constant')
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ describe SinatraAdmin do
2
+ describe '::VERSION' do
3
+ it { expect(described_class::VERSION).to eq('0.1.0') }
4
+ end
5
+ end
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+
3
+ class User; end
4
+
5
+ describe SinatraAdmin do
6
+ describe '.register' do
7
+ context 'when is registered a model' do
8
+ let(:resource) { 'User' }
9
+
10
+ it 'registers a new resource(model)' do
11
+ expect(described_class::Register::Model).to receive(:add).with(User)
12
+ described_class.register(resource)
13
+ end
14
+ end
15
+
16
+ context 'when is registered a custom page' do
17
+ let(:resource) { 'Custom Page' }
18
+
19
+ it 'registers a new resource(custom)' do
20
+ expect(described_class::Register::Custom).to receive(:add).with('Custom Page')
21
+ described_class.register(resource)
22
+ end
23
+ end
24
+ end
25
+
26
+ describe '.config' do
27
+ it 'returns instance of SinatraAdmin::Config' do
28
+ expect(described_class.config).to be_instance_of(described_class::Config)
29
+ end
30
+ end
31
+
32
+ describe '.root' do
33
+ let(:default_root) { 'User' }
34
+
35
+ it 'sets root to config' do
36
+ described_class.root default_root
37
+ expect(described_class.config.root).to eq(default_root)
38
+ end
39
+ end
40
+
41
+ describe '.admin_model' do
42
+ let(:admin_model) { 'User' }
43
+
44
+ it 'sets admin_model to config' do
45
+ described_class.admin_model admin_model
46
+ expect(described_class.config.admin_model).to eq(User)
47
+ end
48
+ end
49
+
50
+ describe '.extend_views_from' do
51
+ context 'when target is a string' do
52
+ let(:expected_views) do
53
+ described_class::App.views << "path/to/admin/views/admin"
54
+ end
55
+
56
+ it 'adds main app views to SinatraAdmin views' do
57
+ described_class.extend_views_from("path/to/admin/views")
58
+ expect(described_class::App.views).to eq(expected_views)
59
+ end
60
+ end
61
+
62
+ context 'when target is a constant' do
63
+ let(:expected_views) do
64
+ described_class::App.views << "#{Dummy::API.views}/admin"
65
+ end
66
+
67
+ it 'adds main app views to SinatraAdmin views' do
68
+ described_class.extend_views_from(Dummy::API)
69
+ expect(described_class::App.views).to eq(expected_views)
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,81 @@
1
+ require_relative '../lib/sinatra-admin'
2
+ require_relative '../dummy/dummy'
3
+
4
+ # This file was generated by the `rspec --init` command. Conventionally, all
5
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
6
+ # The generated `.rspec` file contains `--require spec_helper` which will cause this
7
+ # file to always be loaded, without a need to explicitly require it in any files.
8
+ #
9
+ # Given that it is always loaded, you are encouraged to keep this file as
10
+ # light-weight as possible. Requiring heavyweight dependencies from this file
11
+ # will add to the boot time of your test suite on EVERY test run, even for an
12
+ # individual file that may not need all of that loaded. Instead, make a
13
+ # separate helper file that requires this one and then use it only in the specs
14
+ # that actually need it.
15
+ #
16
+ # The `.rspec` file also contains a few flags that are not defaults but that
17
+ # users commonly want.
18
+ #
19
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
20
+ RSpec.configure do |config|
21
+ # The settings below are suggested to provide a good initial experience
22
+ # with RSpec, but feel free to customize to your heart's content.
23
+ =begin
24
+ # These two settings work together to allow you to limit a spec run
25
+ # to individual examples or groups you care about by tagging them with
26
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
27
+ # get run.
28
+ config.filter_run :focus
29
+ config.run_all_when_everything_filtered = true
30
+
31
+ # Many RSpec users commonly either run the entire suite or an individual
32
+ # file, and it's useful to allow more verbose output when running an
33
+ # individual spec file.
34
+ if config.files_to_run.one?
35
+ # Use the documentation formatter for detailed output,
36
+ # unless a formatter has already been configured
37
+ # (e.g. via a command-line flag).
38
+ config.default_formatter = 'doc'
39
+ end
40
+
41
+ # Print the 10 slowest examples and example groups at the
42
+ # end of the spec run, to help surface which specs are running
43
+ # particularly slow.
44
+ config.profile_examples = 10
45
+
46
+ # Run specs in random order to surface order dependencies. If you find an
47
+ # order dependency and want to debug it, you can fix the order by providing
48
+ # the seed, which is printed after each run.
49
+ # --seed 1234
50
+ config.order = :random
51
+
52
+ # Seed global randomization in this process using the `--seed` CLI option.
53
+ # Setting this allows you to use `--seed` to deterministically reproduce
54
+ # test failures related to randomization by passing the same `--seed` value
55
+ # as the one that triggered the failure.
56
+ Kernel.srand config.seed
57
+
58
+ # rspec-expectations config goes here. You can use an alternate
59
+ # assertion/expectation library such as wrong or the stdlib/minitest
60
+ # assertions if you prefer.
61
+ config.expect_with :rspec do |expectations|
62
+ # Enable only the newer, non-monkey-patching expect syntax.
63
+ # For more details, see:
64
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
65
+ expectations.syntax = :expect
66
+ end
67
+
68
+ # rspec-mocks config goes here. You can use an alternate test double
69
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
70
+ config.mock_with :rspec do |mocks|
71
+ # Enable only the newer, non-monkey-patching expect syntax.
72
+ # For more details, see:
73
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
74
+ mocks.syntax = :expect
75
+
76
+ # Prevents you from mocking or stubbing a method that does not exist on
77
+ # a real object. This is generally recommended.
78
+ mocks.verify_partial_doubles = true
79
+ end
80
+ =end
81
+ end
metadata ADDED
@@ -0,0 +1,343 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sinatra-admin
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Fco. Delgado
8
+ - Carlo Cajucom
9
+ - Vahak Matavosian
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-08-13 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.6'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ version: '1.6'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rake
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: '10.0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ version: '10.0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rspec
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: 3.0.0
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 3.0.0
57
+ - !ruby/object:Gem::Dependency
58
+ name: capybara
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: 2.4.1
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: 2.4.1
71
+ - !ruby/object:Gem::Dependency
72
+ name: cucumber
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.3.16
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ~>
83
+ - !ruby/object:Gem::Version
84
+ version: 1.3.16
85
+ - !ruby/object:Gem::Dependency
86
+ name: cucumber-sinatra
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ version: 0.5.0
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ version: 0.5.0
99
+ - !ruby/object:Gem::Dependency
100
+ name: database_cleaner
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: mongoid
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ~>
118
+ - !ruby/object:Gem::Version
119
+ version: 3.1.6
120
+ type: :runtime
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ version: 3.1.6
127
+ - !ruby/object:Gem::Dependency
128
+ name: sinatra
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 1.4.5
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ~>
139
+ - !ruby/object:Gem::Version
140
+ version: 1.4.5
141
+ - !ruby/object:Gem::Dependency
142
+ name: sinatra-contrib
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ~>
146
+ - !ruby/object:Gem::Version
147
+ version: 1.4.2
148
+ type: :runtime
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ~>
153
+ - !ruby/object:Gem::Version
154
+ version: 1.4.2
155
+ - !ruby/object:Gem::Dependency
156
+ name: sinatra-flash
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ~>
160
+ - !ruby/object:Gem::Version
161
+ version: 0.3.0
162
+ type: :runtime
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ~>
167
+ - !ruby/object:Gem::Version
168
+ version: 0.3.0
169
+ - !ruby/object:Gem::Dependency
170
+ name: haml
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ~>
174
+ - !ruby/object:Gem::Version
175
+ version: 4.0.5
176
+ type: :runtime
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ~>
181
+ - !ruby/object:Gem::Version
182
+ version: 4.0.5
183
+ - !ruby/object:Gem::Dependency
184
+ name: warden
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ~>
188
+ - !ruby/object:Gem::Version
189
+ version: 1.2.3
190
+ type: :runtime
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ~>
195
+ - !ruby/object:Gem::Version
196
+ version: 1.2.3
197
+ - !ruby/object:Gem::Dependency
198
+ name: activesupport
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - '>='
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ type: :runtime
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - '>='
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ - !ruby/object:Gem::Dependency
212
+ name: bcrypt
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - '>='
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ type: :runtime
219
+ prerelease: false
220
+ version_requirements: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - '>='
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ description:
226
+ email:
227
+ - franciscodelgadodev@gmail.com
228
+ executables: []
229
+ extensions: []
230
+ extra_rdoc_files: []
231
+ files:
232
+ - .gitignore
233
+ - Gemfile
234
+ - LICENSE.txt
235
+ - README.md
236
+ - Rakefile
237
+ - dummy/config.ru
238
+ - dummy/config/mongoid.yml
239
+ - dummy/dummy.rb
240
+ - dummy/models/admin.rb
241
+ - dummy/models/comment.rb
242
+ - dummy/models/user.rb
243
+ - dummy/views/admin/customs/index.haml
244
+ - dummy/views/admin/users/custom.haml
245
+ - features/admin_login.feature
246
+ - features/admin_logout.feature
247
+ - features/creating_users.feature
248
+ - features/custom_pages.feature
249
+ - features/default_root.feature
250
+ - features/editing_users.feature
251
+ - features/listing_users.feature
252
+ - features/main_menu_resources.feature
253
+ - features/removing_users.feature
254
+ - features/step_definitions/common_steps.rb
255
+ - features/step_definitions/web_steps.rb
256
+ - features/support/database_cleaner.rb
257
+ - features/support/env.rb
258
+ - features/support/paths.rb
259
+ - features/support/sinatra_admin.rb
260
+ - features/support/warden.rb
261
+ - features/user_details.feature
262
+ - lib/sinatra-admin.rb
263
+ - lib/sinatra-admin/app.rb
264
+ - lib/sinatra-admin/config.rb
265
+ - lib/sinatra-admin/helpers/session.rb
266
+ - lib/sinatra-admin/helpers/template_lookup.rb
267
+ - lib/sinatra-admin/models/admin.rb
268
+ - lib/sinatra-admin/register.rb
269
+ - lib/sinatra-admin/register/base.rb
270
+ - lib/sinatra-admin/register/custom.rb
271
+ - lib/sinatra-admin/register/model.rb
272
+ - lib/sinatra-admin/version.rb
273
+ - lib/sinatra-admin/views/auth/login.haml
274
+ - lib/sinatra-admin/views/edit.haml
275
+ - lib/sinatra-admin/views/index.haml
276
+ - lib/sinatra-admin/views/layout.haml
277
+ - lib/sinatra-admin/views/new.haml
278
+ - lib/sinatra-admin/views/show.haml
279
+ - lib/sinatra-admin/warden_strategies/sinatra_admin.rb
280
+ - sinatra-admin.gemspec
281
+ - spec/sinatra-admin/app_spec.rb
282
+ - spec/sinatra-admin/config_spec.rb
283
+ - spec/sinatra-admin/models/admin_spec.rb
284
+ - spec/sinatra-admin/register/base_spec.rb
285
+ - spec/sinatra-admin/register/custom_spec.rb
286
+ - spec/sinatra-admin/register/model_spec.rb
287
+ - spec/sinatra-admin/register_spec.rb
288
+ - spec/sinatra-admin/version_spec.rb
289
+ - spec/sinatra-admin_spec.rb
290
+ - spec/spec_helper.rb
291
+ homepage: https://github.com/Herbalifedev/sinatra-admin
292
+ licenses:
293
+ - MIT
294
+ metadata: {}
295
+ post_install_message:
296
+ rdoc_options: []
297
+ require_paths:
298
+ - lib
299
+ required_ruby_version: !ruby/object:Gem::Requirement
300
+ requirements:
301
+ - - '>='
302
+ - !ruby/object:Gem::Version
303
+ version: '0'
304
+ required_rubygems_version: !ruby/object:Gem::Requirement
305
+ requirements:
306
+ - - '>='
307
+ - !ruby/object:Gem::Version
308
+ version: '0'
309
+ requirements: []
310
+ rubyforge_project:
311
+ rubygems_version: 2.0.2
312
+ signing_key:
313
+ specification_version: 4
314
+ summary: Sinatra application that allow us to have an admin dashboard with minimal
315
+ effort.
316
+ test_files:
317
+ - features/admin_login.feature
318
+ - features/admin_logout.feature
319
+ - features/creating_users.feature
320
+ - features/custom_pages.feature
321
+ - features/default_root.feature
322
+ - features/editing_users.feature
323
+ - features/listing_users.feature
324
+ - features/main_menu_resources.feature
325
+ - features/removing_users.feature
326
+ - features/step_definitions/common_steps.rb
327
+ - features/step_definitions/web_steps.rb
328
+ - features/support/database_cleaner.rb
329
+ - features/support/env.rb
330
+ - features/support/paths.rb
331
+ - features/support/sinatra_admin.rb
332
+ - features/support/warden.rb
333
+ - features/user_details.feature
334
+ - spec/sinatra-admin/app_spec.rb
335
+ - spec/sinatra-admin/config_spec.rb
336
+ - spec/sinatra-admin/models/admin_spec.rb
337
+ - spec/sinatra-admin/register/base_spec.rb
338
+ - spec/sinatra-admin/register/custom_spec.rb
339
+ - spec/sinatra-admin/register/model_spec.rb
340
+ - spec/sinatra-admin/register_spec.rb
341
+ - spec/sinatra-admin/version_spec.rb
342
+ - spec/sinatra-admin_spec.rb
343
+ - spec/spec_helper.rb