filemaker 0.0.18 → 0.0.19

Sign up to get free protection for your applications and to get access to all the features.
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.