lucid_works 0.6.29 → 0.7.1

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 (55) hide show
  1. data/.rvmrc +1 -1
  2. data/Rakefile +25 -0
  3. data/config/locales/en.yml +171 -83
  4. data/lib/lucid_works/associations/has_many.rb +2 -2
  5. data/lib/lucid_works/associations/has_one.rb +1 -1
  6. data/lib/lucid_works/associations/proxy.rb +3 -3
  7. data/lib/lucid_works/associations.rb +2 -2
  8. data/lib/lucid_works/base.rb +21 -48
  9. data/lib/lucid_works/collection/click.rb +17 -0
  10. data/lib/lucid_works/collection/settings.rb +0 -1
  11. data/lib/lucid_works/collection.rb +22 -3
  12. data/lib/lucid_works/crawler.rb +13 -0
  13. data/lib/lucid_works/datasource/history.rb +5 -9
  14. data/lib/lucid_works/datasource/status.rb +8 -11
  15. data/lib/lucid_works/datasource.rb +67 -32
  16. data/lib/lucid_works/datasource_property.rb +18 -0
  17. data/lib/lucid_works/datasource_type.rb +23 -0
  18. data/lib/lucid_works/exceptions.rb +1 -0
  19. data/lib/lucid_works/field.rb +43 -2
  20. data/lib/lucid_works/fieldtype.rb +28 -0
  21. data/lib/lucid_works/gem_version.rb +1 -1
  22. data/lib/lucid_works/jdbcdriver.rb +30 -0
  23. data/lib/lucid_works/role.rb +59 -0
  24. data/lib/lucid_works/schema/attribute.rb +86 -0
  25. data/lib/lucid_works/schema/boolean_attribute.rb +34 -0
  26. data/lib/lucid_works/schema/custom_attribute.rb +15 -0
  27. data/lib/lucid_works/schema/integer_attribute.rb +32 -0
  28. data/lib/lucid_works/schema/iso8601_attribute.rb +31 -0
  29. data/lib/lucid_works/schema/string_attribute.rb +22 -0
  30. data/lib/lucid_works/schema.rb +66 -97
  31. data/lib/lucid_works/server.rb +14 -0
  32. data/lib/lucid_works.rb +12 -0
  33. data/spec/fixtures/fake_file_ds_to_be_deleted/.gitkeep +0 -0
  34. data/spec/fixtures/fake_file_ds_to_be_updated/.gitkeep +0 -0
  35. data/spec/fixtures/fake_file_ds_to_get_index_of/.gitkeep +0 -0
  36. data/spec/fixtures/fake_file_ds_to_get_schedule_of/.gitkeep +0 -0
  37. data/spec/fixtures/fake_file_ds_to_get_status_of/.gitkeep +0 -0
  38. data/spec/fixtures/fake_file_ds_to_mess_with_job_of/.gitkeep +0 -0
  39. data/spec/fixtures/fake_file_ds_to_test_progress/.gitkeep +0 -0
  40. data/spec/lib/lucid_works/associations/has_many_spec.rb +4 -3
  41. data/spec/lib/lucid_works/associations/has_one_spec.rb +4 -3
  42. data/spec/lib/lucid_works/base_spec.rb +110 -62
  43. data/spec/lib/lucid_works/collection/activity/history_spec.rb +1 -1
  44. data/spec/lib/lucid_works/collection_spec.rb +17 -17
  45. data/spec/lib/lucid_works/datasource/history_spec.rb +4 -4
  46. data/spec/lib/lucid_works/datasource/status_spec.rb +7 -7
  47. data/spec/lib/lucid_works/datasource_spec.rb +9 -8
  48. data/spec/lib/lucid_works/field_spec.rb +101 -2
  49. data/spec/lib/lucid_works/fieldtype_spec.rb +156 -0
  50. data/spec/lib/lucid_works/schema/attribute_spec.rb +136 -0
  51. data/spec/lib/lucid_works/schema_spec.rb +53 -27
  52. data/spec/spec_helper.rb +3 -50
  53. data/spec/support/active_model_lint.rb +21 -0
  54. data/spec/support/lucid_works.rb +52 -0
  55. metadata +36 -2
@@ -2,7 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  describe LucidWorks::Schema do
4
4
  before do
