lucid_works 0.7.10 → 0.7.15

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lucid_works (0.7.7)
4
+ lucid_works (0.7.14)
5
5
  activemodel (>= 3)
6
6
  activesupport (>= 3)
7
7
  json
@@ -42,7 +42,7 @@ en:
42
42
  index_time_stopwords: Exclude stop words from index
43
43
  query_parser: Query parser
44
44
  query_time_stopwords: Include stop words in searches
45
- query_time_synonyms: Use synomyms
45
+ query_time_synonyms: Use synonyms
46
46
  search_server_list: Search server list
47
47
  show_similar: Show "find similar" links
48
48
  spellcheck: Spell-check
@@ -54,6 +54,9 @@ en:
54
54
  unsupervised_feedback_emphasis: Unsupervised feedback emphasis
55
55
  update_server_list: Update server list
56
56
  datasource:
57
+ subtype:
58
+ web:
59
+ url: Custom legend for url
57
60
  aliases: Site Aliases Mappings
58
61
  auth: Authentication credentials
59
62
  authorization: Authorization
@@ -83,7 +86,6 @@ en:
83
86
  log_extra_detail: Log extra detail
84
87
  max_bytes: Skip files larger than (bytes)
85
88
  my_site_base_url: MySite URL
86
- no_duplicates: Suppress duplicates
87
89
  password: Password
88
90
  proxy_host: Proxy host
89
91
  proxy_password: Proxy password
@@ -121,7 +123,7 @@ en:
121
123
  include_in_results: Include in results
122
124
  index_for_autocomplete: Index for autocomplete
123
125
  index_for_spellcheck: Index for spell checking
124
- index_term_freq_and_pos: Index term frequencies and positions
126
+ indexing_options: Index term frequencies and positions
125
127
  indexed: Indexed
126
128
  multi_valued: Multi-valued
127
129
  name: Name
@@ -194,7 +196,7 @@ en:
194
196
  field:
195
197
  one: Field
196
198
  other: Fields
197
- index_term_freq_and_pos:
199
+ indexing_options:
198
200
  document_only: none
199
201
  document_termfreq: term frequencies
200
202
  document_termfreq_termpos: term frequencies and positions
@@ -212,14 +214,50 @@ en:
212
214
  collection:
213
215
  name: ! 'Collection names may use the characters: A-Z, a-z, 0-9, dash and
214
216
  underscore'
217
+
215
218
  datasource:
216
219
  crawl_depth: Leave blank or set to -1 to crawl with no depth limit.
217
220
  exclude_paths: A list of regular expressions, one per line, e.g. .*\.pdf will
218
221
  ignore filenames ending in .pdf.
219
- include_paths: A list of regular expressions, one per line, e.g. http://example\.com/.*
220
- will match everything within the site only.
222
+ include_paths: A list of regular expressions, one per line.
221
223
  max_bytes: Default = 10 MiB. Set to -1 to indicate no file size limit.
222
- url: e.g. http://cnn.com. Please include protocol (http/https).
224
+
225
+ # Custom datasource hints
226
+ external:
227
+ file:
228
+ datasource:
229
+ path: Full pathname to folder
230
+ ftp:
231
+ hdfs:
232
+ datasource:
233
+ url: "Please include protocol: hdfs://<hostname>"
234
+ jdbc:
235
+ datasource:
236
+ delta_sql_query: "$ in this query will be replaced by the last successful import time."
237
+ driver: "Database drivers may be uploaded on the Indexing -> JDBC Drivers page.
238
+ Drivers are collection specific.
239
+ JDBC4 drivers will appear in the selector automatically.
240
+ To use a JDBC3 driver, select \"Other\" and enter the Java class name of the driver."
241
+ url: "e.g. jdbc:mysql://hostname/database_name"
242
+ kfs:
243
+ lucidworkslogs:
244
+ s3:
245
+ datasource:
246
+ url: "Please include protocol: s3://<hostname>/path/to/filesystem"
247
+ s3n:
248
+ datasource:
249
+ url: "Please include protocol: s3n://<hostname>/path/to/filesystem"
250
+ sharepoint:
251
+ smb:
252
+ datasource:
253
+ url: "Format: smb://<hostname or ip address>/<path to folder>/"
254
+ solrxml:
255
+ web:
256
+ datasource:
257
+ include_paths: A list of regular expressions, one per line, e.g. http://example\.com/.*
258
+ will match everything within the site only.
259
+ url: e.g. http://cnn.com. Please include protocol (http/https).
260
+
223
261
  field:
