rom-rails 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +59 -0
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +1 -1
  5. data/CHANGELOG.md +13 -0
  6. data/Gemfile +7 -2
  7. data/README.md +29 -18
  8. data/Rakefile +8 -0
  9. data/lib/generators/rom.rb +23 -0
  10. data/lib/generators/rom/commands/templates/commands.rb.erb +15 -0
  11. data/lib/generators/rom/commands_generator.rb +14 -0
  12. data/lib/generators/rom/mapper/templates/mapper.rb.erb +12 -0
  13. data/lib/generators/rom/mapper_generator.rb +14 -0
  14. data/lib/generators/rom/relation/templates/relation.rb.erb +8 -0
  15. data/lib/generators/rom/relation_generator.rb +14 -0
  16. data/lib/rom-rails.rb +5 -4
  17. data/lib/rom/model.rb +95 -0
  18. data/lib/rom/rails/configuration.rb +34 -0
  19. data/lib/rom/rails/controller_extension.rb +34 -1
  20. data/lib/rom/rails/inflections.rb +5 -0
  21. data/lib/rom/rails/railtie.rb +33 -73
  22. data/lib/rom/rails/version.rb +1 -1
  23. data/rom-rails.gemspec +5 -3
  24. data/spec/dummy/app/commands/users.rb +3 -5
  25. data/spec/dummy/app/controllers/users_controller.rb +14 -1
  26. data/spec/dummy/app/mappers/users.rb +1 -3
  27. data/spec/dummy/app/params/user_params.rb +7 -0
  28. data/spec/dummy/app/relations/users.rb +5 -5
  29. data/spec/dummy/app/validators/user_validator.rb +3 -0
  30. data/spec/dummy/config/boot.rb +1 -1
  31. data/spec/dummy/config/environments/development.rb +0 -1
  32. data/spec/dummy/config/environments/production.rb +0 -2
  33. data/spec/dummy/config/environments/test.rb +0 -4
  34. data/spec/dummy/config/routes.rb +2 -0
  35. data/spec/dummy/db/schema.rb +9 -2
  36. data/spec/dummy/spec/controllers/users_controller_spec.rb +29 -0
  37. data/spec/dummy/spec/features/users_spec.rb +11 -2
  38. data/spec/dummy/spec/integration/logger_spec.rb +3 -2
  39. data/spec/dummy/spec/integration/user_commands_spec.rb +21 -0
  40. data/spec/dummy/spec/integration/user_params_spec.rb +33 -0
  41. data/spec/lib/generators/commands_generator_spec.rb +40 -0
  42. data/spec/lib/generators/mapper_generator_spec.rb +37 -0
  43. data/spec/lib/generators/relation_generator_spec.rb +33 -0
  44. data/spec/spec_helper.rb +5 -0
  45. metadata +63 -10
  46. data/lib/rom/rom-rails.rb +0 -8
  47. data/spec/unit/configuration_spec.rb +0 -39
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe ROM::Model::Params do
4
+ let(:params) do
5
+ Class.new do
6
+ include ROM::Model::Params
7
+
8
+ param_key :test
9
+ attribute :name, String
10
+ validates :name, presence: true
11
+
12
+ def self.name
13
+ 'Test'
14
+ end
15
+ end
16
+ end
17
+
18
+ describe '#valid?' do
19
+ it 'returns true when attributes are valid' do
20
+ user_params = params.new(name: 'Jane')
21
+ expect(user_params).to be_valid
22
+ end
23
+
24
+ it 'returns false when attributes are not valid' do
25
+ user_params = params.new(name: '')
26
+ expect(user_params).not_to be_valid
27
+ end
28
+
29
+ it 'sets up AM name' do
30
+ expect(params.model_name.param_key).to eql('test')
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ require 'generators/rom/commands_generator'
4
+
5
+ describe ROM::Generators::CommandsGenerator do
6
+ destination File.expand_path('../../../../tmp', __FILE__)
7
+
8
+ before(:all) do
9
+ prepare_destination
10
+ run_generator ['users']
11
+ end
12
+
13
+ specify do
14
+ expect(destination_root).to have_structure {
15
+ directory 'app' do
16
+ directory 'commands' do
17
+ file 'users.rb' do
18
+ contains <<-CONTENT.strip_heredoc
19
+ ROM.commands(:users) do
20
+
21
+ define(:create) do
22
+ result :one
23
+ end
24
+
25
+ define(:update) do
26
+ result :one
27
+ end
28
+
29
+ define(:delete) do
30
+ result :one
31
+ end
32
+
33
+ end
34
+ CONTENT
35
+ end
36
+ end
37
+ end
38
+ }
39
+ end
40
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ require 'generators/rom/mapper_generator'
4
+
5
+ describe ROM::Generators::MapperGenerator do
6
+ destination File.expand_path('../../../../tmp', __FILE__)
7
+
8
+ before(:all) do
9
+ prepare_destination
10
+ run_generator ['users']
11
+ end
12
+
13
+ specify do
14
+ expect(destination_root).to have_structure {
15
+ directory 'app' do
16
+ directory 'mappers' do
17
+ file 'users.rb' do
18
+ contains <<-CONTENT.strip_heredoc
19
+ ROM.mappers do
20
+
21
+ define(:users) do
22
+ # specify model and attributes ie
23
+ #
24
+ # model User
25
+ #
26
+ # attribute :name
27
+ # attribute :email
28
+ end
29
+
30
+ end
31
+ CONTENT
32
+ end
33
+ end
34
+ end
35
+ }
36
+ end
37
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ require 'generators/rom/relation_generator'
4
+
5
+ describe ROM::Generators::RelationGenerator do
6
+ destination File.expand_path('../../../../tmp', __FILE__)
7
+
8
+ before(:all) do
9
+ prepare_destination
10
+ run_generator ['users']
11
+ end
12
+
13
+ specify do
14
+ expect(destination_root).to have_structure {
15
+ directory 'app' do
16
+ directory 'relations' do
17
+ file 'users.rb' do
18
+ contains <<-CONTENT.strip_heredoc
19
+ ROM.relation(:users) do
20
+ # define your methods here ie:
21
+ #
22
+ # def all
23
+ # select(:id, :name).order(:id)
24
+ # end
25
+ #
26
+ end
27
+ CONTENT
28
+ end
29
+ end
30
+ end
31
+ }
32
+ end
33
+ end
@@ -11,6 +11,7 @@ require Pathname(__FILE__).dirname.join("dummy/config/environment")
11
11
  require 'rspec/rails'
