filemaker 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e51cec7f5db8072eb5c0b218ed4d521641f56b14
4
- data.tar.gz: 7d2603cea09ae2a110ae121e6d593508d5363ea3
3
+ metadata.gz: b2df8ff23dfbe366d62b061a11f6df38bb57d77c
4
+ data.tar.gz: 92524e645975cd4e6bd65186eb596789033bda7e
5
5
  SHA512:
6
- metadata.gz: 27613622cc49cbdc5c799d8ded00bbdd171f5a424d12213a16e957c24ee8dd36a8c5cc941a2ccbc61614751498b2540c6da466655295c1798b949db89c7c68f6
7
- data.tar.gz: 4bba2a963de990cd2a72b718238b29b18584068d9e185ac972638bd4a9733449eb8a46b581679acbda2850950c2bf72a9d2665153ce4eadd35889c163b6b51a4
6
+ metadata.gz: 5d3d539088833432a862aa56e010c568f0ee20085fbde57266eeccd5d59159bc6bad112bea84cf118801be03fee28bd5eff0566a88257e03c9954fd0ca7168be
7
+ data.tar.gz: 87fb6a1df1e0c6c9779a45d2b7ef8d5f950f1c32d98c228a80bc69375e163cf13824e4458ad141538c08d9f554ecce3a08235a82414784707e62d6798ee3cf87
@@ -9,32 +9,13 @@ module Filemaker
9
9
  models = []
10
10
 
11
11
  resultset.each do |record|
12
- object = klass.new
13
-
14
- object.instance_variable_set('@new_record', false)
15
- object.instance_variable_set('@record_id', record.record_id)
16
- object.instance_variable_set('@mod_id', record.mod_id)
17
- object.instance_variable_set('@portals', record.portals)
18
-
19
- record.keys.each do |fm_field_name|
20
- # record.keys are all lowercase
21
- field = klass.find_field_by_name(fm_field_name)
22
- next unless field
23
-
24
- # Because we are using ActiveModel::Dirty, so we hydrate directly.
25
- object.attributes[field.name] = field.coerce(record[fm_field_name])
26
- end
27
-
28
- models << object
12
+ models << build(record, klass.new)
29
13
  end
30
14
 
31
15
  models
32
16
  end
33
17
 
34
- def single(resultset, klass)
35
- record = resultset.first
36
- object = klass.new
37
-
18
+ def build(record, object)
38
19
  object.instance_variable_set('@new_record', false)
39
20
  object.instance_variable_set('@record_id', record.record_id)
40
21
  object.instance_variable_set('@mod_id', record.mod_id)
@@ -42,10 +23,10 @@ module Filemaker
42
23
 
43
24
  record.keys.each do |fm_field_name|
44
25
  # record.keys are all lowercase
45
- field = klass.find_field_by_name(fm_field_name)
26
+ field = object.class.find_field_by_name(fm_field_name)
46
27
  next unless field
47
28
 
48
- object.public_send("#{field.name}=", record[fm_field_name])
29
+ object.attributes[field.name] = field.coerce(record[fm_field_name])
49
30
  end
50
31
 
51
32
  object
@@ -91,20 +91,7 @@ module Filemaker
91
91
 
92
92
  # If you have calculated field from FileMaker, it will be replaced.
93
93
  def replace_new_data(resultset)
94
- record = resultset.first
95
-
96
- @new_record = false
97
- @record_id = record.record_id
98
- @mod_id = record.mod_id
99
-
100
- record.keys.each do |fm_field_name|
101
- # record.keys are all lowercase
102
- field = self.class.find_field_by_name(fm_field_name)
103
- next unless field
104
-
105
- # Because we are using ActiveModel::Dirty, so we hydrate directly.
106
- attributes[field.name] = field.coerce(record[fm_field_name])
107
- end
94
+ FileMaker::Model::Builder.build(resultset.first, self)
108
95
  end
109
96
  end
110
97
  end
@@ -21,6 +21,10 @@ module Filemaker
21
21
  if key_value.blank?
22
22
  @target = nil
23
23
  else