224
262
  copy_fields: A list of fields separated by spaces.
225
263
  synonym:
@@ -4,12 +4,8 @@ module LucidWorks
4
4
  belongs_to :activity
5
5
  self.collection_name = 'history' # i.e. not the plural 'histories'
6
6
 
7
- def activity_finished
8
- Time.iso8601 activityFinished
9
- end
10
-
11
- def activity_started
12
- Time.iso8601 activityStarted
7
+ schema do
8
+ attributes :activity_started, :activity_finished, :type => :iso8601
13
9
  end
14
10
 
15
11
  def duration
@@ -27,6 +27,7 @@ module LucidWorks
27
27
  # wandering through that code.
28
28
 
29
29
  include ActiveModel::Validations
30
+ include ActiveModel::Validations::Callbacks
30
31
  include ActiveModel::Conversion
31
32
  extend ActiveModel::Naming
32
33
  extend ActiveModel::Translation
@@ -294,8 +295,8 @@ module LucidWorks
294
295
  end
295
296
 
296
297
  def save
298
+ return false unless valid?
297
299
  _run_save_callbacks do
298
- return false unless valid?
299
300
  ActiveSupport::Notifications.instrument("lucid_works.request") do |payload|
300
301
  method, uri = persisted? ? [:put, member_url] : [:post, collection_url]
301
302
  data = encode
@@ -20,7 +20,7 @@ module LucidWorks
20
20
  "filterer.class" => "com.lucid.security.WindowsACLQueryFilterer",
21
21
  "provider.class" => "com.lucid.security.ad.ADACLTagProvider",
22
22
  }
23
- MAGIC_ACL_ONLY_FILTER_SETTING = {'should.clause' => '*:* -data_source_type:smb'}
23
+ MAGIC_ACL_ONLY_FILTER_SETTING = {'should_clause' => '*:* -data_source_type:smb'}
24
24
 
25
25
  validates_presence_of :name
26
26
 
@@ -10,7 +10,7 @@ module LucidWorks
10
10
 
11
11
  def datasource_types=(array_of_hashes)
12
12
  @datasource_types ||= array_of_hashes.map do |dt_attrs|
13
- DatasourceType.new(dt_attrs)
13
+ DatasourceType.new(self, dt_attrs)
14
14
  end
15
15
  end
16
16
 
@@ -59,7 +59,6 @@ module LucidWorks
59
59
  attribute :log_extra_detail, :boolean
60
60
  attribute :fail_unsupported_file_types, :boolean
61
61
  attribute :warn_unknown_mime_types, :boolean
62
- attribute :no_duplicates, :boolean
63
62
  # sharepoint
64
63
  attribute :sharepoint_url
65
64
  attribute :connector_type
@@ -2,9 +2,16 @@ module LucidWorks
2
2
 
3
3
  class DatasourceType
4
4
 
5
- attr_reader :category, :type, :props
5
+ DONT_INITIALIZE_PROPERTIES = [
6
+ "collection", # not something we can provide a default for
7
+ "name", # not something we can provide a default for
8
+ "---" # Separator UI hint
9
+ ]
6
10
 
7
- def initialize(attributes = {})
11
+ attr_reader :crawler, :category, :type, :props
12
+
13
+ def initialize(crawler, attributes = {})
14
+ @crawler = crawler
8
15
  @category = attributes['category']
9
16
  @type = attributes['type']
10
17
  @props = attributes['props']
@@ -19,5 +26,19 @@ module LucidWorks
19
26
  def property(name)
20
27
  properties.detect { |p| p.name == name }
21
28
  end
29
+
30
+ def default_attributes
31
+ attrs = {}.with_indifferent_access
32
+ properties.inject(attrs) do |hash, property|
33
+ unless DONT_INITIALIZE_PROPERTIES.include?(property.name) || property.read_only?
34
+ hash[property.name] = property.default_value
35
+ end
36
+ hash
37
+ end
38
+ attrs.merge!(
39
+ :crawler => @crawler.name,
40
+ :type => @type
41
+ )
42
+ end
22
43
  end
23
44
  end
@@ -9,6 +9,12 @@ module LucidWorks
9
9
  'document_termfreq_termpos'
10
10
  ]
11
11
 
12
+ BOOST_VALUES = [
13
+ 'none',
14
+ 'moderate',
15
+ 'high'
16
+ ]
17
+
12
18
  schema do
