fulcrum 0.1.6 → 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.
- checksums.yaml +8 -8
- data/LICENSE +2 -2
- data/README.md +189 -70
- data/Rakefile +5 -0
- data/fulcrum.gemspec +2 -3
- data/lib/fulcrum.rb +22 -14
- data/lib/fulcrum/actions/create.rb +15 -0
- data/lib/fulcrum/actions/delete.rb +12 -0
- data/lib/fulcrum/actions/find.rb +11 -0
- data/lib/fulcrum/actions/list.rb +19 -0
- data/lib/fulcrum/actions/update.rb +11 -0
- data/lib/fulcrum/changeset.rb +12 -0
- data/lib/fulcrum/choice_list.rb +6 -35
- data/lib/fulcrum/classification_set.rb +6 -36
- data/lib/fulcrum/client.rb +120 -0
- data/lib/fulcrum/form.rb +6 -35
- data/lib/fulcrum/layer.rb +6 -0
- data/lib/fulcrum/media_resource.rb +47 -0
- data/lib/fulcrum/membership.rb +5 -0
- data/lib/fulcrum/page.rb +17 -0
- data/lib/fulcrum/photo.rb +9 -29
- data/lib/fulcrum/project.rb +3 -9
- data/lib/fulcrum/record.rb +6 -35
- data/lib/fulcrum/resource.rb +40 -0
- data/lib/fulcrum/signature.rb +15 -0
- data/lib/fulcrum/version.rb +1 -1
- data/lib/fulcrum/video.rb +23 -0
- data/spec/client_helper.rb +9 -0
- data/spec/data/test.jpg +0 -0
- data/spec/data/test.mp4 +0 -0
- data/spec/data/test.png +0 -0
- data/spec/lib/choice_list_spec.rb +10 -115
- data/spec/lib/classification_set_spec.rb +11 -114
- data/spec/lib/client_spec.rb +9 -0
- data/spec/lib/form_spec.rb +10 -111
- data/spec/lib/layer_spec.rb +13 -0
- data/spec/lib/membership_spec.rb +12 -0
- data/spec/lib/photo_spec.rb +9 -88
- data/spec/lib/project_spec.rb +7 -23
- data/spec/lib/record_spec.rb +10 -115
- data/spec/lib/signature_spec.rb +16 -0
- data/spec/lib/video_spec.rb +16 -0
- data/spec/resource_examples.rb +147 -0
- data/spec/spec_helper.rb +2 -0
- metadata +37 -41
- data/.rvmrc +0 -1
- data/lib/fulcrum/api.rb +0 -99
- data/lib/fulcrum/member.rb +0 -16
- data/lib/fulcrum/validators/base_validator.rb +0 -31
- data/lib/fulcrum/validators/choice_list_validator.rb +0 -30
- data/lib/fulcrum/validators/classification_set_validator.rb +0 -38
- data/lib/fulcrum/validators/form_validator.rb +0 -150
- data/lib/fulcrum/validators/record_validator.rb +0 -18
- data/spec/data/form_data.json +0 -175
- data/spec/lib/api_spec.rb +0 -42
- data/spec/lib/member_spec.rb +0 -52
- data/spec/lib/validators/choice_list_validator_spec.rb +0 -73
- data/spec/lib/validators/classification_set_validator_spec.rb +0 -88
- data/spec/lib/validators/form_validator_spec.rb +0 -4
- data/spec/lib/validators/record_validator_spec.rb +0 -53
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fulcrum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Spatial Networks
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -86,28 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
89
|
+
version: 0.9.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - ~>
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: hashie
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ! '>='
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ! '>='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
96
|
+
version: 0.9.0
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: faraday_middleware
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,41 +116,49 @@ extensions: []
|
|
130
116
|
extra_rdoc_files: []
|
131
117
|
files:
|
132
118
|
- .gitignore
|
133
|
-
- .rvmrc
|
134
119
|
- Gemfile
|
135
120
|
- LICENSE
|
136
121
|
- README.md
|
137
122
|
- Rakefile
|
138
123
|
- fulcrum.gemspec
|
139
124
|
- lib/fulcrum.rb
|
140
|
-
- lib/fulcrum/
|
125
|
+
- lib/fulcrum/actions/create.rb
|
126
|
+
- lib/fulcrum/actions/delete.rb
|
127
|
+
- lib/fulcrum/actions/find.rb
|
128
|
+
- lib/fulcrum/actions/list.rb
|
129
|
+
- lib/fulcrum/actions/update.rb
|
130
|
+
- lib/fulcrum/changeset.rb
|
141
131
|
- lib/fulcrum/choice_list.rb
|
142
132
|
- lib/fulcrum/classification_set.rb
|
133
|
+
- lib/fulcrum/client.rb
|
143
134
|
- lib/fulcrum/form.rb
|
144
|
-
- lib/fulcrum/
|
135
|
+
- lib/fulcrum/layer.rb
|
136
|
+
- lib/fulcrum/media_resource.rb
|
137
|
+
- lib/fulcrum/membership.rb
|
138
|
+
- lib/fulcrum/page.rb
|
145
139
|
- lib/fulcrum/photo.rb
|
146
140
|
- lib/fulcrum/project.rb
|
147
141
|
- lib/fulcrum/record.rb
|
148
|
-
- lib/fulcrum/
|
149
|
-
- lib/fulcrum/
|
150
|
-
- lib/fulcrum/validators/classification_set_validator.rb
|
151
|
-
- lib/fulcrum/validators/form_validator.rb
|
152
|
-
- lib/fulcrum/validators/record_validator.rb
|
142
|
+
- lib/fulcrum/resource.rb
|
143
|
+
- lib/fulcrum/signature.rb
|
153
144
|
- lib/fulcrum/version.rb
|
154
|
-
-
|
145
|
+
- lib/fulcrum/video.rb
|
146
|
+
- spec/client_helper.rb
|
155
147
|
- spec/data/test.jpg
|
156
|
-
- spec/
|
148
|
+
- spec/data/test.mp4
|
149
|
+
- spec/data/test.png
|
157
150
|
- spec/lib/choice_list_spec.rb
|
158
151
|
- spec/lib/classification_set_spec.rb
|
152
|
+
- spec/lib/client_spec.rb
|
159
153
|
- spec/lib/form_spec.rb
|
160
|
-
- spec/lib/
|
154
|
+
- spec/lib/layer_spec.rb
|
155
|
+
- spec/lib/membership_spec.rb
|
161
156
|
- spec/lib/photo_spec.rb
|
162
157
|
- spec/lib/project_spec.rb
|
163
158
|
- spec/lib/record_spec.rb
|
164
|
-
- spec/lib/
|
165
|
-
- spec/lib/
|
166
|
-
- spec/
|
167
|
-
- spec/lib/validators/record_validator_spec.rb
|
159
|
+
- spec/lib/signature_spec.rb
|
160
|
+
- spec/lib/video_spec.rb
|
161
|
+
- spec/resource_examples.rb
|
168
162
|
- spec/spec_helper.rb
|
169
163
|
homepage: http://github.com/spatialnetworks/fulcrum-ruby
|
170
164
|
licenses: []
|
@@ -188,21 +182,23 @@ rubyforge_project:
|
|
188
182
|
rubygems_version: 2.1.5
|
189
183
|
signing_key:
|
190
184
|
specification_version: 4
|
191
|
-
summary: Fulcrum API
|
185
|
+
summary: Fulcrum API client for ruby
|
192
186
|
test_files:
|
193
|
-
- spec/
|
187
|
+
- spec/client_helper.rb
|
194
188
|
- spec/data/test.jpg
|
195
|
-
- spec/
|
189
|
+
- spec/data/test.mp4
|
190
|
+
- spec/data/test.png
|
196
191
|
- spec/lib/choice_list_spec.rb
|
197
192
|
- spec/lib/classification_set_spec.rb
|
193
|
+
- spec/lib/client_spec.rb
|
198
194
|
- spec/lib/form_spec.rb
|
199
|
-
- spec/lib/
|
195
|
+
- spec/lib/layer_spec.rb
|
196
|
+
- spec/lib/membership_spec.rb
|
200
197
|
- spec/lib/photo_spec.rb
|
201
198
|
- spec/lib/project_spec.rb
|
202
199
|
- spec/lib/record_spec.rb
|
203
|
-
- spec/lib/
|
204
|
-
- spec/lib/
|
205
|
-
- spec/
|
206
|
-
- spec/lib/validators/record_validator_spec.rb
|
200
|
+
- spec/lib/signature_spec.rb
|
201
|
+
- spec/lib/video_spec.rb
|
202
|
+
- spec/resource_examples.rb
|
207
203
|
- spec/spec_helper.rb
|
208
204
|
has_rdoc:
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm use ruby-1.9.3@fulcrum_api --create
|
data/lib/fulcrum/api.rb
DELETED
@@ -1,99 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'faraday_middleware'
|
3
|
-
|
4
|
-
module Fulcrum
|
5
|
-
|
6
|
-
class ApiError < Faraday::Error::ClientError; end
|
7
|
-
class ConnectionError < StandardError; end
|
8
|
-
|
9
|
-
class Api
|
10
|
-
|
11
|
-
VALID_METHODS = [:get, :post, :put, :delete]
|
12
|
-
|
13
|
-
attr :connection
|
14
|
-
attr :response
|
15
|
-
attr_writer :configuration
|
16
|
-
|
17
|
-
class << self
|
18
|
-
|
19
|
-
def key
|
20
|
-
@configuration.key
|
21
|
-
end
|
22
|
-
|
23
|
-
def uri
|
24
|
-
@configuration.uri
|
25
|
-
end
|
26
|
-
|
27
|
-
def response
|
28
|
-
@response
|
29
|
-
end
|
30
|
-
|
31
|
-
def parse_opts(keys = [], opts = {})
|
32
|
-
opts = opts.with_indifferent_access
|
33
|
-
{}.tap do |p|
|
34
|
-
keys.each { |key| p[key.to_sym] = opts[key] if opts.has_key?(key) }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def call(method = :get, path = '', params = {})
|
39
|
-
raise ArgumentError, "Invalid method: #{method.to_s}" unless VALID_METHODS.include?(method.to_sym)
|
40
|
-
@response = connection.send(method.to_sym, path, params)
|
41
|
-
@response.body
|
42
|
-
rescue Faraday::Error::ClientError => e
|
43
|
-
@response = e.response
|
44
|
-
{ error: { status: @response[:status], message: @response[:body] } }
|
45
|
-
end
|
46
|
-
|
47
|
-
def configure
|
48
|
-
yield(configuration)
|
49
|
-
end
|
50
|
-
|
51
|
-
def configuration
|
52
|
-
@configuration ||= Configuration.new
|
53
|
-
end
|
54
|
-
|
55
|
-
def connection
|
56
|
-
if !@connection
|
57
|
-
@connection = Faraday.new(Fulcrum::Api.configuration.uri) do |b|
|
58
|
-
b.request :multipart
|
59
|
-
b.request :json
|
60
|
-
b.response :raise_error
|
61
|
-
b.response :json , :content_type => 'application/json'
|
62
|
-
b.adapter Faraday.default_adapter
|
63
|
-
end
|
64
|
-
@connection.headers['X-ApiToken'] = Fulcrum::Api.configuration.key
|
65
|
-
@connection.headers['User-Agent'] = "Ruby Fulcrum API Client, Version #{Fulcrum::VERSION}"
|
66
|
-
end
|
67
|
-
@connection
|
68
|
-
end
|
69
|
-
|
70
|
-
def get_key(username, password)
|
71
|
-
conn = Faraday.new(uri) do |b|
|
72
|
-
b.request :url_encoded
|
73
|
-
b.response :raise_error
|
74
|
-
b.response :json, :content_type => "application/json"
|
75
|
-
b.adapter Faraday.default_adapter
|
76
|
-
end
|
77
|
-
|
78
|
-
conn.headers['User-Agent'] = "Ruby Fulcrum API Client version #{Fulcrum::VERSION}"
|
79
|
-
conn.basic_auth(username, password)
|
80
|
-
resp = conn.get('users.json')
|
81
|
-
body = JSON.parse(resp.body)
|
82
|
-
if body['user']
|
83
|
-
body['user']['api_token']
|
84
|
-
else
|
85
|
-
nil
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
class Configuration
|
91
|
-
attr_accessor :uri
|
92
|
-
attr_accessor :key
|
93
|
-
|
94
|
-
def initialize
|
95
|
-
self.uri = 'https://api.fulcrumapp.com/api/v2'
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
data/lib/fulcrum/member.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/hash'
|
2
|
-
|
3
|
-
module Fulcrum
|
4
|
-
class BaseValidator
|
5
|
-
attr_accessor :data
|
6
|
-
attr_accessor :errors
|
7
|
-
|
8
|
-
def initialize(data)
|
9
|
-
@data = (data.is_a?(Hash) ? data : JSON.parse(data)).with_indifferent_access
|
10
|
-
@errors = {}
|
11
|
-
validate!
|
12
|
-
end
|
13
|
-
|
14
|
-
def valid?
|
15
|
-
errors.empty?
|
16
|
-
end
|
17
|
-
|
18
|
-
def add_error(key, data_name, error)
|
19
|
-
if errors.has_key?(key)
|
20
|
-
if errors[key].has_key?(data_name)
|
21
|
-
errors[key][data_name].push(error)
|
22
|
-
else
|
23
|
-
errors[key][data_name] = [error]
|
24
|
-
end
|
25
|
-
else
|
26
|
-
errors[key] = {}
|
27
|
-
errors[key][data_name] = [error]
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module Fulcrum
|
2
|
-
class ChoiceListValidator < BaseValidator
|
3
|
-
|
4
|
-
def validate!
|
5
|
-
if data['choice_list'].kind_of?(Hash) && !data['choice_list'].blank?
|
6
|
-
add_error('choice_list', 'name', 'must not be blank') if data['choice_list']['name'].blank?
|
7
|
-
choices(data['choice_list']['choices'])
|
8
|
-
else
|
9
|
-
@errors['choice_list'] = ['must be a non-empty hash']
|
10
|
-
end
|
11
|
-
return valid?
|
12
|
-
end
|
13
|
-
|
14
|
-
def choices(elements)
|
15
|
-
if elements.kind_of?(Array) && !elements.empty?
|
16
|
-
elements.each do |choice|
|
17
|
-
if choice.blank?
|
18
|
-
add_error('choices', 'choice', 'cannot be empty')
|
19
|
-
else
|
20
|
-
if choice['label'].blank?
|
21
|
-
add_error('choice', 'label', 'is required')
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
else
|
26
|
-
add_error('choice_list', 'choices', 'must be a non-empty array')
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module Fulcrum
|
2
|
-
class ClassificationSetValidator < BaseValidator
|
3
|
-
|
4
|
-
def validate!
|
5
|
-
if data['classification_set']
|
6
|
-
add_error('classification_set', 'name', 'cannot be blank') if data['classification_set']['name'].blank?
|
7
|
-
|
8
|
-
if data['classification_set']['items'].blank? || !data['classification_set']['items'].kind_of?(Array)
|
9
|
-
add_error('classification_set', 'items', 'must be a non-empty array')
|
10
|
-
else
|
11
|
-
items(data['classification_set']['items'])
|
12
|
-
end
|
13
|
-
else
|
14
|
-
@errors['classification_set'] = ['must exist and not be blank']
|
15
|
-
end
|
16
|
-
return valid?
|
17
|
-
end
|
18
|
-
|
19
|
-
def items(elements, child = false)
|
20
|
-
parent, child = child ? ['child_classification', 'item'] : ['items', 'item']
|
21
|
-
if elements.kind_of?(Array) && !elements.empty?
|
22
|
-
elements.each do |element|
|
23
|
-
if element.blank?
|
24
|
-
add_error(parent, child, 'cannot be empty')
|
25
|
-
else
|
26
|
-
if element['label'].blank?
|
27
|
-
add_error(child, 'label', 'is required')
|
28
|
-
end
|
29
|
-
end
|
30
|
-
items(element['child_classifications'], true) if element.has_key?('child_classifications')
|
31
|
-
end
|
32
|
-
else
|
33
|
-
add_error(parent, child, 'must be a non-empty array')
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
@@ -1,150 +0,0 @@
|
|
1
|
-
module Fulcrum
|
2
|
-
class FormValidator < BaseValidator
|
3
|
-
|
4
|
-
TYPES = %w(
|
5
|
-
TextField
|
6
|
-
ChoiceField
|
7
|
-
ClassificationField
|
8
|
-
PhotoField
|
9
|
-
DateTimeField
|
10
|
-
Section
|
11
|
-
)
|
12
|
-
|
13
|
-
def form_elements
|
14
|
-
data['form']['elements']
|
15
|
-
end
|
16
|
-
|
17
|
-
def form_name
|
18
|
-
data['form']['name']
|
19
|
-
end
|
20
|
-
|
21
|
-
def validate!
|
22
|
-
@items = {}
|
23
|
-
if data[:form]
|
24
|
-
if form_elements && !form_elements.empty?
|
25
|
-
add_error('form', 'name', 'cannot be blank') if data[:form][:name].blank?
|
26
|
-
fields(form_elements)
|
27
|
-
conditionals(form_elements)
|
28
|
-
else
|
29
|
-
add_error('form', 'elements', 'must be a non-empty array')
|
30
|
-
end
|
31
|
-
else
|
32
|
-
@errors['form'] = ['must exist and not be empty']
|
33
|
-
end
|
34
|
-
return valid?
|
35
|
-
end
|
36
|
-
|
37
|
-
def fields(elements)
|
38
|
-
if elements.kind_of?(Array) && !elements.empty?
|
39
|
-
elements.each { |element| field(element) }
|
40
|
-
else
|
41
|
-
add_error('form', 'elements', 'must be a non-empty array')
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def field(element)
|
46
|
-
if element.blank?
|
47
|
-
add_error('elements', 'element', 'must not be empty')
|
48
|
-
else
|
49
|
-
if !element[:key]
|
50
|
-
add_error('element', 'key', 'must exist and not be nil')
|
51
|
-
return false
|
52
|
-
end
|
53
|
-
|
54
|
-
if @items.include?(element[:key])
|
55
|
-
add_error(element[:key], :key, 'must be unique')
|
56
|
-
return false
|
57
|
-
end
|
58
|
-
|
59
|
-
key = element[:key]
|
60
|
-
@items[key] = element[:type]
|
61
|
-
|
62
|
-
add_error(key, 'label', 'is required') if element[:label].blank?
|
63
|
-
add_error(key, 'data_name', 'is required') if element[:data_name].blank?
|
64
|
-
add_error(key, 'type', 'is not one of the valid types') unless TYPES.include?(element[:type])
|
65
|
-
|
66
|
-
%w(disabled hidden required).each do |attrib|
|
67
|
-
add_error(key, attrib, 'must be true or false') unless [true, false].include?(element[attrib])
|
68
|
-
end
|
69
|
-
|
70
|
-
case element[:type]
|
71
|
-
|
72
|
-
when 'ClassificationField'
|
73
|
-
if element[:classification_set_id]
|
74
|
-
add_error(key, 'classification_set_id', 'is required') if element[:classification_set_id].blank?
|
75
|
-
end
|
76
|
-
|
77
|
-
when 'Section'
|
78
|
-
if element['elements'].is_a?(Array)
|
79
|
-
if element['elements'].any?
|
80
|
-
fields(element['elements'])
|
81
|
-
else
|
82
|
-
add_error(key, 'elements', 'must contain additional elements')
|
83
|
-
end
|
84
|
-
else
|
85
|
-
add_error(key, 'elements', 'must be an array object')
|
86
|
-
end
|
87
|
-
|
88
|
-
when 'ChoiceField'
|
89
|
-
if element['choice_list_id']
|
90
|
-
add_error(key, 'choice_list_id', 'is required') if element[:choice_list_id].blank?
|
91
|
-
else
|
92
|
-
if element['choices'].is_a?(Array) && !element['choices'].blank?
|
93
|
-
element['choices'].each do |choice|
|
94
|
-
unless choice.has_key?('label') && choice['label'].present?
|
95
|
-
add_error('choices', 'label', 'contains an invalid label')
|
96
|
-
end
|
97
|
-
end
|
98
|
-
else
|
99
|
-
add_error(key, 'choices', 'must be a non-empty array')
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
def conditionals(elements)
|
107
|
-
elements.each { |element| conditional(element) }
|
108
|
-
end
|
109
|
-
|
110
|
-
def conditional(element)
|
111
|
-
|
112
|
-
operators = case element[:type]
|
113
|
-
when 'ChoiceField', 'ClassificationField'
|
114
|
-
%w(equal_to not_equal_to is_empty is_not_empty)
|
115
|
-
else
|
116
|
-
%w(equal_to not_equal_to contains starts_with greater_than less_than is_empty is_not_empty)
|
117
|
-
end
|
118
|
-
|
119
|
-
%w(required_conditions visible_conditions).each do |field|
|
120
|
-
|
121
|
-
if type = element["#{field}_type"]
|
122
|
-
add_error(key, "#{field}_type", 'is not valid') unless %(any all).include?(type)
|
123
|
-
end
|
124
|
-
|
125
|
-
if element[field]
|
126
|
-
if element[field].is_a?(Array)
|
127
|
-
element[field].each do |condition|
|
128
|
-
|
129
|
-
if key = condition[:field_key]
|
130
|
-
add_error(key, field, "key #{key} does not exist on the form") unless @items.keys.include?(key)
|
131
|
-
add_error(key, field, "operator for #{key} is invalid") unless operators.include?(condition[:operator])
|
132
|
-
|
133
|
-
if %w(is_empty is_not_empty).include?(condition[:operator]) && condition[:value].present?
|
134
|
-
add_error(key, field, 'value cannot be blank')
|
135
|
-
end
|
136
|
-
else
|
137
|
-
add_error(key, field, 'field key must exist for condition')
|
138
|
-
end
|
139
|
-
|
140
|
-
end
|
141
|
-
else
|
142
|
-
add_error(key, field, 'must be an array object')
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
conditionals(element[:elements]) if element[:type] == 'Section'
|
148
|
-
end
|
149
|
-
end
|
150
|
-
end
|