5
- @schema = LucidWorks::Schema.new
5
+ @mock_model = double('a model')
6
+ @schema = LucidWorks::Schema.new(@mock_model)
6
7
  @schema.instance_eval do
7
8
  attribute :astring, :string, :primary_key => true
8
9
  attribute :abool, :boolean
@@ -13,53 +14,53 @@ describe LucidWorks::Schema do
13
14
  end
14
15
 
15
16
  describe "#attribute" do
16
- before { @schema = LucidWorks::Schema.new }
17
+ before { @schema = LucidWorks::Schema.new(@mock_model) }
17
18
 
18
- describe "using default type" do
19
+ context "using default type" do
19
20
  it "should create a string attribute" do
20
- @schema.attribute :foo
21
- @schema[:foo][:type].should == :string
21
+ @schema.instance_eval do
22
+ attribute :foo
23
+ end
24
+ @schema[:foo].type.should == :string
22
25
  end
23
26
  end
24
27
 
25
- describe "with a bad type" do
26
- it "should raise an error" do
27
- lambda {
28
- @schema.attribute :foo, :badtype
29
- }.should raise_error
28
+ context "with a name that cannot be represented as a ruby identifier" do
29
+ before do
30
+ @schema.instance_eval do
31
+ attribute 'dash-dash', :string
32
+ end
30
33
  end
31
- end
32
34
 
33
- [:string, :integer, :boolean, :iso8601].each do |attr_type|
34
- it "should allow type #{attr_type}" do
35
- @schema.attribute :foo, attr_type
36
- @schema[:foo][:type].should == attr_type
35
+ it "should map the name to something usable" do
36
+ @schema.should have_attribute(:dash_dash)
37
+ @schema[:dash_dash].type.should == :string
37
38
  end
38
39
  end
39
40
  end
40
41
 
41
42
  describe "instance_eval" do
42
43
  it "should process the block in its context and create an attribute list" do
43
- @schema.should == {
44
- 'astring' => {'type' => :string},
45
- 'anint' => {'type' => :integer},
46
- 'baz' => {'type' => :integer},
47
- 'abool' => {'type' => :boolean},
48
- 'nullstring' => {'type' => :string, 'nil_when_blank' => true},
49
- 'time' => {'type' => :iso8601}
50
- }
44
+ @schema[:astring].type.should == :string
45
+ @schema[:astring].type.should == :string
46
+ @schema[:anint].type.should == :integer
47
+ @schema[:baz].type.should == :integer
48
+ @schema[:abool].type.should == :boolean
49
+ @schema[:nullstring].type.should == :string
50
+ @schema[:nullstring].nil_when_blank?.should be_true
51
+ @schema[:time].type.should == :iso8601
51
52
  @schema.primary_key.should == :astring
52
53
  end
53
54
  end
54
55
 
55
56
  describe "#primary_key" do
56
57
  it "should default to 'id'" do
57
- LucidWorks::Schema.new.primary_key.should == :id
58
+ LucidWorks::Schema.new(@mock_model).primary_key.should == :id
58
59
  end
59
60
 
60
61
  context "when given an argument" do
61
62
  it "should set the primary key to the provided value" do
62
- schema = LucidWorks::Schema.new
63
+ schema = LucidWorks::Schema.new(@mock_model)
63
64
  schema.primary_key 'astring'
64
65
  schema.primary_key.should == :astring
65
66
  end
@@ -68,13 +69,13 @@ describe LucidWorks::Schema do
68
69
 
69
70
  describe "#dynamic_attributes" do
70
71
  it "should default to true" do
71
- schema = LucidWorks::Schema.new
72
+ schema = LucidWorks::Schema.new(@mock_model)
72
73
  schema.dynamic_attributes.should be_true
73
74
  end
74
75
 
75
76
  context "when given an argument" do
76
77
  it "should set dynamic_attributes to the provided value" do
77
- schema = LucidWorks::Schema.new
78
+ schema = LucidWorks::Schema.new(@mock_model)
78
79
  schema.dynamic_attributes false
79
80
  schema.dynamic_attributes.should be_false
80
81
  end
@@ -179,4 +180,29 @@ describe LucidWorks::Schema do
179
180
  @schema.has_attribute?(:not_an_attribute).should be_false
180
181
  end
181
182
  end
