rom-rails 0.1.0 → 0.2.0

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 (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