rom 0.2.0 → 0.3.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 (175) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -3
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +13 -14
  5. data/{Changelog.md → CHANGELOG.md} +12 -3
  6. data/Gemfile +14 -10
  7. data/Gemfile.devtools +16 -16
  8. data/Guardfile +2 -5
  9. data/README.md +68 -56
  10. data/Rakefile +3 -3
  11. data/config/flay.yml +2 -2
  12. data/config/mutant.yml +2 -4
  13. data/config/rubocop.yml +30 -0
  14. data/lib/rom.rb +47 -9
  15. data/lib/rom/adapter.rb +52 -0
  16. data/lib/rom/adapter/memory.rb +70 -0
  17. data/lib/rom/boot.rb +158 -0
  18. data/lib/rom/boot/base_relation_dsl.rb +43 -0
  19. data/lib/rom/boot/dsl.rb +30 -0
  20. data/lib/rom/boot/mapper_dsl.rb +23 -0
  21. data/lib/rom/boot/relation_dsl.rb +23 -0
  22. data/lib/rom/boot/schema_dsl.rb +27 -0
  23. data/lib/rom/env.rb +48 -0
  24. data/lib/rom/header.rb +123 -0
  25. data/lib/rom/mapper.rb +38 -153
  26. data/lib/rom/mapper_builder.rb +85 -0
  27. data/lib/rom/model_builder.rb +58 -0
  28. data/lib/rom/ra.rb +196 -0
  29. data/lib/rom/ra/operation/group.rb +49 -0
  30. data/lib/rom/ra/operation/join.rb +41 -0
  31. data/lib/rom/ra/operation/wrap.rb +45 -0
  32. data/lib/rom/reader.rb +62 -0
  33. data/lib/rom/reader_builder.rb +28 -0
  34. data/lib/rom/relation.rb +41 -350
  35. data/lib/rom/relation_builder.rb +48 -0
  36. data/lib/rom/repository.rb +28 -53
  37. data/lib/rom/support/registry.rb +34 -0
  38. data/lib/rom/version.rb +3 -0
  39. data/rom.gemspec +12 -10
  40. data/spec/integration/adapters/extending_relations_spec.rb +43 -0
  41. data/spec/integration/mappers/definition_dsl_spec.rb +82 -0
  42. data/spec/integration/mappers/prefixing_attributes_spec.rb +42 -0
  43. data/spec/integration/mappers/renaming_attributes_spec.rb +138 -0
  44. data/spec/integration/ra/group_spec.rb +47 -0
  45. data/spec/integration/ra/join_spec.rb +24 -0
  46. data/spec/integration/ra/wrap_spec.rb +37 -0
  47. data/spec/integration/relations/reading_spec.rb +116 -0
  48. data/spec/integration/relations/registry_dsl_spec.rb +44 -0
  49. data/spec/integration/schema_spec.rb +29 -0
  50. data/spec/integration/setup_spec.rb +18 -0
  51. data/spec/shared/users_and_tasks.rb +34 -0
  52. data/spec/spec_helper.rb +14 -36
  53. data/spec/unit/rom/adapter_spec.rb +59 -0
  54. data/spec/unit/rom/header_spec.rb +58 -0
  55. data/spec/unit/rom/mapper_spec.rb +27 -0
  56. data/spec/unit/rom/ra/operation/group_spec.rb +55 -0
  57. data/spec/unit/rom/ra/operation/wrap_spec.rb +29 -0
  58. data/spec/unit/rom/relation_spec.rb +34 -0
  59. metadata +122 -190
  60. data/lib/rom/constants.rb +0 -16
  61. data/lib/rom/environment.rb +0 -105
  62. data/lib/rom/environment/builder.rb +0 -71
  63. data/lib/rom/mapper/attribute.rb +0 -108
  64. data/lib/rom/mapper/builder.rb +0 -58
  65. data/lib/rom/mapper/builder/definition.rb +0 -162
  66. data/lib/rom/mapper/header.rb +0 -103
  67. data/lib/rom/mapper/loader_builder.rb +0 -26
  68. data/lib/rom/schema.rb +0 -21
  69. data/lib/rom/schema/builder.rb +0 -59
  70. data/lib/rom/schema/definition.rb +0 -84
  71. data/lib/rom/schema/definition/relation.rb +0 -80
  72. data/lib/rom/schema/definition/relation/base.rb +0 -27
  73. data/lib/rom/session.rb +0 -111
  74. data/lib/rom/session/environment.rb +0 -67
  75. data/lib/rom/session/identity_map.rb +0 -43
  76. data/lib/rom/session/mapper.rb +0 -62
  77. data/lib/rom/session/relation.rb +0 -140
  78. data/lib/rom/session/state.rb +0 -59
  79. data/lib/rom/session/state/created.rb +0 -22
  80. data/lib/rom/session/state/deleted.rb +0 -25
  81. data/lib/rom/session/state/persisted.rb +0 -34
  82. data/lib/rom/session/state/transient.rb +0 -20
  83. data/lib/rom/session/state/updated.rb +0 -29
  84. data/lib/rom/session/tracker.rb +0 -62
  85. data/lib/rom/support/axiom/adapter.rb +0 -111
  86. data/lib/rom/support/axiom/adapter/data_objects.rb +0 -38
  87. data/lib/rom/support/axiom/adapter/memory.rb +0 -25
  88. data/lib/rom/support/axiom/adapter/postgres.rb +0 -19
  89. data/lib/rom/support/axiom/adapter/sqlite3.rb +0 -20
  90. data/lib/version.rb +0 -3
  91. data/spec/integration/environment_setup_spec.rb +0 -24
  92. data/spec/integration/grouped_mappers_spec.rb +0 -87
  93. data/spec/integration/join_and_group_spec.rb +0 -76
  94. data/spec/integration/join_and_wrap_spec.rb +0 -68
  95. data/spec/integration/mapping_embedded_relations_spec.rb +0 -73
  96. data/spec/integration/mapping_relations_spec.rb +0 -120
  97. data/spec/integration/schema_definition_spec.rb +0 -152
  98. data/spec/integration/session_spec.rb +0 -87
  99. data/spec/integration/wrapped_mappers_spec.rb +0 -73
  100. data/spec/shared/unit/environment_context.rb +0 -6
  101. data/spec/shared/unit/loader.rb +0 -11
  102. data/spec/shared/unit/loader_identity.rb +0 -13
  103. data/spec/shared/unit/mapper_context.rb +0 -11
  104. data/spec/shared/unit/relation_context.rb +0 -82
  105. data/spec/shared/unit/session_environment_context.rb +0 -11
  106. data/spec/shared/unit/session_relation_context.rb +0 -18
  107. data/spec/support/helper.rb +0 -34
  108. data/spec/support/ice_nine_config.rb +0 -10
  109. data/spec/support/test_mapper.rb +0 -110
  110. data/spec/unit/rom/environment/builder/mapping_spec.rb +0 -24
  111. data/spec/unit/rom/environment/builder/schema_spec.rb +0 -33
  112. data/spec/unit/rom/environment/class_methods/setup_spec.rb +0 -18
  113. data/spec/unit/rom/environment/repository_spec.rb +0 -21
  114. data/spec/unit/rom/mapper/attribute/embedded_collection/to_ast_spec.rb +0 -18
  115. data/spec/unit/rom/mapper/attribute/embedded_value/to_ast_spec.rb +0 -16
  116. data/spec/unit/rom/mapper/attribute/rename_spec.rb +0 -9
  117. data/spec/unit/rom/mapper/attribute/to_ast_spec.rb +0 -9
  118. data/spec/unit/rom/mapper/builder/class_methods/call_spec.rb +0 -61
  119. data/spec/unit/rom/mapper/class_methods/build_spec.rb +0 -55
  120. data/spec/unit/rom/mapper/dump_spec.rb +0 -11
  121. data/spec/unit/rom/mapper/group_spec.rb +0 -35
  122. data/spec/unit/rom/mapper/header/each_spec.rb +0 -26
  123. data/spec/unit/rom/mapper/header/element_reader_spec.rb +0 -21
  124. data/spec/unit/rom/mapper/header/group_spec.rb +0 -18
  125. data/spec/unit/rom/mapper/header/join_spec.rb +0 -14
  126. data/spec/unit/rom/mapper/header/keys_spec.rb +0 -29
  127. data/spec/unit/rom/mapper/header/project_spec.rb +0 -13
  128. data/spec/unit/rom/mapper/header/rename_spec.rb +0 -11
  129. data/spec/unit/rom/mapper/header/to_ast_spec.rb +0 -11
  130. data/spec/unit/rom/mapper/header/wrap_spec.rb +0 -18
  131. data/spec/unit/rom/mapper/identity_from_tuple_spec.rb +0 -11
  132. data/spec/unit/rom/mapper/identity_spec.rb +0 -11
  133. data/spec/unit/rom/mapper/join_spec.rb +0 -15
  134. data/spec/unit/rom/mapper/load_spec.rb +0 -11
  135. data/spec/unit/rom/mapper/new_object_spec.rb +0 -14
  136. data/spec/unit/rom/mapper/project_spec.rb +0 -11
  137. data/spec/unit/rom/mapper/rename_spec.rb +0 -16
  138. data/spec/unit/rom/mapper/wrap_spec.rb +0 -35
  139. data/spec/unit/rom/relation/delete_spec.rb +0 -15
  140. data/spec/unit/rom/relation/drop_spec.rb +0 -11
  141. data/spec/unit/rom/relation/each_spec.rb +0 -23
  142. data/spec/unit/rom/relation/first_spec.rb +0 -19
  143. data/spec/unit/rom/relation/group_spec.rb +0 -29
  144. data/spec/unit/rom/relation/inject_mapper_spec.rb +0 -17
  145. data/spec/unit/rom/relation/insert_spec.rb +0 -13
  146. data/spec/unit/rom/relation/last_spec.rb +0 -19
  147. data/spec/unit/rom/relation/one_spec.rb +0 -49
  148. data/spec/unit/rom/relation/rename_spec.rb +0 -21
  149. data/spec/unit/rom/relation/replace_spec.rb +0 -13
  150. data/spec/unit/rom/relation/restrict_spec.rb +0 -25
  151. data/spec/unit/rom/relation/sort_by_spec.rb +0 -25
  152. data/spec/unit/rom/relation/take_spec.rb +0 -11
  153. data/spec/unit/rom/relation/to_a_spec.rb +0 -20
  154. data/spec/unit/rom/relation/update_spec.rb +0 -25
  155. data/spec/unit/rom/relation/wrap_spec.rb +0 -29
  156. data/spec/unit/rom/repository/class_methods/build_spec.rb +0 -27
  157. data/spec/unit/rom/repository/element_reader_spec.rb +0 -21
  158. data/spec/unit/rom/repository/element_writer_spec.rb +0 -18
  159. data/spec/unit/rom/schema/builder/class_methods/build_spec.rb +0 -103
  160. data/spec/unit/rom/schema/element_reader_spec.rb +0 -15
  161. data/spec/unit/rom/session/class_methods/start_spec.rb +0 -23
  162. data/spec/unit/rom/session/clean_predicate_spec.rb +0 -21
  163. data/spec/unit/rom/session/environment/element_reader_spec.rb +0 -13
  164. data/spec/unit/rom/session/flush_spec.rb +0 -58
  165. data/spec/unit/rom/session/mapper/load_spec.rb +0 -47
  166. data/spec/unit/rom/session/relation/delete_spec.rb +0 -28
  167. data/spec/unit/rom/session/relation/dirty_predicate_spec.rb +0 -35
  168. data/spec/unit/rom/session/relation/identity_spec.rb +0 -11
  169. data/spec/unit/rom/session/relation/new_spec.rb +0 -50
  170. data/spec/unit/rom/session/relation/save_spec.rb +0 -50
  171. data/spec/unit/rom/session/relation/state_spec.rb +0 -23
  172. data/spec/unit/rom/session/relation/track_spec.rb +0 -23
  173. data/spec/unit/rom/session/relation/tracking_predicate_spec.rb +0 -23
  174. data/spec/unit/rom/session/relation/update_attributes_spec.rb +0 -45
  175. data/spec/unit/rom/session/state_spec.rb +0 -79
