filemaker 0.0.18 → 0.0.19

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -1
  3. data/README.md +55 -11
  4. data/diagram.svg +1 -0
  5. data/filemaker.gemspec +2 -0
  6. data/lib/filemaker.rb +2 -1
  7. data/lib/filemaker/configuration.rb +1 -1
  8. data/lib/filemaker/layout.rb +1 -1
  9. data/lib/filemaker/metadata/field.rb +6 -3
  10. data/lib/filemaker/model/batches.rb +16 -0
  11. data/lib/filemaker/model/builder.rb +5 -2
  12. data/lib/filemaker/model/components.rb +2 -0
  13. data/lib/filemaker/model/criteria.rb +26 -6
  14. data/lib/filemaker/model/field.rb +11 -2
  15. data/lib/filemaker/model/fields.rb +15 -9
  16. data/lib/filemaker/model/optional.rb +1 -1
  17. data/lib/filemaker/model/pagination.rb +6 -1
  18. data/lib/filemaker/model/persistable.rb +1 -1
  19. data/lib/filemaker/model/relations/proxy.rb +4 -1
  20. data/lib/filemaker/model/selectable.rb +2 -2
  21. data/lib/filemaker/model/types/attachment.rb +102 -0
  22. data/lib/filemaker/model/types/email.rb +41 -0
  23. data/lib/filemaker/record.rb +7 -4
  24. data/lib/filemaker/server.rb +33 -13
  25. data/lib/filemaker/version.rb +1 -1
  26. data/lib/generators/filemaker/model/model_generator.rb +2 -1
  27. data/spec/filemaker/configuration_spec.rb +1 -1
  28. data/spec/filemaker/layout_spec.rb +8 -8
  29. data/spec/filemaker/metadata/field_spec.rb +9 -1
  30. data/spec/filemaker/model/criteria_spec.rb +17 -17
  31. data/spec/filemaker/model/relations_spec.rb +5 -0
  32. data/spec/filemaker/model_spec.rb +66 -1
  33. data/spec/filemaker/resultset_spec.rb +1 -1
  34. data/spec/filemaker/store/database_store_spec.rb +1 -1
  35. data/spec/support/filemaker.yml +2 -2
  36. data/spec/support/models.rb +3 -1
  37. metadata +35 -3
@@ -38,6 +38,11 @@ describe Filemaker::Model::Relations do
38
38
  expect(@model.member.reference_key).to eq 'member_id'
39
39
  expect(@model.member.final_reference_key).to eq 'id'
40
40
  end
41
+
42
+ it 'proxy blank?' do
43
+ expect(@model.candidate.blank?).to eq false
44
+ expect(@model.candidate.nil?).to eq false
45
+ end
41
46
  end
42
47
 
43
48
  context 'when using supplied reference_key' do
@@ -31,9 +31,54 @@ describe Filemaker::Model do
31
31
  expect(model.email).to eq 'UNTITLED'
32
32
  end
33
33
 
34
+ it 'parse multiple emails into one' do
35
+ model.backup_email = " one@host.com,two@host.com\nthree@host.com"
36
+ expect(model.backup_email.to_s).to eq 'one@host.com'
37
+ end
38
+
39
+ it 'parse good email' do
40
+ model.backup_email = 'one@host.com'
41
+ expect(model.backup_email.to_s).to eq 'one@host.com'
42
+ end
43
+
44
+ it 'parse bad emails' do
45
+ model.backup_email = 'bounced@example.com - bounce'
46
+ expect(model.backup_email.to_s).to eq 'bounced@example.com'
47
+
48
+ model.backup_email = 'bounced@example.com (bounce)'
49
+ expect(model.backup_email.to_s).to eq 'bounced@example.com'
50
+
51
+ model.backup_email = 'bounced@example.com(bounce)'
52
+ expect(model.backup_email.to_s).to eq 'bounced@example.com'
53
+
54
+ model.backup_email = 'dated@example.com - 18/1/05'
55
+ expect(model.backup_email.to_s).to eq 'dated@example.com'
56
+
57
+ model.backup_email = 'dated@example.com - niu'
58
+ expect(model.backup_email.to_s).to eq 'dated@example.com'
59
+
60
+ model.backup_email = 'don want to give email add'
61
+ expect(model.backup_email.to_s).to be_nil
62
+
63
+ model.backup_email = 'a@host.com'
64
+ expect(model.backup_email.to_s).to eq 'a@host.com'
65
+
66
+ model.backup_email = 'a﹫host.com'
67
+ expect(model.backup_email.to_s).to eq 'a@host.com'
68
+ end
69
+
70
+ it 'can compare email' do
71
+ model.backup_email = 'one@host.com'
72
+ expect(model.backup_email).to eq 'one@host.com'
73
+
74
+ other_email = Filemaker::Model::Types::Email.new('one@host.com')
75
+ expect(model.backup_email).to eq other_email
76
+ end
77
+
34
78
  it 'stores the real FileMaker name under fm_name' do
35
79
  expect(model.fm_names).to eq \
36
80
  [
81
+ 'backup_email',
37
82
  'name',
38
83
  'email',
39
84
  'ca id',
@@ -42,7 +87,8 @@ describe Filemaker::Model do
42
87
  'created_at',
43
88
  'modifieddate',
44
89
  'salary',
45
- 'passage of time'
90
+ 'passage of time',
91
+ 'document'
46
92
  ]
47
93
  end
48
94
 
@@ -66,6 +112,16 @@ describe Filemaker::Model do
66
112
  expect(model.salary).to be_a String