183
+
184
+ describe "#reset!" do
185
+ it "should reset the schema to only those attributes defined via attribute/attributes" do
186
+ schema = LucidWorks::Schema.new(@mock_model)
187
+ schema.instance_eval do
188
+ attributes :original_attr1, :original_attr2, :type => :string
189
+ end
190
+ schema.add_attribute(:added_attr1, :string)
191
+ schema.add_attribute(:added_attr2, :string)
192
+
193
+ @mock_model.should respond_to('added_attr1')
194
+ @mock_model.should respond_to('added_attr1=')
195
+ @mock_model.should respond_to('added_attr2')
196
+ @mock_model.should respond_to('added_attr2=')
197
+
198
+ schema.reset!
199
+
200
+ @mock_model.should_not respond_to('added_attr1')
201
+ @mock_model.should_not respond_to('added_attr1=')
202
+ @mock_model.should_not respond_to('added_attr2')
203
+ @mock_model.should_not respond_to('added_attr2=')
204
+
205
+ schema.keys.should == %w{original_attr1 original_attr2}
206
+ end
207
+ end
182
208
  end
data/spec/spec_helper.rb CHANGED
@@ -1,55 +1,8 @@
1
1
  require 'lucid_works'
2
2
  require 'timecop'
3
3
 
4
- def connect_to_live_server
5
- server_uri = ENV['LUCIDWORKS_SERVER_URI']
6
- raise "
7
- These tests require a real live LucidWorks server,
8
- please set LUCIDWORKS_SERVER_URI environment variable,
9
- e.g. export LUCIDWORKS_SERVER_URI=http://localhost:8888 " unless server_uri
10
- LucidWorks::Server.new(server_uri)
11
- end
12
-
13
- class LucidWorks::Server
14
- DUMMY_COLLECTION_NAME = 'collection_that_should_never_exist'
15
- DEFAULT_COLLECTION_NAME = 'collection1'
16
-
17
- # Reset set of collections to contain 1 collection with the default name "collection1".
18
- #
19
- # LWE-CORE will not allow deletion of the last collection, so:
20
- # create a junk empty one
21
- # delete all the others
22
- # create the default one
23
- # delete the junk one
24
- #
25
- def reset_collections!
26
- notes = [ "Resetting all collections:" ]
27
-
28
- collections = self.collections!
29
-
30
- dummy_collection = collections.find { |c| c.name == DUMMY_COLLECTION_NAME }
31
- if dummy_collection
32
- notes << "Using dummy collection #{dummy_collection.name}"
33
- collections.delete_if { |c| c.name == DUMMY_COLLECTION_NAME }
34
- else
35
- dummy_collection = self.create_collection(:name => DUMMY_COLLECTION_NAME)
36
- notes << "Created collection #{dummy_collection.name}"
37
- end
38
-
39
- collections.each do |c|
40
- # TODO: figure out how to delete and recreate logs collection
41
- # For now just don't delete it
42
- unless c.name == 'LucidWorksLogs'
43
- c.destroy
44
- notes << "Deleted collection '#{c.name}'"
45
- end
46
- end
47
-
48
- default_collection = self.create_collection(:name => DEFAULT_COLLECTION_NAME)
49
- notes << "Created collection '#{default_collection.name}'"
4
+ Dir[File.join(File.dirname(__FILE__), "support/**/*.rb")].each {|f| require f}
50
5
 
51
- dummy_collection.destroy
52
- notes << "Deleted collection #{dummy_collection.name}"
53
- notes
54
- end
6
+ def fixture_path(file)
7
+ File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', file))
55
8
  end