13
19
  attribute :name, :string, :primary_key => true, :omit_during_update => true
14
20
  attribute :editable, :boolean, :omit_during_update => true
@@ -24,16 +30,9 @@ module LucidWorks
24
30
  attribute :default_boost, :integer
25
31
  attributes :field_type, :short_field_boost, :term_vectors, :default_value, :type => :string
26
32
  attribute :copy_fields, :list
27
-
28
- attribute :index_term_freq_and_pos, :custom, :values => INDEXING_OPTIONS
33
+ attribute :indexing_options, :custom, :values => INDEXING_OPTIONS
29
34
  end
30
35
 
31
- BOOST_VALUES = [
32
- 'none',
33
- 'moderate',
34
- 'high'
35
- ]
36
-
37
36
  validates_presence_of :name
38
37
  validates_each :name, :unless => :persisted?, :allow_blank => true do |model, attr, value|
39
38
  model.errors.add(attr, 'must be unique') if model.collection.fields.any? {|f| f.name == value }
@@ -53,11 +52,34 @@ module LucidWorks
53
52
  validates_each :use_in_find_similar do |model, attr, value|
54
53
  model.errors.add(attr, 'a field must be indexed for it to be used for find-similar') if value == true && !model.indexed?
55
54
  end
55
+ validates_each :indexing_options do |model, attr, value|
56
+ if model.persisted?
57
+ if value
58
+ if model.indexed?
59
+ model.errors.add(attr, "must be one of #{INDEXING_OPTIONS.join(', ')}") unless INDEXING_OPTIONS.include?(value.to_s)
60
+ end
61
+ else
62
+ # If the model is already persisted, but the user has not manually set indexing_options,
63
+ # just go with the omit_tf/omit_positions we have now.
64
+ end
65
+ else # new model
66
+ if model.indexed?
67
+ # If this is a new model, and the user set 'indexed' they MUST also set indexing_options
68
+ model.errors.add(attr, "must be one of #{INDEXING_OPTIONS.join(', ')}") unless INDEXING_OPTIONS.include?(value.to_s)
69
+ end
70
+ end
71
+ end
72
+
73
+ before_save :convert_indexing_options_to_term_freq_and_pos
74
+
75
+ def initialize(options)
76
+ super(options.reverse_merge(:omit_tf => false, :short_field_boost => 'high'))
77
+ end
56
78
 
57
79
  def dynamically_generated?
58
80
  !dynamic_base.blank?
59
81
  end
60
-
82
+
61
83
  def t_field_type
62
84
  self.class.t_field_type(self.field_type)
63
85
  end
@@ -65,20 +87,39 @@ module LucidWorks
65
87
  def self.t_field_type(type)
66
88
  I18n.translate(type, :scope => 'activemodel.models.lucid_works.collection.field.field_type')
67
89
  end
68
-
69
- def initialize(options)
70
- super(options.reverse_merge(:omit_tf => false, :short_field_boost => 'high'))
90
+
91
+ # Indexing_options is a fake attribute that wraps the omit_tf and omit_positions combinations.
92
+ # Translations are:
93
+ #
94
+ # INDEXED? indexing_options omit_tf omit_positions
95
+ #
96
+ # false - true true
97
+ # true :document_only true true
98
+ # true :document_termfreq false true
99
+ # true :documents_termfreq_termpos false false
100
+ #
101
+ def indexing_options
102
+ @attributes[:indexing_options] ||=
103
+ if !indexed? || omit_tf?
104
+ :document_only
105
+ else
106
+ omit_positions? ? :document_termfreq : :document_termfreq_termpos
107
+ end
71
108
  end
72
109
 
73
- # Meta attribute that wraps the omit_tf and omit_positions combinations
74
- def index_term_freq_and_pos
75
- return :document_only if !indexed? || omit_tf?
76
- return omit_positions? ? :document_termfreq : :document_termfreq_termpos
110
+ # We have to remember the caller's choice of indexing_options, as we can't determine the correct
111
+ # omit_tf/omit_positions settins until we also know whether 'indexed' is set or not.
112
+ # So we keep it as an attribute for now, and remove it in a before_save.
113
+ def indexing_options=(new_value)
114
+ @attributes[:indexing_options] = new_value
77
115
  end
78
116
 