67
113
  end
68
114
 
115
+ it 'accepts == for any type' do
116
+ model.salary = '=='
117
+ expect(model.salary).to eq '=='
118
+ end
119
+
120
+ it 'accepts =* for any type' do
121
+ model.age = '=*'
122
+ expect(model.age).to eq '=*'
123
+ end
124
+
69
125
  it 'check for presence of name and salary' do
70
126
  expect(model.name?).to be true
71
127
  expect(model.salary?).to be false
@@ -84,6 +140,15 @@ describe Filemaker::Model do
84
140
  expect(model.cache_key).to eq 'my_models/CA123'
85
141
  end
86
142
 
143
+ it 'has attachment' do
144
+ model.document = URI.parse('http://host/somefile.pdf')
145
+ expect(model.document.url).to eq 'http://host/somefile.pdf'
146
+ expect(model.document.filename).to eq 'somefile.pdf'
147
+ model.document.body
148
+ expect(model.document.extension).to eq '.pdf'
149
+ expect(model.document.content_type).to eq 'application/pdf'
150
+ end
151
+
87
152
  describe 'process_attributes' do
88
153
  it 'accepts a hash of attributes' do
89
154
  model = MyModel.new(name: 'Bob', email: 'bob@cern.org')
@@ -58,7 +58,7 @@ describe Filemaker::Resultset do
58
58
  it 'PORTAL_2 has 2 fields: Expired and Renewed' do
59
59
  expect(resultset.portal_fields['PORTAL_2'].size).to eq 2
60
60
  expect(resultset.portal_fields['PORTAL_2'].keys).to eq \
61
- %w(PORTAL_2::Expired PORTAL_2::Renewed)
61
+ %w[PORTAL_2::Expired PORTAL_2::Renewed]
62
62
  end
63
63
  end
64
64
 
@@ -22,7 +22,7 @@ describe Filemaker::Store::DatabaseStore do
22
22
 
23
23
  fake_post_response(server, nil, 'dbnames.xml')
24
24
 
25
- expected_result = %w(Billing Candidates Employee Jobs)
25
+ expected_result = %w[Billing Candidates Employee Jobs]
26
26
 
27
27
  expect(server.databases.all).to eq expected_result
28
28
  expect(server.database.all).to eq expected_result
@@ -4,10 +4,10 @@ development:
4
4
  account_name: FILEMAKER_ACCOUNT_NAME
5
5
  password: FILEMAKER_PASSWORD
6
6
  ssl: { verify: false }
7
- log: :curl
7
+ log: curl
8
8
 
9
9
  read_slave:
10
10
  host: host.com
11
11
  account_name: FILEMAKER_ACCOUNT_NAME
12
12
  password: FILEMAKER_PASSWORD
13
- ssl: true
13
+ ssl: true
@@ -14,7 +14,7 @@ class User
14
14
  include Filemaker::Model
15
15
 
16
16
  string :name
17
- string :email
17
+ email :email
18
18
  end
19
19
 
20
20
  class Post
@@ -64,6 +64,7 @@ class MyModel
64
64
  has_many :posts
65
65
  has_many :posters, class_name: User, reference_key: :email
66
66
 
67
+ email :backup_email
67
68
  string :name, :email, default: 'UNTITLED'
68
69
  string :candidate_id, fm_name: 'CA ID', identity: true
69
70
  string :member_id
@@ -72,6 +73,7 @@ class MyModel
72
73
  datetime :updated_at, fm_name: 'ModifiedDate'
73
74
  money :salary
74
75
  integer :age, fm_name: 'passage of time'
76
+ object :document
75
77
  end
76
78
 
77
79
  class Project
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.18
4
+ version: 0.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - mech
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-16 00:00:00.000000000 Z
11
+ date: 2018-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -80,6 +80,34 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: mimemagic
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: mime-types
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'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: bundler
85
113
  requirement: !ruby/object:Gem::Requirement
@@ -166,6 +194,7 @@ files:
166
194
  - README.md
167
195
  - Rakefile
168
196
  - diagram.png
197
+ - diagram.svg
169
198
  - filemaker.gemspec
170
199
  - lib/filemaker.rb
171
200
  - lib/filemaker/api.rb
@@ -186,6 +215,7 @@ files:
186
215
  - lib/filemaker/layout.rb
187
216
  - lib/filemaker/metadata/field.rb
188
217
  - lib/filemaker/model.rb
218
+ - lib/filemaker/model/batches.rb
189
219
  - lib/filemaker/model/builder.rb
190
220
  - lib/filemaker/model/components.rb
191
221
  - lib/filemaker/model/criteria.rb
@@ -201,6 +231,8 @@ files:
201
231
  - lib/filemaker/model/relations/has_portal.rb
202
232
  - lib/filemaker/model/relations/proxy.rb
203
233
  - lib/filemaker/model/selectable.rb
234
+ - lib/filemaker/model/types/attachment.rb
235
+ - lib/filemaker/model/types/email.rb
204
236
  - lib/filemaker/railtie.rb
205
237
  - lib/filemaker/record.rb
206
238
  - lib/filemaker/resultset.rb
@@ -257,7 +289,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
257
289
  version: '0'
258
290
  requirements: []
259
291
  rubyforge_project:
260
- rubygems_version: 2.6.8
292
+ rubygems_version: 2.6.13
261
293
  signing_key:
262
294
  specification_version: 4
263
295
  summary: A Ruby wrapper to FileMaker XML API.