@@ -0,0 +1,21 @@
1
+ # https://gist.github.com/639089
2
+
3
+ # adapted from rspec-rails http://github.com/rspec/rspec-rails/blob/master/spec/rspec/rails/mocks/mock_model_spec.rb
4
+
5
+ shared_examples_for "ActiveModel" do
6
+ require 'test/unit/assertions'
7
+ require 'active_model/lint'
8
+ include Test::Unit::Assertions
9
+ include ActiveModel::Lint::Tests
10
+
11
+ # to_s is to support ruby-1.9
12
+ ActiveModel::Lint::Tests.public_instance_methods.map{|m| m.to_s}.grep(/^test/).each do |m|
13
+ example m.gsub('_',' ') do
14
+ send m
15
+ end
16
+ end
17
+
18
+ def model
19
+ subject
20
+ end
21
+ end
@@ -0,0 +1,52 @@
1
+ def connect_to_live_server
2
+ server_uri = ENV['LUCIDWORKS_SERVER_URI']
3
+ raise "
4
+ These tests require a real live LucidWorks server,
5
+ please set LUCIDWORKS_SERVER_URI environment variable, e.g.
6
+ export LUCIDWORKS_SERVER_URI=http://localhost:8888\n" unless server_uri
7
+ LucidWorks::Server.new(server_uri)
8
+ end
9
+
10
+ class LucidWorks::Server
11
+ DUMMY_COLLECTION_NAME = 'collection_that_should_never_exist'
12
+ DEFAULT_COLLECTION_NAME = 'collection1'
13
+
14
+ # Reset set of collections to contain 1 collection with the default name "collection1".
15
+ #
16
+ # LWE-CORE will not allow deletion of the last collection, so:
17
+ # create a junk empty one
18
+ # delete all the others
19
+ # create the default one
20
+ # delete the junk one
21
+ #
22
+ def reset_collections!
23
+ notes = [ "Resetting all collections:" ]
24
+
25
+ collections = self.collections!
26
+
27
+ dummy_collection = collections.find { |c| c.name == DUMMY_COLLECTION_NAME }
28
+ if dummy_collection
29
+ notes << "Using dummy collection #{dummy_collection.name}"
30
+ collections.delete_if { |c| c.name == DUMMY_COLLECTION_NAME }
31
+ else
32
+ dummy_collection = self.create_collection(:name => DUMMY_COLLECTION_NAME)
33
+ notes << "Created collection #{dummy_collection.name}"
34
+ end
35
+
36
+ collections.each do |c|
37
+ # TODO: figure out how to delete and recreate logs collection
38
+ # For now just don't delete it
39
+ unless c.name == 'LucidWorksLogs'
40
+ c.destroy
41
+ notes << "Deleted collection '#{c.name}'"
42
+ end
43
+ end
44
+
45
+ default_collection = self.create_collection(:name => DEFAULT_COLLECTION_NAME)
46
+ notes << "Created collection '#{default_collection.name}'"
47
+
48
+ dummy_collection.destroy
49
+ notes << "Deleted collection #{dummy_collection.name}"
50
+ notes
51
+ end
52
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: lucid_works
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.6.29
5
+ version: 0.7.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Sam Pierson
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-15 00:00:00 -04:00
13
+ date: 2011-08-23 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -120,6 +120,7 @@ files:
120
120
  - lib/lucid_works/associations/proxy.rb
121
121
  - lib/lucid_works/base.rb
122
122
  - lib/lucid_works/collection.rb
123
+ - lib/lucid_works/collection/click.rb
123
124
  - lib/lucid_works/collection/index.rb
124
125
  - lib/lucid_works/collection/info.rb
125
126
  - lib/lucid_works/collection/settings.rb
@@ -131,9 +132,13 @@ files:
131
132
  - lib/lucid_works/datasource/job.rb
132
133
  - lib/lucid_works/datasource/schedule.rb
133
134
  - lib/lucid_works/datasource/status.rb
135
+ - lib/lucid_works/datasource_property.rb
136
+ - lib/lucid_works/datasource_type.rb
134
137
  - lib/lucid_works/exceptions.rb
135
138
  - lib/lucid_works/field.rb
139
+ - lib/lucid_works/fieldtype.rb
136
140
  - lib/lucid_works/gem_version.rb
141
+ - lib/lucid_works/jdbcdriver.rb
137
142
  - lib/lucid_works/logs.rb
138
143
  - lib/lucid_works/logs/index.rb
139
144
  - lib/lucid_works/logs/index/summary.rb
@@ -141,13 +146,27 @@ files:
141
146
  - lib/lucid_works/logs/query/summary.rb
142
147
  - lib/lucid_works/patch_restclient.rb
143
148
  - lib/lucid_works/patch_time.rb
149
+ - lib/lucid_works/role.rb
144
150
  - lib/lucid_works/schema.rb