@@ -1,76 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe 'Joining and grouping relations' do
6
- let(:env) do
7
- Environment.setup(test: 'memory://test') do
8
- schema do
9
- base_relation :users do
10
- repository :test
11
-
12
- attribute :user_id, Integer
13
- attribute :name, String
14
-
15
- key :user_id
16
- end
17
-
18
- base_relation :tasks do
19
- repository :test
20
-
21
- attribute :id, Integer
22
- attribute :user_id, Integer
23
- attribute :title, String
24
-
25
- key :id
26
- end
27
- end
28
-
29
- mapping do
30
- relation(:users) do
31
- model User
32
- map :user_id, :name
33
- end
34
-
35
- relation(:tasks) do
36
- model Task
37
- map :id, :user_id, :title
38
- end
39
- end
40
- end
41
- end
42
-
43
- before do
44
- User = mock_model(:user_id, :name, :tasks)
45
- Task = mock_model(:id, :user_id, :title)
46
-
47
- env.schema[:users].insert([[1, 'Jane']])
48
- env.schema[:tasks].insert([[2, 1, 'Task 1'], [3, 1, 'Task 2']])
49
- end
50
-
51
- after do
52
- Object.send(:remove_const, :User) if defined?(User)
53
- Object.send(:remove_const, :Task) if defined?(Task)
54
- end
55
-
56
- specify 'loading a user with grouped tasks' do
57
- users = env[:users]
58
- tasks = env[:tasks]
59
-
60
- loaded_user = users.join(tasks).group(:tasks => tasks).project([:user_id, :name, :tasks]).one
61
-
62
- tuple = {
63
- :name => 'Jane',
64
- :tasks => [
65
- { :id => 2, :user_id => 1, :title => 'Task 1' },
66
- { :id => 3, :user_id => 1, :title => 'Task 2' }
67
- ]
68
- }
69
-
70
- task1 = Task.new(tuple[:tasks].first)
71
- task2 = Task.new(tuple[:tasks].last)
72
- user = User.new(:name => tuple[:name], :tasks => [task1, task2])
73
-
74
- expect(loaded_user).to eql(user)
75
- end
76
- end
@@ -1,68 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe 'Joining and wrapping relations' do
6
- let(:env) {
7
- Environment.setup(test: 'memory://test') do
8
- schema do
9
- base_relation :users do
10
- repository :test
11
-
12
- attribute :user_id, Integer
13
- attribute :name, String
14
-
15
- key :id
16
- end
17
-
18
- base_relation :tasks do
19
- repository :test
20
-
21
- attribute :id, Integer
22
- attribute :user_id, Integer
23
- attribute :title, String
24
-
25
- key :id
26
- end
27
- end
28
-
29
- mapping do
30
- relation(:users) do
31
- model User
32
- map :user_id, :name
33
- end
34
-
35
- relation(:tasks) do
36
- model Task
37
- map :id, :user_id, :title
38
- end
39
- end
40
- end
41
- }
42
-
43
- before do
44
- User = mock_model(:user_id, :name)
45
- Task = mock_model(:id, :user_id, :title, :user)
46
-
47
- env.schema[:users].insert([[2, 'Jane']])
48
- env.schema[:tasks].insert([[1, 2, 'Task 1']])
49
- end
50
-
51
- after do
52
- Object.send(:remove_const, :User) if defined?(User)
53
- Object.send(:remove_const, :Task) if defined?(Task)
54
- end
55
-
56
- subject(:mapper) { env[:tasks].mapper.wrap(:user => env[:users].mapper) }
57
-
58
- specify 'loading a task with wrapped user' do
59
- loaded_task = env[:tasks].join(env[:users]).wrap(:user => env[:users]).project([:id, :title, :user]).one
60
-
61
- tuple = { :id => 1, :user_id => 2, :title => 'Task 1', :user => { :user_id => 2, :name => 'Jane' } }
62
-
63
- user = User.new(tuple[:user])
64
- task = Task.new(:id => tuple[:id], :title => tuple[:title], :user => user)
65
-
66
- expect(loaded_task).to eql(task)
67
- end
68
- end
@@ -1,73 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe 'Defining relation mappings' do
6
- let!(:schema) {
7
- env.schema {
8
- base_relation :users do
9
- repository :test
10
-
11
- attribute :id, Integer
12
- attribute :name, String
13
-
14
- key :id
15
- end
16
-
17
- base_relation :tasks do
18
- repository :test
19
-
20
- attribute :id, Integer
21
- attribute :title, String
22
-
23
- wrap user: users.header
24
-
25
- key :id
26
- end
27
- }
28
- }
29
-
30
- let!(:env) {
31
- Environment.setup(test: 'memory://test')
32
- }
33
-
34
- before do
35
- User = mock_model(:id, :name)
36
- Task = mock_model(:id, :title)
37
- end
38
-
39
- after do
40
- Object.send(:remove_const, :User)
41
- Object.send(:remove_const, :Task)
42
- end
43
-
44
- specify 'building registry of automatically mapped relations' do
45
- pending "IMPLEMENT ME"
46
-
47
- env.mapping do
48
- users do
49
- model User
50
-
51
- map :id
52
- map :name
53
- end
54
-
55
- tasks do
56
- model Task
57
-
58
- map :id
59
- map :name
60
- map :user, model: User
61
- end
62
- end
63
-
64
- tasks = env[:tasks]
65
-
66
- user = User.new(id: 1, name: 'Jane')
67
- task = Task.new(id: 1, title: 'Test', user: user)
68
-
69
- tasks.insert(task)
70
-
71
- expect(tasks.to_a).to eql([task])
72
- end
73
- end
@@ -1,120 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe 'Defining relation mappings' do
6
- let!(:schema) {
7
- env.schema {
8
- base_relation :users do
9
- repository :test
10
-
11
- attribute :id, Integer
12
- attribute :user_name, String, rename: :name
13
- attribute :user_age, Integer
14
-
15
- key :id
16
- end
17
- }
18
- }
19
-
20
- let!(:env) {
21
- Environment.setup(test: 'memory://test')
22
- }
23
-
24
- specify 'building registry of automatically mapped relations' do
25
- UserWithReaders = Class.new { attr_reader :id, :name, :age; include Equalizer.new(:id, :name, :age) }
26
-
27
- env.mapping do
28
- relation(:users) do
29
- model UserWithReaders
30
- map :id, :name
31
- map :age, from: :user_age
32
- end
33
- end
34
-
35
- users = env.finalize[:users]
36
-
37
- jane = UserWithReaders.new
38
- jane.instance_variable_set("@id", 1)
39
- jane.instance_variable_set("@name", "Jane")
40
- jane.instance_variable_set("@age", 30)
41
-
42
- users.insert(jane)
43
-
44
- expect(users.to_a).to eql([jane])
45
- end
46
-
47
- specify 'setting :attribute_hash loader strategy' do
48
- AnimaUser = Class.new { include Anima.new(:id, :name, :age) }
49
-
50
- env.mapping do
51
- relation(:users) do
52
- model AnimaUser
53
- loader :attribute_hash
54
- map :id, :name
55
- map :age, from: :user_age
56
- end
57
- end
58
-
59
- users = env.finalize[:users]
60
-
61
- jane = AnimaUser.new(id: 1, name: 'Jane', age: 30)
62
-
63
- users.insert(jane)
64
-
65
- expect(users.to_a).to eql([jane])
66
- end
67
-
68
- specify 'setting :attribute_writers loader strategy' do
69
- UserWithAccessors = Class.new {
70
- include Equalizer.new(:id, :name, :age)
71
- attr_accessor :name, :age
72
- attr_reader :id_set, :id
73
-
74
- def id=(id)
75
- @id_set = true
76
- @id = id
77
- end
78
- }
79
-
80
- env.mapping do
81
- relation(:users) do
82
- model UserWithAccessors
83
- loader :attribute_accessors
84
- map :id, :name
85
- map :age, from: :user_age
86
- end
87
- end
88
-
89
- users = env.finalize[:users]
90
-
91
- jane = UserWithAccessors.new
92
- jane.id = 1
93
- jane.name = 'Jane'
94
- jane.age = 30
95
-
96
- users.insert(jane)
97
-
98
- expect(users.to_a).to eql([jane])
99
- expect(jane.id_set).to be(true)
100
- end
101
-
102
- specify 'providing custom mapper' do
103
- custom_model = mock_model(:id, :name, :user_age)
104
- custom_mapper = TestMapper.new(schema[:users].header, custom_model)
105
-
106
- env.mapping do
107
- relation(:users) do
108
- mapper(custom_mapper)
109
- end
110
- end
111
-
112
- users = env.finalize[:users]
113
-
114
- jane = custom_model.new(id: 1, name: 'Jane', user_age: 30)
115
-
116
- users.insert(jane)
117
-
118
- expect(users.to_a).to eql([jane])
119
- end
120
- end
@@ -1,152 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- describe 'Defining a ROM schema' do
6
- let(:people) {
7
- Axiom::Relation::Base.new(:people, people_header)
8
- }
9
-
10
- let(:people_with_address) {
11
- Axiom::Relation::Base.new(:people, people_header).wrap(
12
- address: addresses.header
13
- )
14
- }
15
-
16
- let(:people_with_profiles) {
17
- Axiom::Relation::Base.new(:people, people_header).group(
18
- profiles: profiles.header
19
- )
20
- }
21
-
22
- let(:addresses) {
23
- Axiom::Relation::Base.new(
24
- :addresses,
25
- [[:id, Integer], [:street, String], [:city, String], [:zipcode, String]]
26
- )
27
- }
28
-
29
- let(:people_header) {
30
- Axiom::Relation::Header.coerce(people_attributes, keys: people_keys)
31
- }
32
-
33
- let(:people_attributes) {
34
- [[:id, Integer], [:name, String]]
35
- }
36
-
37
- let(:people_keys) {
38
- [:id]
39
- }
40
-
41
- let(:profiles) {
42
- Axiom::Relation::Base.new(:profiles, profiles_header)
43
- }
44
-
45
- let(:profiles_header) {
46
- Axiom::Relation::Header.coerce(profiles_attributes, keys: profiles_keys)
47
- }
48
-
49
- let(:profiles_attributes) {
50
- [[:id, Integer], [:person_id, Integer], [:text, String]]
51
- }
52
-
53
- let(:profiles_keys) {
54
- [:id, :person_id]
55
- }
56
-
57
- let(:people_with_joined_profiles) {
58
- people.join(profiles.rename(id: :profile_id, person_id: :id))
59
- }
60
-
61
- let(:env) { Environment.setup(test: 'memory://test') }
62
- let(:repository) { env.repository(:test) }
63
-
64
- let(:schema) do
65
- env.schema do
66
- base_relation :addresses do
67
- repository :test
68
-
69
- attribute :id, Integer
70
- attribute :street, String
71
- attribute :city, String
72
- attribute :zipcode, String
73
- end
74
-
75
- base_relation :people do
76
- repository :test
77
-
78
- attribute :id, Integer
79
- attribute :name, String
80
-
81
- key :id
82
- end
83
-
84
- base_relation :profiles do
85
- repository :test
86
-
87
- attribute :id, Integer
88
- attribute :person_id, Integer
89
- attribute :text, String
90
-
91
- key :id
92
- key :person_id
93
- end
94
-
95
- base_relation :people_with_address do
96
- repository :test
97
-
98
- attribute :id, Integer
99
- attribute :name, String
100
-
101
- wrap address: addresses.header
102
-
103
- key :id
104
- end
105
-
106
- base_relation :people_with_profiles do
107
- repository :test
108
-
109
- attribute :id, Integer
110
- attribute :name, String
111
-
112
- group profiles: profiles.header
113
-
114
- key :id
115
- end
116
- end
117
-
118
- env.schema do
119
- relation :people_with_joined_profiles do
120
- people.join(profiles.rename(id: :profile_id, person_id: :id))
121
- end
122
- end
123
- end
124
-
125
- it 'registers the people relation' do
126
- expect(schema[:people]).to eq(people)
127
- end
128
-
129
- it 'registers the people with wrapped addresses relation' do
130
- expect(schema[:people_with_address]).to eq(people_with_address)
131
- end
132
-
133
- it 'registers the people with grouped profiles relation' do
134
- expect(schema[:people_with_profiles]).to eq(people_with_profiles)
135
- end
136
-
137
- it 'establishes key attributes for people relation' do
138
- expect(schema[:people].header.keys).to include(*people_keys)
139
- end
140
-
141
- it 'establishes key attributes for profiles relation' do
142
- expect(schema[:profiles].header.keys).to include(*profiles_keys)
143
- end
144
-
145
- it 'registers the profiles relation' do
146
- expect(schema[:profiles]).to eq(profiles)
147
- end
148
-
149
- it 'registers the people_with_joined_profile relation' do
150
- expect(schema[:people_with_joined_profiles]).to eq(people_with_joined_profiles)
151
- end
152
- end