79
- def index_term_freq_and_pos=(indexing_options)
80
- if indexed?
81
- case indexing_options.to_sym
117
+ # Convert indexing_options to the correct values for omit_tf and omit_positions.
118
+ # Delete indexing_options from attributes so it is not saved.
119
+ def convert_indexing_options_to_term_freq_and_pos
120
+ i_opt = @attributes.delete(:indexing_options)
121
+ if indexed? && i_opt
122
+ case i_opt.to_sym
82
123
  when :document_only
83
124
  self.omit_tf = true
84
125
  self.omit_positions = true
@@ -89,12 +130,13 @@ module LucidWorks
89
130
  self.omit_tf = false
90
131
  self.omit_positions = false
91
132
  else
92
- raise "Unknown indexing option: '#{indexing_options}'. Allowed values are: #{INDEXING_OPTIONS.join(', ')}"
133
+ raise "Unknown indexing option: '#{i_opt}'. Allowed values are: #{INDEXING_OPTIONS.join(', ')}"
93
134
  end
94
135
  else # !indexed?
95
136
  self.omit_tf = true
96
137
  self.omit_positions = true
97
138
  end
139
+ true
98
140
  end
99
141
 
100
142
  def update_attributes(attrs)
@@ -1,3 +1,3 @@
1
1
  module LucidWorks
2
- VERSION = "0.7.10"
2
+ VERSION = "0.7.15"
3
3
  end
@@ -4,7 +4,7 @@ describe LucidWorks::Field do
4
4
  before :all do
5
5
  @server = connect_to_live_server
6
6
  @server.reset_collections!
7
- @collection = @server.collections.first
7
+ @collection = @server.collection('collection1')
8
8
  end
9
9
 
10
10
  it "should use the ORM" do
@@ -80,7 +80,7 @@ describe LucidWorks::Field do
80
80
  field.should_not be_valid
81
81
  field.errors[:short_field_boost].should == ['cannot be set to "none" for a non-indexed field']
82
82
  end
83
- LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :indexed => true, :short_field_boost => true).should be_valid
83
+ LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :indexed => true, :short_field_boost => true, :indexing_options => :document_only).should be_valid
84
84
  end
85
85
  end
86
86
 
@@ -90,7 +90,7 @@ describe LucidWorks::Field do
90
90
  field.should_not be_valid
91
91
  field.errors[:include_in_results].should == ["a field must be stored to be included in results"]
92
92
  end
93
- LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :stored => true, :include_in_results => true).should be_valid
93
+ LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :stored => true, :include_in_results => true, :indexing_options => :document_only).should be_valid
94
94
  end
95
95
  end
96
96
 
@@ -110,7 +110,7 @@ describe LucidWorks::Field do
110
110
  field.should_not be_valid
111
111
  field.errors[:facet].should == ["a field must be indexed to be facetable"]
112
112
  end
113
- LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :indexed => true, :facet => true).should be_valid
113
+ LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :indexed => true, :facet => true, :indexing_options => :document_only).should be_valid
114
114
  end
115
115
  end
116
116
 
@@ -120,7 +120,7 @@ describe LucidWorks::Field do
120
120
  field.should_not be_valid
121
121
  field.errors[:use_in_find_similar].should == ["a field must be indexed for it to be used for find-similar"]
122
122
  end
123
- LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :indexed => true, :use_in_find_similar => true).should be_valid
123
+ LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :indexed => true, :use_in_find_similar => true, :indexing_options => :document_only).should be_valid
124
124
  end
125
125
  end
126
126
  end
@@ -133,101 +133,141 @@ describe LucidWorks::Field do
133
133
  end
134
134
  end
135
135
 
136
- describe "#index_term_freq_and_pos" do
136
+ describe "indexing options" do
137
+ INDEXING_OPTIONS_TRUTH_TABLE = [
138
+ { :indexed => true, :indexing_options => :document_termfreq_termpos, :omit_tf => false, :omit_positions => false },
139
+ { :indexed => true, :indexing_options => :document_termfreq, :omit_tf => false, :omit_positions => true },
140
+ { :indexed => true, :indexing_options => :document_only, :omit_tf => true, :omit_positions => true },
141
+ { :indexed => false, :indexing_options => :document_termfreq_termpos, :omit_tf => true, :omit_positions => true },
142
+ { :indexed => false, :indexing_options => :document_termfreq_termpos, :omit_tf => true, :omit_positions => true },
143
+ { :indexed => false, :indexing_options => :document_termfreq_termpos, :omit_tf => true, :omit_positions => true },
144
+ ]
137
145
 