151
+ - lib/lucid_works/schema/attribute.rb
152
+ - lib/lucid_works/schema/boolean_attribute.rb
153
+ - lib/lucid_works/schema/custom_attribute.rb
154
+ - lib/lucid_works/schema/integer_attribute.rb
155
+ - lib/lucid_works/schema/iso8601_attribute.rb
156
+ - lib/lucid_works/schema/string_attribute.rb
145
157
  - lib/lucid_works/server.rb
146
158
  - lib/lucid_works/simple_naming.rb
147
159
  - lib/lucid_works/synonym.rb
148
160
  - lib/lucid_works/utils.rb
149
161
  - lib/lucid_works/version.rb
150
162
  - lucid_works.gemspec
163
+ - spec/fixtures/fake_file_ds_to_be_deleted/.gitkeep
164
+ - spec/fixtures/fake_file_ds_to_be_updated/.gitkeep
165
+ - spec/fixtures/fake_file_ds_to_get_index_of/.gitkeep
166
+ - spec/fixtures/fake_file_ds_to_get_schedule_of/.gitkeep
167
+ - spec/fixtures/fake_file_ds_to_get_status_of/.gitkeep
168
+ - spec/fixtures/fake_file_ds_to_mess_with_job_of/.gitkeep
169
+ - spec/fixtures/fake_file_ds_to_test_progress/.gitkeep
151
170
  - spec/lib/lucid_works/associations/has_many_spec.rb
152
171
  - spec/lib/lucid_works/associations/has_one_spec.rb
153
172
  - spec/lib/lucid_works/associations_spec.rb
@@ -163,11 +182,15 @@ files:
163
182
  - spec/lib/lucid_works/datasource/status_spec.rb
164
183
  - spec/lib/lucid_works/datasource_spec.rb
165
184
  - spec/lib/lucid_works/field_spec.rb
185
+ - spec/lib/lucid_works/fieldtype_spec.rb
166
186
  - spec/lib/lucid_works/patch_time_spec.rb
187
+ - spec/lib/lucid_works/schema/attribute_spec.rb
167
188
  - spec/lib/lucid_works/schema_spec.rb
168
189
  - spec/lib/lucid_works/server_spec.rb
169
190
  - spec/lib/lucid_works/utils_spec.rb
170
191
  - spec/spec_helper.rb
192
+ - spec/support/active_model_lint.rb
193
+ - spec/support/lucid_works.rb
171
194
  has_rdoc: true
172
195
  homepage: ""
173
196
  licenses: []
@@ -197,6 +220,13 @@ signing_key:
197
220
  specification_version: 3
198
221
  summary: Ruby wrapper for the LucidWorks REST API
199
222
  test_files:
223
+ - spec/fixtures/fake_file_ds_to_be_deleted/.gitkeep
224
+ - spec/fixtures/fake_file_ds_to_be_updated/.gitkeep
225
+ - spec/fixtures/fake_file_ds_to_get_index_of/.gitkeep
226
+ - spec/fixtures/fake_file_ds_to_get_schedule_of/.gitkeep
227
+ - spec/fixtures/fake_file_ds_to_get_status_of/.gitkeep
228
+ - spec/fixtures/fake_file_ds_to_mess_with_job_of/.gitkeep
229
+ - spec/fixtures/fake_file_ds_to_test_progress/.gitkeep
200
230
  - spec/lib/lucid_works/associations/has_many_spec.rb
201
231
  - spec/lib/lucid_works/associations/has_one_spec.rb
202
232
  - spec/lib/lucid_works/associations_spec.rb
@@ -212,8 +242,12 @@ test_files:
212
242
  - spec/lib/lucid_works/datasource/status_spec.rb
213
243
  - spec/lib/lucid_works/datasource_spec.rb
214
244
  - spec/lib/lucid_works/field_spec.rb
245
+ - spec/lib/lucid_works/fieldtype_spec.rb
215
246
  - spec/lib/lucid_works/patch_time_spec.rb
247
+ - spec/lib/lucid_works/schema/attribute_spec.rb
216
248
  - spec/lib/lucid_works/schema_spec.rb
217
249
  - spec/lib/lucid_works/server_spec.rb
218
250
  - spec/lib/lucid_works/utils_spec.rb
219
251
  - spec/spec_helper.rb
252
+ - spec/support/active_model_lint.rb
253
+ - spec/support/lucid_works.rb