12
12
  require 'database_cleaner'
13
13
  require 'capybara/rails'
14
+ require 'generator_spec'
14
15
 
15
16
  Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
16
17
  ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
@@ -22,3 +23,7 @@ RSpec.configure do |config|
22
23
  DatabaseCleaner.clean_with(:truncation)
23
24
  end
24
25
  end
26
+
27
+ def rom
28
+ Rails.application.config.rom.env
29
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rom-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-06 00:00:00.000000000 Z
11
+ date: 2014-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rom
@@ -16,20 +16,34 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.4'
19
+ version: '0.5'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.4.0
22
+ version: 0.5.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '0.4'
29
+ version: '0.5'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.4.0
32
+ version: 0.5.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: virtus
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.0'
33
47
  - !ruby/object:Gem::Dependency
34
48
  name: railties
35
49
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +92,20 @@ dependencies:
78
92
  - - ">="
79
93
  - !ruby/object:Gem::Version
80
94
  version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rubocop
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: 0.28.0
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: 0.28.0
81
109
  description:
82
110
  email:
83
111
  - piotr.solnica@gmail.com
@@ -87,6 +115,7 @@ extra_rdoc_files: []
87
115
  files:
88
116
  - ".gitignore"
89
117
  - ".rspec"
118
+ - ".rubocop.yml"
90
119
  - ".ruby-version"
91
120
  - ".travis.yml"
92
121
  - CHANGELOG.md
@@ -95,11 +124,20 @@ files:
95
124
  - LICENSE.txt
96
125
  - README.md
97
126
  - Rakefile
127
+ - lib/generators/rom.rb
128
+ - lib/generators/rom/commands/templates/commands.rb.erb
129
+ - lib/generators/rom/commands_generator.rb
130
+ - lib/generators/rom/mapper/templates/mapper.rb.erb
131
+ - lib/generators/rom/mapper_generator.rb
132
+ - lib/generators/rom/relation/templates/relation.rb.erb
133
+ - lib/generators/rom/relation_generator.rb
98
134
  - lib/rom-rails.rb
135
+ - lib/rom/model.rb
136
+ - lib/rom/rails/configuration.rb
99
137
  - lib/rom/rails/controller_extension.rb
138
+ - lib/rom/rails/inflections.rb
100
139
  - lib/rom/rails/railtie.rb
101
140
  - lib/rom/rails/version.rb
102
- - lib/rom/rom-rails.rb
103
141
  - rom-rails.gemspec
104
142
  - spec/dummy/.rspec
105
143
  - spec/dummy/README.rdoc
@@ -113,7 +151,9 @@ files:
113
151
  - spec/dummy/app/mappers/users.rb
114
152
  - spec/dummy/app/models/.keep
115
153
  - spec/dummy/app/models/user.rb
154
+ - spec/dummy/app/params/user_params.rb
116
155
  - spec/dummy/app/relations/users.rb