138
- context "when indexed is false" do
139
- before do
140
- @field = LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :indexed => false)
141
- end
146
+ context "when neither the setter nor getter have been accessed" do
147
+ context "for an object with indexed = false" do
148
+ before do
149
+ @field = LucidWorks::Field.find('url', :parent => @collection)
150
+ @field.indexed.should be_false
151
+ end
142
152
 
143
- [
144
- { :omit_tf => false, :omit_positions => false },
145
- { :omit_tf => false, :omit_positions => true },
146
- { :omit_tf => true, :omit_positions => false },
147
- { :omit_tf => true, :omit_positions => true }
148
- ].each do |settings|
149
- it "should reuturn :document if omit_tf=#{settings[:omit_tf]} and omit_positions=#{settings[:omit_positions]}" do
150
- settings.each { |k,v| @field.send("#{k}=", v) }
151
- @field.index_term_freq_and_pos.should == :document_only
153
+ it "should ignore indexing_options and validate okay" do
154
+ @field.should be_valid
152
155
  end
153
- end
154
- end
155
156
 
156
- context "when indexed is true" do
157
- before do
158
- @field = LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :indexed => true)
157
+ it "should save omit_tf and omit_positions as true" do
158
+ RestClient.stub(:send) do |method, url, payload, options|
159
+ method.should == :put
160
+ hash = JSON.parse(payload)
161
+ hash['omit_positions'].should be_true
162
+ hash['omit_tf'].should be_true
163
+ end
164
+
165
+ @field.save
166
+ end
159
167
  end
160
168
 
161
- [
162
- { :omit_tf => false, :omit_positions => false, :expected_result => :document_termfreq_termpos },
163
- { :omit_tf => false, :omit_positions => true , :expected_result => :document_termfreq },
164
- { :omit_tf => true, :omit_positions => false, :expected_result => :document_only },
165
- { :omit_tf => true, :omit_positions => true , :expected_result => :document_only }
166
- ].each do |data|
167
- it "should return #{data[:expected_result]} if omit_tf=#{data[:omit_tf]} and omit_positions=#{data[:omit_positions]}" do
168
- @field.omit_tf = data[:omit_tf]
169
- @field.omit_positions = data[:omit_positions]
170
- @field.index_term_freq_and_pos.should == data[:expected_result]
169
+ context "for an object with indexed = true" do
170
+ before do
171
+ @field = LucidWorks::Field.find('body', :parent => @collection)
172
+ end
173
+
174
+ it "should validate correctly" do
175
+ @field.should be_valid
171
176
  end
172
177
  end
173
178
  end
174
- end
175
179
 
176
- describe "#index_term_freq_and_pos=" do
180
+ describe "getter" do
181
+ context "when indexed is false" do
182
+ before do
183
+ @field = LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :indexed => false)
184
+ end
177
185
 
178
- INDEX_TERM_FREQ_AND_POS_TRUTH_TABLE = [
179
- { :omit_tf => false, :omit_positions => false, :index_term_freq_and_pos => :document_termfreq_termpos },
180
- { :omit_tf => false, :omit_positions => true , :index_term_freq_and_pos => :document_termfreq },
181
- { :omit_tf => true, :omit_positions => true , :index_term_freq_and_pos => :document_only }
182
- ]
186
+ describe "it should always return :document_termfreq_termpos" do
187
+ INDEXING_OPTIONS_TRUTH_TABLE.select{ |x| x[:indexed] == 'false'}.each do |settings|
188
+ it "should return :document_termfreq_termpos if omit_tf=#{settings[:omit_tf]} and omit_positions=#{settings[:omit_positions]}" do
189
+ settings.each { |k,v| @field.send("#{k}=", v) }
190
+ @field.indexing_options.should == :document_termfreq_termpos
191
+ end
192
+ end
183
193
 
184
- context "when indexed is true" do
185
- before do
186
- @field = LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :indexed => true)
194
+ end
187
195
  end
188
196
 
189
- INDEX_TERM_FREQ_AND_POS_TRUTH_TABLE.each do |data|
190
- it "should set omit_tf=#{data[:omit_tf]} and omit_positions=#{data[:omit_positions]} when given #{data[:index_term_freq_and_pos]}" do
191
- # Set to opposite so we can see change
192
- @field.omit_tf = !data[:omit_tf]
193
- @field.omit_positions = !data[:omit_positions]
194
-
195
- @field.index_term_freq_and_pos = data[:index_term_freq_and_pos]
196
-
197
- @field.omit_positions.should == data[:omit_positions]
198
- @field.omit_tf.should == data[:omit_tf]
197
+ context "when indexed is true" do
198
+ before do
199
+ @field = LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :indexed => true)
199
200
  end
