rexport 1.2.1 → 1.4.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.
- checksums.yaml +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +13 -0
- data/Rakefile +3 -8
- data/app/helpers/exports_helper.rb +38 -16
- data/app/views/exports/_rexport_model.html.erb +2 -2
- data/config/routes.rb +4 -2
- data/lib/rexport/data_field.rb +27 -6
- data/lib/rexport/data_fields.rb +8 -11
- data/lib/rexport/export_filter_methods.rb +11 -8
- data/lib/rexport/export_filters_controller_methods.rb +2 -0
- data/lib/rexport/export_item_methods.rb +6 -4
- data/lib/rexport/export_item_sortings_controller_methods.rb +3 -1
- data/lib/rexport/export_items_controller_methods.rb +3 -1
- data/lib/rexport/export_methods.rb +53 -41
- data/lib/rexport/exports_controller_methods.rb +10 -10
- data/lib/rexport/formatter.rb +18 -0
- data/lib/rexport/rexport_model.rb +33 -37
- data/lib/rexport/tree_node.rb +5 -2
- data/lib/rexport/version.rb +3 -1
- data/lib/rexport.rb +15 -12
- metadata +12 -68
- data/README.rdoc +0 -17
- data/test/factories.rb +0 -111
- data/test/test_helper.rb +0 -167
- data/test/unit/data_field_test.rb +0 -25
- data/test/unit/data_fields_test.rb +0 -75
- data/test/unit/export_filter_methods_test.rb +0 -37
- data/test/unit/export_item_methods_test.rb +0 -21
- data/test/unit/export_methods_test.rb +0 -226
- data/test/unit/rexport_model_test.rb +0 -137
- data/test/unit/tree_node_test.rb +0 -43
@@ -1,15 +1,19 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Rexport # :nodoc:
|
2
4
|
class RexportModel
|
3
5
|
attr_accessor :klass, :path
|
4
6
|
|
7
|
+
delegate :name, to: :klass
|
8
|
+
|
5
9
|
def initialize(klass, path: nil)
|
6
10
|
self.klass = klass
|
7
|
-
self.path = path
|
11
|
+
self.path = path&.to_s
|
8
12
|
initialize_rexport_fields
|
9
13
|
end
|
10
14
|
|
11
15
|
def rexport_fields
|
12
|
-
@rexport_fields ||= HashWithIndifferentAccess.new
|
16
|
+
@rexport_fields ||= ActiveSupport::HashWithIndifferentAccess.new
|
13
17
|
end
|
14
18
|
|
15
19
|
def rexport_fields_array
|
@@ -17,7 +21,7 @@ module Rexport #:nodoc:
|
|
17
21
|
end
|
18
22
|
|
19
23
|
def field_path(field_name)
|
20
|
-
[path, field_name].compact *
|
24
|
+
[path, field_name].compact * "."
|
21
25
|
end
|
22
26
|
|
23
27
|
def collection_from_association(association)
|
@@ -29,13 +33,7 @@ module Rexport #:nodoc:
|
|
29
33
|
end
|
30
34
|
|
31
35
|
def filter_column(field)
|
32
|
-
|
33
|
-
association = field.method.split('.').first
|
34
|
-
klass.reflect_on_association(association.to_sym).foreign_key
|
35
|
-
end
|
36
|
-
|
37
|
-
def name
|
38
|
-
klass.name
|
36
|
+
foreign_key_for(field.association_name) || field.method
|
39
37
|
end
|
40
38
|
|
41
39
|
# Adds a data item to rexport_fields
|
@@ -55,33 +53,23 @@ module Rexport #:nodoc:
|
|
55
53
|
# :filter - if true will send type: :association to add_report_field
|
56
54
|
def add_association_methods(options = {})
|
57
55
|
options.stringify_keys!
|
58
|
-
options.assert_valid_keys(%w
|
59
|
-
|
60
|
-
methods = options.reverse_merge('methods' => 'name')['methods']
|
61
|
-
methods = [methods] if methods.kind_of?(String)
|
62
|
-
|
63
|
-
associations = options['associations']
|
64
|
-
associations = [associations] if associations.kind_of?(String)
|
56
|
+
options.assert_valid_keys(%w[associations methods filter])
|
65
57
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
end
|
72
|
-
end
|
58
|
+
add_rexport_fields_for(
|
59
|
+
associations: [options["associations"]].flatten,
|
60
|
+
methods: [options["methods"] || "name"].flatten,
|
61
|
+
type: (options["filter"] ? :association : nil)
|
62
|
+
)
|
73
63
|
end
|
74
64
|
|
75
65
|
# Returns an array of export methods corresponding with field_names
|
76
66
|
def get_rexport_methods(*field_names)
|
77
67
|
field_names.flatten.map do |f|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
'undefined_rexport_field'
|
84
|
-
end
|
68
|
+
components = f.to_s.split(".")
|
69
|
+
field_name = components.pop
|
70
|
+
components.push(get_rexport_model(components).get_rexport_method(field_name)) * "."
|
71
|
+
rescue NoMethodError
|
72
|
+
"undefined_rexport_field"
|
85
73
|
end
|
86
74
|
end
|
87
75
|
|
@@ -101,15 +89,23 @@ module Rexport #:nodoc:
|
|
101
89
|
|
102
90
|
# Returns the export method for a given field_name
|
103
91
|
def get_rexport_method(field_name)
|
104
|
-
|
105
|
-
rexport_fields[field_name].method
|
106
|
-
else
|
107
|
-
raise NoMethodError
|
108
|
-
end
|
92
|
+
rexport_fields[field_name]&.method || raise(NoMethodError)
|
109
93
|
end
|
110
94
|
|
111
95
|
private
|
112
96
|
|
97
|
+
def add_rexport_fields_for(associations:, methods:, type:)
|
98
|
+
associations.each do |association|
|
99
|
+
methods.each do |method|
|
100
|
+
add_rexport_field("#{association}_#{method}", method: "#{association}.#{method}", type: type)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def foreign_key_for(association_name)
|
106
|
+
klass.reflect_on_association(association_name).foreign_key if association_name.present?
|
107
|
+
end
|
108
|
+
|
113
109
|
def initialize_rexport_fields
|
114
110
|
klass.content_columns.each { |field| add_rexport_field(field.name, type: field.type) }
|
115
111
|
klass.initialize_local_rexport_fields(self) if klass.respond_to?(:initialize_local_rexport_fields)
|
data/lib/rexport/tree_node.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Rexport # :nodoc:
|
2
4
|
# A basic tree for building up ActiveRecord find :include parameters
|
3
5
|
class TreeNode
|
4
6
|
attr_accessor :name, :children
|
@@ -13,7 +15,8 @@ module Rexport #:nodoc:
|
|
13
15
|
# Add one or more children to the tree
|
14
16
|
def add_child(*names)
|
15
17
|
names.flatten!
|
16
|
-
return unless name = names.shift
|
18
|
+
return unless (name = names.shift)
|
19
|
+
|
17
20
|
node = children.find { |c| c.name == name }
|
18
21
|
node ? node.add_child(names) : (children << TreeNode.new(name, names))
|
19
22
|
end
|
data/lib/rexport/version.rb
CHANGED
data/lib/rexport.rb
CHANGED
@@ -1,19 +1,22 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rexport/data_field"
|
4
|
+
require "rexport/data_fields"
|
5
|
+
require "rexport/export_filter_methods"
|
6
|
+
require "rexport/export_filters_controller_methods"
|
7
|
+
require "rexport/export_item_methods"
|
8
|
+
require "rexport/export_item_sortings_controller_methods"
|
9
|
+
require "rexport/export_items_controller_methods"
|
10
|
+
require "rexport/export_methods"
|
11
|
+
require "rexport/exports_controller_methods"
|
12
|
+
require "rexport/formatter"
|
13
|
+
require "rexport/rexport_model"
|
14
|
+
require "rexport/tree_node"
|
12
15
|
|
13
16
|
module Rexport
|
14
17
|
SAMPLE_SIZE = 5
|
15
18
|
|
16
19
|
class Engine < ::Rails::Engine
|
17
|
-
config.paths[
|
20
|
+
config.paths["app/views"] << File.join(File.dirname(__FILE__), "../app/views")
|
18
21
|
end
|
19
22
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rexport
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Baldwin
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-03-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -25,58 +25,16 @@ dependencies:
|
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: 6.0.3
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: factory_bot
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - "~>"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '6.2'
|
35
|
-
type: :development
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '6.2'
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: sqlite3
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - "~>"
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '1.4'
|
49
|
-
type: :development
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - "~>"
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '1.4'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: mocha
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - "~>"
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '1.13'
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - "~>"
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '1.13'
|
70
28
|
description: Rexport integrates into a Rails application making model data available
|
71
29
|
for export into CSV files.
|
72
30
|
email:
|
73
|
-
-
|
31
|
+
- baldwina@brightwayslearning.org
|
74
32
|
executables: []
|
75
33
|
extensions: []
|
76
34
|
extra_rdoc_files: []
|
77
35
|
files:
|
78
36
|
- MIT-LICENSE
|
79
|
-
- README.
|
37
|
+
- README.md
|
80
38
|
- Rakefile
|
81
39
|
- app/helpers/exports_helper.rb
|
82
40
|
- app/views/export_filters/_export_filter.html.erb
|
@@ -104,22 +62,17 @@ files:
|
|
104
62
|
- lib/rexport/export_items_controller_methods.rb
|
105
63
|
- lib/rexport/export_methods.rb
|
106
64
|
- lib/rexport/exports_controller_methods.rb
|
65
|
+
- lib/rexport/formatter.rb
|
107
66
|
- lib/rexport/rexport_model.rb
|
108
67
|
- lib/rexport/tree_node.rb
|
109
68
|
- lib/rexport/version.rb
|
110
|
-
- test/factories.rb
|
111
|
-
- test/test_helper.rb
|
112
|
-
- test/unit/data_field_test.rb
|
113
|
-
- test/unit/data_fields_test.rb
|
114
|
-
- test/unit/export_filter_methods_test.rb
|
115
|
-
- test/unit/export_item_methods_test.rb
|
116
|
-
- test/unit/export_methods_test.rb
|
117
|
-
- test/unit/rexport_model_test.rb
|
118
|
-
- test/unit/tree_node_test.rb
|
119
69
|
homepage: https://github.com/wwidea/rexport
|
120
70
|
licenses:
|
121
71
|
- MIT
|
122
|
-
metadata:
|
72
|
+
metadata:
|
73
|
+
homepage_uri: https://github.com/wwidea/rexport
|
74
|
+
source_code_uri: https://github.com/wwidea/rexport
|
75
|
+
rubygems_mfa_required: 'true'
|
123
76
|
post_install_message:
|
124
77
|
rdoc_options: []
|
125
78
|
require_paths:
|
@@ -128,24 +81,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
128
81
|
requirements:
|
129
82
|
- - ">="
|
130
83
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
84
|
+
version: 2.7.0
|
132
85
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
86
|
requirements:
|
134
87
|
- - ">="
|
135
88
|
- !ruby/object:Gem::Version
|
136
89
|
version: '0'
|
137
90
|
requirements: []
|
138
|
-
rubygems_version: 3.
|
91
|
+
rubygems_version: 3.4.5
|
139
92
|
signing_key:
|
140
93
|
specification_version: 4
|
141
94
|
summary: Ruby on Rails gem to manage exports.
|
142
|
-
test_files:
|
143
|
-
- test/factories.rb
|
144
|
-
- test/test_helper.rb
|
145
|
-
- test/unit/data_field_test.rb
|
146
|
-
- test/unit/data_fields_test.rb
|
147
|
-
- test/unit/export_filter_methods_test.rb
|
148
|
-
- test/unit/export_item_methods_test.rb
|
149
|
-
- test/unit/export_methods_test.rb
|
150
|
-
- test/unit/rexport_model_test.rb
|
151
|
-
- test/unit/tree_node_test.rb
|
95
|
+
test_files: []
|
data/README.rdoc
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
=Rexport
|
2
|
-
|
3
|
-
Ruby on Rails gem to manage exports
|
4
|
-
|
5
|
-
|
6
|
-
==Installation
|
7
|
-
1. install gem
|
8
|
-
2. copy migration into application db/migrate folder and run
|
9
|
-
3. create models and mix in corresponding module
|
10
|
-
* export => export_methods
|
11
|
-
* export_item => export_item_methods
|
12
|
-
* export_filter => export_filter_methods
|
13
|
-
|
14
|
-
|
15
|
-
==License
|
16
|
-
|
17
|
-
Copyright (c) 2008-2018 Brightways Learning, released under the MIT license
|
data/test/factories.rb
DELETED
@@ -1,111 +0,0 @@
|
|
1
|
-
module Rexport
|
2
|
-
module Factories
|
3
|
-
|
4
|
-
FactoryBot.define do
|
5
|
-
|
6
|
-
factory :status do
|
7
|
-
name { 'active' }
|
8
|
-
end
|
9
|
-
|
10
|
-
factory :family do
|
11
|
-
name { 'The Sample Family' }
|
12
|
-
end
|
13
|
-
|
14
|
-
factory :student do
|
15
|
-
family { |family| family.association(:family) }
|
16
|
-
name { 'Sammy Sample' }
|
17
|
-
date_of_birth { Date.parse('2008-12-08') }
|
18
|
-
end
|
19
|
-
|
20
|
-
factory :enrollment do
|
21
|
-
status { |status| status.association(:status) }
|
22
|
-
student { |student| student.association(:student) }
|
23
|
-
grade { 1 }
|
24
|
-
updated_at { Time.now }
|
25
|
-
end
|
26
|
-
|
27
|
-
factory :second_grade_enrollment, class: 'Enrollment' do
|
28
|
-
status { |status| status.association(:status) }
|
29
|
-
grade { 2 }
|
30
|
-
end
|
31
|
-
|
32
|
-
factory :export do
|
33
|
-
name { 'Enrollment Export' }
|
34
|
-
model_class_name { 'Enrollment' }
|
35
|
-
export_items do |items|
|
36
|
-
%w(family_name_export_item grade_export_item status_name_export_item bogus_export_item).map do |item|
|
37
|
-
items.association(item)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
factory :filtered_export, class: 'Export' do
|
43
|
-
name { 'Filtered Enrollment Export' }
|
44
|
-
model_class_name { 'Enrollment' }
|
45
|
-
export_items do |items|
|
46
|
-
%w(grade_export_item status_name_export_item).map do |item|
|
47
|
-
items.association(item)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
export_filters do |filters|
|
51
|
-
%w(grade_filter status_filter).map do |filter|
|
52
|
-
filters.association(filter)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
factory :invalid_filtered_export, class: 'Export' do
|
58
|
-
name { 'Invalid Filtered Enrollment Export' }
|
59
|
-
model_class_name { 'Enrollment' }
|
60
|
-
export_items do |items|
|
61
|
-
%w(grade_export_item status_name_export_item).map do |item|
|
62
|
-
items.association(item)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
export_filters do |filters|
|
66
|
-
%w(invalid_filter).map do |filter|
|
67
|
-
filters.association(filter)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
factory :family_name_export_item, class: 'ExportItem' do
|
73
|
-
position { 1 }
|
74
|
-
name { 'Family Name' }
|
75
|
-
rexport_field { 'student.family.name' }
|
76
|
-
end
|
77
|
-
|
78
|
-
factory :grade_export_item, class: 'ExportItem' do
|
79
|
-
position { 2 }
|
80
|
-
rexport_field { 'grade' }
|
81
|
-
end
|
82
|
-
|
83
|
-
factory :status_name_export_item, class: 'ExportItem' do
|
84
|
-
position { 3 }
|
85
|
-
name { 'Status' }
|
86
|
-
rexport_field { 'status_name' }
|
87
|
-
end
|
88
|
-
|
89
|
-
factory :bogus_export_item, class: 'ExportItem' do
|
90
|
-
position { 4 }
|
91
|
-
name { 'Bogus Item' }
|
92
|
-
rexport_field { 'bogus_field' }
|
93
|
-
end
|
94
|
-
|
95
|
-
factory :grade_filter, class: 'ExportFilter' do
|
96
|
-
filter_field { 'grade' }
|
97
|
-
value { '1' }
|
98
|
-
end
|
99
|
-
|
100
|
-
factory :status_filter, class: 'ExportFilter' do
|
101
|
-
filter_field { 'status.name' }
|
102
|
-
value { 'active' }
|
103
|
-
end
|
104
|
-
|
105
|
-
factory :invalid_filter, class: 'ExportFilter' do
|
106
|
-
filter_field { 'invalid' }
|
107
|
-
value { '1' }
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,167 +0,0 @@
|
|
1
|
-
require 'simplecov'
|
2
|
-
SimpleCov.start do
|
3
|
-
add_filter '/test/'
|
4
|
-
end
|
5
|
-
|
6
|
-
$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
|
7
|
-
require "rails"
|
8
|
-
require 'active_record'
|
9
|
-
require "rexport"
|
10
|
-
|
11
|
-
require 'minitest/autorun'
|
12
|
-
require 'factory_bot'
|
13
|
-
require 'mocha/minitest'
|
14
|
-
require File.dirname(__FILE__) + '/factories'
|
15
|
-
|
16
|
-
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
|
17
|
-
|
18
|
-
class ActiveSupport::TestCase
|
19
|
-
include FactoryBot::Syntax::Methods
|
20
|
-
include Rexport::Factories
|
21
|
-
|
22
|
-
def setup
|
23
|
-
suppress_output { setup_db }
|
24
|
-
Enrollment.instance_variable_set('@rexport_fields', nil)
|
25
|
-
Student.instance_variable_set('@rexport_fields', nil)
|
26
|
-
end
|
27
|
-
|
28
|
-
def teardown
|
29
|
-
teardown_db
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def setup_db
|
35
|
-
ActiveRecord::Schema.define(version: 1) do
|
36
|
-
create_table :enrollments do |t|
|
37
|
-
t.integer :student_id, :status_id, :grade
|
38
|
-
t.boolean :active
|
39
|
-
t.timestamps
|
40
|
-
end
|
41
|
-
|
42
|
-
create_table :students do |t|
|
43
|
-
t.integer :family_id
|
44
|
-
t.string :name
|
45
|
-
t.date :date_of_birth
|
46
|
-
t.timestamps
|
47
|
-
end
|
48
|
-
|
49
|
-
create_table :families do |t|
|
50
|
-
t.string :name
|
51
|
-
t.timestamps
|
52
|
-
end
|
53
|
-
|
54
|
-
create_table :statuses do |t|
|
55
|
-
t.string :name
|
56
|
-
end
|
57
|
-
|
58
|
-
create_table :exports do |t|
|
59
|
-
t.string :name
|
60
|
-
t.string :model_class_name
|
61
|
-
t.text :description
|
62
|
-
end
|
63
|
-
|
64
|
-
create_table :export_items do |t|
|
65
|
-
t.integer :export_id
|
66
|
-
t.string :name, :rexport_field
|
67
|
-
t.integer :position
|
68
|
-
end
|
69
|
-
|
70
|
-
create_table :export_filters do |t|
|
71
|
-
t.integer :export_id
|
72
|
-
t.string :filter_field, :value
|
73
|
-
end
|
74
|
-
|
75
|
-
create_table :self_referential_checks do |t|
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def teardown_db
|
81
|
-
ActiveRecord::Base.connection.data_sources.each do |table|
|
82
|
-
ActiveRecord::Base.connection.drop_table(table)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def suppress_output
|
87
|
-
original_stdout = $stdout.clone
|
88
|
-
$stdout.reopen File.new('/dev/null', 'w')
|
89
|
-
yield
|
90
|
-
ensure
|
91
|
-
$stdout.reopen original_stdout
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
class ActiveRecord::Base
|
96
|
-
class << self
|
97
|
-
def acts_as_list(options = {})
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
class Enrollment < ActiveRecord::Base
|
103
|
-
include Rexport::DataFields
|
104
|
-
belongs_to :student
|
105
|
-
belongs_to :status
|
106
|
-
belongs_to :ilp_status, class_name: 'Status', foreign_key: 'ilp_status_id'
|
107
|
-
belongs_to :self_referential_check
|
108
|
-
|
109
|
-
def foo
|
110
|
-
'bar'
|
111
|
-
end
|
112
|
-
|
113
|
-
private
|
114
|
-
|
115
|
-
def self.initialize_local_rexport_fields(rexport_model)
|
116
|
-
rexport_model.add_rexport_field(:foo_method, method: :foo)
|
117
|
-
rexport_model.add_rexport_field(:bad_method, method: 'bad_method')
|
118
|
-
rexport_model.add_association_methods(associations: %w(status ilp_status))
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
class Student < ActiveRecord::Base
|
123
|
-
include Rexport::DataFields
|
124
|
-
belongs_to :family
|
125
|
-
has_many :enrollments
|
126
|
-
|
127
|
-
def self.find_family_for_rexport
|
128
|
-
Family.order(:name)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
class Family < ActiveRecord::Base
|
133
|
-
include Rexport::DataFields
|
134
|
-
has_many :students
|
135
|
-
|
136
|
-
def foo
|
137
|
-
'bar'
|
138
|
-
end
|
139
|
-
|
140
|
-
private
|
141
|
-
|
142
|
-
def self.initialize_local_rexport_fields(rexport_model)
|
143
|
-
rexport_model.add_rexport_field(:foo_method, method: :foo)
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
class Status < ActiveRecord::Base
|
148
|
-
# does not include Rexport
|
149
|
-
has_many :enrollments
|
150
|
-
end
|
151
|
-
|
152
|
-
class Export < ActiveRecord::Base
|
153
|
-
include Rexport::ExportMethods
|
154
|
-
end
|
155
|
-
|
156
|
-
class ExportItem < ActiveRecord::Base
|
157
|
-
include Rexport::ExportItemMethods
|
158
|
-
end
|
159
|
-
|
160
|
-
class ExportFilter < ActiveRecord::Base
|
161
|
-
include Rexport::ExportFilterMethods
|
162
|
-
end
|
163
|
-
|
164
|
-
class SelfReferentialCheck < ActiveRecord::Base
|
165
|
-
include Rexport::DataFields
|
166
|
-
belongs_to :enrollment
|
167
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class DataFieldTest < ActiveSupport::TestCase
|
4
|
-
test 'should stringify name' do
|
5
|
-
assert_equal 'foo', Rexport::DataField.new(:foo).name
|
6
|
-
end
|
7
|
-
|
8
|
-
test 'should use name for method' do
|
9
|
-
assert_equal 'foo', Rexport::DataField.new(:foo).method
|
10
|
-
end
|
11
|
-
|
12
|
-
test 'should save method' do
|
13
|
-
assert_equal 'bar', Rexport::DataField.new(:foo, method: :bar).method
|
14
|
-
end
|
15
|
-
|
16
|
-
test 'should save type' do
|
17
|
-
assert_equal :type_test, Rexport::DataField.new(:test, type: :type_test).type
|
18
|
-
end
|
19
|
-
|
20
|
-
test 'should_sort_data_fields' do
|
21
|
-
a = Rexport::DataField.new(:a)
|
22
|
-
b = Rexport::DataField.new(:b)
|
23
|
-
assert_equal [a,b], [b,a].sort
|
24
|
-
end
|
25
|
-
end
|