156
+ - spec/dummy/app/validators/user_validator.rb
117
157
  - spec/dummy/app/views/layouts/application.html.erb
118
158
  - spec/dummy/app/views/users/index.html.erb
119
159
  - spec/dummy/bin/bundle
@@ -147,14 +187,19 @@ files:
147
187
  - spec/dummy/public/500.html
148
188
  - spec/dummy/public/favicon.ico
149
189
  - spec/dummy/public/robots.txt
190
+ - spec/dummy/spec/controllers/users_controller_spec.rb
150
191
  - spec/dummy/spec/features/users_spec.rb
151
192
  - spec/dummy/spec/integration/logger_spec.rb
193
+ - spec/dummy/spec/integration/user_commands_spec.rb
152
194
  - spec/dummy/spec/integration/user_model_mapping_spec.rb
195
+ - spec/dummy/spec/integration/user_params_spec.rb
153
196
  - spec/dummy/vendor/assets/javascripts/.keep
154
197
  - spec/dummy/vendor/assets/stylesheets/.keep
198
+ - spec/lib/generators/commands_generator_spec.rb
199
+ - spec/lib/generators/mapper_generator_spec.rb
200
+ - spec/lib/generators/relation_generator_spec.rb
155
201
  - spec/spec_helper.rb
156
- - spec/unit/configuration_spec.rb
157
- homepage: ''
202
+ homepage: http://rom-rb.org
158
203
  licenses:
159
204
  - MIT
160
205
  metadata: {}
@@ -191,7 +236,9 @@ test_files:
191
236
  - spec/dummy/app/mappers/users.rb
192
237
  - spec/dummy/app/models/.keep
193
238
  - spec/dummy/app/models/user.rb
239
+ - spec/dummy/app/params/user_params.rb
194
240
  - spec/dummy/app/relations/users.rb
241
+ - spec/dummy/app/validators/user_validator.rb
195
242
  - spec/dummy/app/views/layouts/application.html.erb
196
243
  - spec/dummy/app/views/users/index.html.erb
197
244
  - spec/dummy/bin/bundle
@@ -225,10 +272,16 @@ test_files:
225
272
  - spec/dummy/public/500.html
226
273
  - spec/dummy/public/favicon.ico
227
274
  - spec/dummy/public/robots.txt
275
+ - spec/dummy/spec/controllers/users_controller_spec.rb
228
276
  - spec/dummy/spec/features/users_spec.rb
229
277
  - spec/dummy/spec/integration/logger_spec.rb
278
+ - spec/dummy/spec/integration/user_commands_spec.rb
230
279
  - spec/dummy/spec/integration/user_model_mapping_spec.rb
280
+ - spec/dummy/spec/integration/user_params_spec.rb
231
281
  - spec/dummy/vendor/assets/javascripts/.keep
232
282
  - spec/dummy/vendor/assets/stylesheets/.keep
283
+ - spec/lib/generators/commands_generator_spec.rb
284
+ - spec/lib/generators/mapper_generator_spec.rb
285
+ - spec/lib/generators/relation_generator_spec.rb
233
286
  - spec/spec_helper.rb
234
- - spec/unit/configuration_spec.rb
287
+ has_rdoc:
@@ -1,8 +0,0 @@
1
- module ROM
2
- module Rails
3
- end
4
- end
5
-
6
- require "rom/rails/version"
7
- require "rom/rails/railtie"
8
- require "rom"
@@ -1,39 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ROM::Rails::Configuration do
4
- let(:root) { '/somewhere' }
5
-
6
- describe '.rewrite_config' do
7
- it 'rewrites database config hash to a URI for sqlite' do
8
- db_config = { adapter: 'sqlite', database: 'testing.sqlite' }
9
-
10
- config = ROM::Rails::Configuration.rewrite_config(root, db_config)
11
-
12
- expect(config).to eql(default: "sqlite:///somewhere/testing.sqlite")
13
- end
14
-
15
- it 'rewrites database config hash to a URI for postgres' do
16
- db_config = {
17
- adapter: 'postgres',
18
- database: 'testing',
19
- username: 'piotr',
20
- hostname: 'localhost',
21
- password: 'secret'
22
- }
23
-
24
- config = ROM::Rails::Configuration.rewrite_config(root, db_config)
25
-
26
- expect(config).to eql(default: "postgres://piotr:secret@localhost/testing")
27
-
28
- db_config = {
29
- adapter: 'postgres',
30
- database: 'testing'
31
- }
32
-
33
- config = ROM::Rails::Configuration.rewrite_config(root, db_config)
34
-
35
- expect(config).to eql(default: "postgres://localhost/testing")
36
- end
37
- end
38
-
39
- end