24
+ # Single `=` match whole word or (match empty)
25
+ # Double `==` match entire field
26
+ # If the field value contains underscore or space like 'FM_notified'
27
+ # or 'FM notified', a single `=` may not match correctly.
24
28
  @target = target_class.where(reference_key => "=#{key_value}").first
25
29
  end
26
30
  end
@@ -70,6 +70,10 @@ module Filemaker
70
70
  if key_value.blank?
71
71
  @target = nil # Or should we return empty array?
72
72
  else
73
+ # Single `=` match whole word or (match empty)
74
+ # Double `==` match entire field
75
+ # If the field value contains underscore or space like 'FM_notified'
76
+ # or 'FM notified', a single `=` may not match correctly.
73
77
  @target = target_class.where(reference_key => "=#{key_value}")
74
78
  end
75
79
  end
@@ -1,3 +1,3 @@
1
1
  module Filemaker
2
- VERSION = '0.0.10'
2
+ VERSION = '0.0.11'
3
3
  end
@@ -0,0 +1,43 @@
1
+ describe Filemaker::Model::Builder do
2
+
3
+ let(:model) { Job }
4
+ let(:server) { Object.new }
5
+ let(:xml) { import_xml_as_string('jobs.xml') }
6
+ let(:resultset) { Filemaker::Resultset.new(server, xml) }
7
+
8
+ context '.build' do
9
+
10
+ let(:subject) {
11
+ Filemaker::Model::Builder.build(resultset.first, model.new)
12
+ }
13
+
14
+ it 'has portals' do
15
+ expect(subject.portals.keys).to eq([])
16
+ end
17
+
18
+ it 'has a status' do
19
+ expect(subject.status).to eq("open")
20
+ end
21
+
22
+ it 'has an jdid' do
23
+ expect(subject.jdid).to eq("JID1122")
24
+ end
25
+
26
+ it 'has a modify_date' do
27
+ expect(subject.modify_date).to eq(Date.parse('2014-08-12'))
28
+ end
29
+ end
30
+
31
+ context '.collection' do
32
+
33
+ let(:subject) {
34
+ Filemaker::Model::Builder.collection(resultset, model)
35
+ }
36
+
37
+ it 'is an array of Jobs' do
38
+ subject.each do |job|
39
+ expect(job.class).to be(model)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -18,6 +18,18 @@ class Post
18
18
  string :candidate_id, :email
19
19
  end
20
20
 
21
+ class Job
22
+ include Filemaker::Model
23
+
24
+ database :jobs
25
+ layout :jobs
26
+
27
+ string :status
28
+ string :jdid, fm_name: 'JDID'
29
+ date :modify_date, fm_name: 'modify date'
30
+
31
+ end
32
+
21
33
  class MyModel
22
34
  include Filemaker::Model
23
35
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filemaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - mech
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-03 00:00:00.000000000 Z
11
+ date: 2015-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -203,6 +203,7 @@ files:
203
203
  - spec/filemaker/error_spec.rb
204
204
  - spec/filemaker/layout_spec.rb
205
205
  - spec/filemaker/metadata/field_spec.rb
206
+ - spec/filemaker/model/builder_spec.rb
206
207
  - spec/filemaker/model/criteria_spec.rb
207
208
  - spec/filemaker/model/relations_spec.rb
208
209
  - spec/filemaker/model_spec.rb
@@ -242,7 +243,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
242
243
  version: '0'
243
244
  requirements: []
244
245
  rubyforge_project:
245
- rubygems_version: 2.4.2
246
+ rubygems_version: 2.4.6
246
247
  signing_key:
247
248
  specification_version: 4
248
249
  summary: A Ruby wrapper to FileMaker XML API.
@@ -252,6 +253,7 @@ test_files:
252
253
  - spec/filemaker/error_spec.rb
253
254
  - spec/filemaker/layout_spec.rb
254
255
  - spec/filemaker/metadata/field_spec.rb
256
+ - spec/filemaker/model/builder_spec.rb
255
257
  - spec/filemaker/model/criteria_spec.rb
256
258
  - spec/filemaker/model/relations_spec.rb
257
259
  - spec/filemaker/model_spec.rb