200
- end
201
201
 
202
- context "given anything else" do
203
- it "should raise an error" do
204
- lambda {
205
- @field.index_term_freq_and_pos = :documents_and_bananas
206
- }.should raise_error
202
+ INDEXING_OPTIONS_TRUTH_TABLE.select { |x| x[:indexed] == true }.each do |data|
203
+ it "should return #{data[:indexing_options]} if omit_tf=#{data[:omit_tf]} and omit_positions=#{data[:omit_positions]}" do
204
+ @field.omit_tf = data[:omit_tf]
205
+ @field.omit_positions = data[:omit_positions]
206
+ @field.indexing_options.should == data[:indexing_options]
207
+ end
207
208
  end
208
209
  end
210
+
209
211
  end
210
212
 
211
- context "when indexed is false" do
213
+ describe "setter" do
212
214
  before do
213
- @field = LucidWorks::Field.new(:parent => @collection, :name => 'my_field', :indexed => false)
215
+ @field = LucidWorks::Field.new(:parent => @collection, :name => 'my_field')
214
216
  end
215
217
 
216
- INDEX_TERM_FREQ_AND_POS_TRUTH_TABLE.each do |data|
217
- it "should set omit_tf=true and omit_positions=true when given #{data[:index_term_freq_and_pos]}" do
218
- # Set to opposite so we can see change
219
- @field.omit_tf = false
220
- @field.omit_positions = false
218
+ INDEXING_OPTIONS_TRUTH_TABLE.each do |data|
219
+
220
+ context "when indexed is set to #{data[:indexed]} BEFORE indexing options is set to #{data[:indexing_options]}" do
221
+ before do
222
+ @field.indexed = data[:indexed]
223
+ @field.indexing_options = data[:indexing_options]
224
+ end
221
225
 
222
- @field.index_term_freq_and_pos = data[:index_term_freq_and_pos]
226
+ it "should set omit_tf=#{data[:omit_tf]} and omit_positions=#{data[:omit_positions]} before save" do
227
+ RestClient.stub(:send) do |method, url, payload, options|
228
+ method.should == :post
229
+ hash = JSON.parse(payload)
230
+ hash['omit_tf'].should == data[:omit_tf]
231
+ hash['omit_positions'].should == data[:omit_positions]
232
+ end
233
+ @field.save
234
+ end
223
235
 
224
- @field.omit_positions.should == true
225
- @field.omit_tf.should == true
236
+ it "should not pass indexing_options on to the rest api" do
237
+ RestClient.stub(:send) do |method, url, payload, options|
238
+ method.should == :post
239
+ hash = JSON.parse(payload)
240
+ hash.keys.should_not include('indexing_options')
241
+ end
242
+ @field.save
243
+ end
226
244
  end
227
- end
228
245
 
229
- it "should set omit_tf=true and omit_positions=true" do
246
+ context "when indexed is set to #{data[:indexed]} AFTER indexing options is set to #{data[:indexing_options]}" do
247
+ before do
248
+ @field.indexing_options = data[:indexing_options]
249
+ @field.indexed = data[:indexed]
250
+ end
251
+
252
+ it "should set omit_tf=#{data[:omit_tf]} and omit_positions=#{data[:omit_positions]} before save" do
253
+ RestClient.stub(:send) do |method, url, payload, options|
254
+ method.should == :post
255
+ hash = JSON.parse(payload)
256
+ hash['omit_tf'].should == data[:omit_tf]
257
+ hash['omit_positions'].should == data[:omit_positions]
258
+ end
259
+ @field.save
260
+ end
230
261
 
262
+ it "should not pass indexing_options on to the rest api" do
263
+ RestClient.stub(:send) do |method, url, payload, options|
264
+ method.should == :post
265
+ hash = JSON.parse(payload)
266
+ hash.keys.should_not include('indexing_options')
267
+ end
268
+ @field.save
269
+ end
270
+ end
231
271
  end
232
272
  end
233
273
  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.7.10
5
+ version: 0.7.15
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-09-02 00:00:00 -04:00
13
+ date: 2011-09-12 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency