ts-xml 0.0.1 → 1.0.2

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 (86) hide show
  1. data/LICENSE +1 -1
  2. data/README.textile +9 -9
  3. data/lib/thinking_sphinx/xml/adapters/oracle_adapter.rb +5 -2
  4. data/lib/thinking_sphinx/xml/tasks.rb +12 -4
  5. metadata +40 -102
  6. data/features/alternate_primary_key.feature +0 -27
  7. data/features/attribute_transformation.feature +0 -22
  8. data/features/attribute_updates.feature +0 -39
  9. data/features/deleting_instances.feature +0 -67
  10. data/features/direct_attributes.feature +0 -11
  11. data/features/excerpts.feature +0 -13
  12. data/features/extensible_delta_indexing.feature +0 -9
  13. data/features/facets.feature +0 -82
  14. data/features/facets_across_model.feature +0 -29
  15. data/features/handling_edits.feature +0 -92
  16. data/features/retry_stale_indexes.feature +0 -24
  17. data/features/searching_across_models.feature +0 -20
  18. data/features/searching_by_index.feature +0 -40
  19. data/features/searching_by_model.feature +0 -175
  20. data/features/searching_with_find_arguments.feature +0 -56
  21. data/features/sphinx_detection.feature +0 -25
  22. data/features/sphinx_scopes.feature +0 -42
  23. data/features/step_definitions/alpha_steps.rb +0 -7
  24. data/features/step_definitions/beta_steps.rb +0 -7
  25. data/features/step_definitions/common_steps.rb +0 -188
  26. data/features/step_definitions/extensible_delta_indexing_steps.rb +0 -7
  27. data/features/step_definitions/facet_steps.rb +0 -96
  28. data/features/step_definitions/find_arguments_steps.rb +0 -36
  29. data/features/step_definitions/gamma_steps.rb +0 -15
  30. data/features/step_definitions/scope_steps.rb +0 -15
  31. data/features/step_definitions/search_steps.rb +0 -89
  32. data/features/step_definitions/sphinx_steps.rb +0 -35
  33. data/features/sti_searching.feature +0 -19
  34. data/features/support/database.example.yml +0 -3
  35. data/features/support/db/fixtures/alphas.rb +0 -10
  36. data/features/support/db/fixtures/authors.rb +0 -1
  37. data/features/support/db/fixtures/betas.rb +0 -10
  38. data/features/support/db/fixtures/boxes.rb +0 -9
  39. data/features/support/db/fixtures/categories.rb +0 -1
  40. data/features/support/db/fixtures/cats.rb +0 -3
  41. data/features/support/db/fixtures/comments.rb +0 -24
  42. data/features/support/db/fixtures/developers.rb +0 -29
  43. data/features/support/db/fixtures/dogs.rb +0 -3
  44. data/features/support/db/fixtures/extensible_betas.rb +0 -10
  45. data/features/support/db/fixtures/foxes.rb +0 -3
  46. data/features/support/db/fixtures/gammas.rb +0 -10
  47. data/features/support/db/fixtures/people.rb +0 -1001
  48. data/features/support/db/fixtures/posts.rb +0 -6
  49. data/features/support/db/fixtures/robots.rb +0 -14
  50. data/features/support/db/fixtures/tags.rb +0 -27
  51. data/features/support/db/migrations/create_alphas.rb +0 -7
  52. data/features/support/db/migrations/create_animals.rb +0 -5
  53. data/features/support/db/migrations/create_authors.rb +0 -3
  54. data/features/support/db/migrations/create_authors_posts.rb +0 -6
  55. data/features/support/db/migrations/create_betas.rb +0 -5
  56. data/features/support/db/migrations/create_boxes.rb +0 -5
  57. data/features/support/db/migrations/create_categories.rb +0 -3
  58. data/features/support/db/migrations/create_comments.rb +0 -10
  59. data/features/support/db/migrations/create_developers.rb +0 -9
  60. data/features/support/db/migrations/create_extensible_betas.rb +0 -5
  61. data/features/support/db/migrations/create_gammas.rb +0 -3
  62. data/features/support/db/migrations/create_people.rb +0 -13
  63. data/features/support/db/migrations/create_posts.rb +0 -5
  64. data/features/support/db/migrations/create_robots.rb +0 -4
  65. data/features/support/db/migrations/create_taggings.rb +0 -5
  66. data/features/support/db/migrations/create_tags.rb +0 -4
  67. data/features/support/env.rb +0 -21
  68. data/features/support/lib/generic_delta_handler.rb +0 -8
  69. data/features/support/models/alpha.rb +0 -21
  70. data/features/support/models/animal.rb +0 -5
  71. data/features/support/models/author.rb +0 -3
  72. data/features/support/models/beta.rb +0 -8
  73. data/features/support/models/box.rb +0 -8
  74. data/features/support/models/cat.rb +0 -3
  75. data/features/support/models/category.rb +0 -4
  76. data/features/support/models/comment.rb +0 -10
  77. data/features/support/models/developer.rb +0 -16
  78. data/features/support/models/dog.rb +0 -3
  79. data/features/support/models/extensible_beta.rb +0 -9
  80. data/features/support/models/fox.rb +0 -5
  81. data/features/support/models/gamma.rb +0 -5
  82. data/features/support/models/person.rb +0 -23
  83. data/features/support/models/post.rb +0 -21
  84. data/features/support/models/robot.rb +0 -12
  85. data/features/support/models/tag.rb +0 -3
  86. data/features/support/models/tagging.rb +0 -4
@@ -1,56 +0,0 @@
1
- Feature: Keeping AR::Base.find arguments in search calls
2
- To keep things as streamlined as possible
3
- Thinking Sphinx
4
- Should respect particular arguments to AR::Base.find calls
5
-
6
- Scenario: Respecting the include option
7
- Given Sphinx is running
8
- And I am searching on posts
9
- Then I should get 1 result
10
-
11
- When I get the first comment
12
- And I track queries
13
- And I compare comments
14
- Then I should have 1 query
15
-
16
- When I include comments
17
- Then I should get 1 result
18
- When I track queries
19
- And I compare comments
20
- Then I should have 0 queries
21
-
22
- Scenario: Respecting the include option without using a specific model
23
- Given Sphinx is running
24
- And I search for "Hello World"
25
- Then I should get 1 result
26
-
27
- When I get the first comment
28
- And I track queries
29
- And I compare comments
30
- Then I should have 1 query
31
-
32
- When I include comments
33
- Then I should get 1 result
34
- When I track queries
35
- And I compare comments
36
- Then I should have 0 queries
37
-
38
- Scenario: Respecting the select option
39
- Given Sphinx is running
40
- And I am searching on posts
41
- Then I should get 1 result
42
- And I should not get an error accessing the subject
43
-
44
- When I select only content
45
- Then I should get 1 result
46
- And I should get an error accessing the subject
47
-
48
- Scenario: Respecting the select option without using a specific model
49
- Given Sphinx is running
50
- When I search for "Hello World"
51
- Then I should get 1 result
52
- And I should not get an error accessing the subject
53
-
54
- When I select only content
55
- Then I should get 1 result
56
- And I should get an error accessing the subject
@@ -1,25 +0,0 @@
1
- Feature: Checking whether Sphinx is running or not
2
- In order to avoid unnecessary errors
3
- Thinking Sphinx
4
- Should be able to determine whether Sphinx is running or not
5
-
6
- Scenario: Checking Sphinx's status
7
- Given Sphinx is running
8
- Then Sphinx should be running
9
-
10
- When I stop Sphinx
11
- And I wait for Sphinx to catch up
12
- Then Sphinx should not be running
13
-
14
- When I start Sphinx
15
- And I wait for Sphinx to catch up
16
- Then Sphinx should be running
17
-
18
- Given Sphinx is running
19
- When I kill the Sphinx process
20
- And I wait for Sphinx to catch up
21
- Then Sphinx should not be running
22
-
23
- When I start Sphinx again
24
- And I wait for Sphinx to catch up
25
- Then Sphinx should be running again
@@ -1,42 +0,0 @@
1
- Feature: Sphinx Scopes
2
-
3
- Scenario: Single Scope
4
- Given Sphinx is running
5
- And I am searching on people
6
- When I use the with_first_name scope set to "Andrew"
7
- Then I should get 7 results
8
-
9
- Scenario: Two Field Scopes
10
- Given Sphinx is running
11
- And I am searching on people
12
- When I use the with_first_name scope set to "Andrew"
13
- And I use the with_last_name scope set to "Byrne"
14
- Then I should get 1 result
15
-
16
- Scenario: Mixing Filter and Field Scopes
17
- Given Sphinx is running
18
- And I am searching on people
19
- When I use the with_first_name scope set to "Andrew"
20
- And I use the with_id scope set to 99
21
- Then I should get 1 result
22
-
23
- Scenario: Mixing Field and ID Scopes
24
- Given Sphinx is running
25
- And I am searching on people
26
- When I use the with_first_name scope set to "Andrew"
27
- And I use the ids_only scope
28
- Then I should get 7 results
29
- And I should have an array of integers
30
-
31
- Scenario: Non-field/filter Scopes
32
- Given Sphinx is running
33
- And I am searching on people
34
- When I use the ids_only scope
35
- Then I should have an array of integers
36
-
37
- Scenario: Counts with scopes
38
- Given Sphinx is running
39
- And I am searching on people
40
- When I use the with_first_name scope set to "Andrew"
41
- And I am retrieving the scoped result count
42
- Then I should get a value of 7
@@ -1,7 +0,0 @@
1
- When /^I create a new alpha named (\w+)$/ do |name|
2
- Alpha.create!(:name => name, :value => 101)
3
- end
4
-
5
- When /^I change the (\w+) of alpha (\w+) to (\w+)$/ do |column, name, replacement|
6
- Alpha.find_by_name(name).update_attributes(column.to_sym => replacement)
7
- end
@@ -1,7 +0,0 @@
1
- When /^I create a new beta named (\w+)$/ do |name|
2
- Beta.create!(:name => name, :value => 101)
3
- end
4
-
5
- When /^I change the (\w+) of beta (\w+) to (\w+)$/ do |column, name, replacement|
6
- Beta.find_by_name(name).update_attributes(column.to_sym => replacement)
7
- end
@@ -1,188 +0,0 @@
1
- Before do
2
- $queries_executed = []
3
-
4
- @model = nil
5
- @method = :search
6
- @query = ""
7
- @conditions = {}
8
- @with = {}
9
- @without = {}
10
- @with_all = {}
11
- @options = {}
12
- @results = nil
13
-
14
- Given "updates are enabled"
15
- end
16
-
17
- Given /^I am searching on (.+)$/ do |model|
18
- @model = model.gsub(/\s/, '_').singularize.camelize.constantize
19
- end
20
-
21
- Given /^updates are (\w+)$/ do |action|
22
- ThinkingSphinx.updates_enabled = (action == "enabled")
23
- end
24
-
25
- When /^I am searching for ids$/ do
26
- @results = nil
27
- @method = :search_for_ids
28
- end
29
-
30
- When /^I use index (.+)$/ do |index|
31
- @results = nil
32
- @options[:index] = index
33
- end
34
-
35
- When /^I am retrieving the result count$/ do
36
- @result = nil
37
- @method = @model ? :search_count : :count
38
- end
39
-
40
- When /^I search$/ do
41
- @results = nil
42
- end
43
-
44
- When /^I search for (\w+)$/ do |query|
45
- @results = nil
46
- @query = query
47
- end
48
-
49
- When /^I search for "([^\"]*)"$/ do |query|
50
- @results = nil
51
- @query = query
52
- end
53
-
54
- When /^I search for (\w+) on (\w+)$/ do |query, field|
55
- @results = nil
56
- @conditions[field.to_sym] = query
57
- end
58
-
59
- When /^I output the raw result data$/ do
60
- puts results.results.inspect
61
- end
62
-
63
- When /^I clear existing filters$/ do
64
- @with = {}
65
- @without = {}
66
- @with_all = {}
67
- end
68
-
69
- When /^I filter by (\w+) on (\w+)$/ do |filter, attribute|
70
- @results = nil
71
- @with[attribute.to_sym] = filter.to_i
72
- end
73
-
74
- When /^I filter by (\d+) and (\d+) on (\w+)$/ do |value_one, value_two, attribute|
75
- @results = nil
76
- @with[attribute.to_sym] = [value_one.to_i, value_two.to_i]
77
- end
78
-
79
- When /^I filter by both (\d+) and (\d+) on (\w+)$/ do |value_one, value_two, attribute|
80
- @results = nil
81
- @with_all[attribute.to_sym] = [value_one.to_i, value_two.to_i]
82
- end
83
-
84
- When /^I filter between ([\d\.]+) and ([\d\.]+) on (\w+)$/ do |first, last, attribute|
85
- @results = nil
86
- if first[/\./].nil? && last[/\./].nil?
87
- @with[attribute.to_sym] = first.to_i..last.to_i
88
- else
89
- @with[attribute.to_sym] = first.to_f..last.to_f
90
- end
91
- end
92
-
93
- When /^I filter between (\d+) and (\d+) days ago on (\w+)$/ do |last, first, attribute|
94
- @results = nil
95
- @with[attribute.to_sym] = first.to_i.days.ago..last.to_i.days.ago
96
- end
97
-
98
- When /^I filter by (\w+) between (\d+) and (\d+)$/ do |attribute, first, last|
99
- @results = nil
100
- @with[attribute.to_sym] = Time.utc(first.to_i)..Time.utc(last.to_i)
101
- end
102
-
103
- When /^I order by (\w+)$/ do |attribute|
104
- @results = nil
105
- @options[:order] = attribute.to_sym
106
- end
107
-
108
- When /^I order by "([^\"]+)"$/ do |str|
109
- @results = nil
110
- @options[:order] = str
111
- end
112
-
113
- When /^I group results by the (\w+) attribute$/ do |attribute|
114
- @results = nil
115
- @options[:group_function] = :attr
116
- @options[:group_by] = attribute
117
- end
118
-
119
- When /^I set match mode to (\w+)$/ do |match_mode|
120
- @results = nil
121
- @options[:match_mode] = match_mode.to_sym
122
- end
123
-
124
- When /^I set per page to (\d+)$/ do |per_page|
125
- @results = nil
126
- @options[:per_page] = per_page.to_i
127
- end
128
-
129
- When /^I set retry stale to (\w+)$/ do |retry_stale|
130
- @results = nil
131
- @options[:retry_stale] = case retry_stale
132
- when "true" then true
133
- when "false" then false
134
- else retry_stale.to_i
135
- end
136
- end
137
-
138
- When /^I destroy (\w+) (\w+)$/ do |model, name|
139
- model.gsub(/\s/, '_').camelize.
140
- constantize.find_by_name(name).destroy
141
- end
142
-
143
- Then /^the (\w+) of each result should indicate order$/ do |attribute|
144
- results.inject(nil) do |prev, current|
145
- unless prev.nil?
146
- current.send(attribute.to_sym).should >= prev.send(attribute.to_sym)
147
- end
148
-
149
- current
150
- end
151
- end
152
-
153
- Then /^I can iterate by result and (\w+)$/ do |attribute|
154
- iteration = lambda { |result, attr_value|
155
- result.should be_kind_of(@model)
156
- unless attribute == "group" && attr_value.nil?
157
- attr_value.should be_kind_of(Integer)
158
- end
159
- }
160
-
161
- results.send("each_with_#{attribute}", &iteration)
162
- end
163
-
164
- Then /^I should get (\d+) results?$/ do |count|
165
- results.length.should == count.to_i
166
- end
167
-
168
- Then /^I should not get (\d+) results?$/ do |count|
169
- results.length.should_not == count.to_i
170
- end
171
-
172
- Then /^I should get as many results as there are (.+)$/ do |model|
173
- results.length.should == model.gsub(/\s/, '_').singularize.camelize.
174
- constantize.count
175
- end
176
-
177
- def results
178
- @results ||= (@model || ThinkingSphinx).send(
179
- @method,
180
- @query,
181
- @options.merge(
182
- :conditions => @conditions,
183
- :with => @with,
184
- :without => @without,
185
- :with_all => @with_all
186
- )
187
- )
188
- end
@@ -1,7 +0,0 @@
1
- When /I change the name of extensible beta (\w+) to (\w+)$/ do |current, replacement|
2
- ExtensibleBeta.find_by_name(current).update_attributes(:name => replacement)
3
- end
4
-
5
- Then /^the generic delta handler should handle the delta indexing$/ do
6
- ExtensibleBeta.find(:first, :conditions => {:changed_by_generic => true}).should_not be_nil
7
- end
@@ -1,96 +0,0 @@
1
- When /^I am requesting facet results$/ do
2
- @results = nil
3
- @method = :facets
4
- end
5
-
6
- When /^I am requesting just the facet (\w+)$/ do |facet|
7
- @results = nil
8
- @options[:facets] = facet.downcase.to_sym
9
- end
10
-
11
- When /^I am requesting just the facets (\w+) and (\w+)$/ do |one, two|
12
- @results = nil
13
- @options[:facets] = [one.downcase.to_sym, two.downcase.to_sym]
14
- end
15
-
16
- When "I want classes included" do
17
- @options[:class_facet] = true
18
- end
19
-
20
- When "I don't want classes included" do
21
- @options[:class_facet] = false
22
- end
23
-
24
- When "I want all possible attributes" do
25
- @options[:all_facets] = true
26
- end
27
-
28
- When /^I drill down where (\w+) is (\w+)$/ do |facet, value|
29
- @results = results.for(facet.downcase.to_sym => value)
30
- end
31
-
32
- When /^I drill down where (\w+) is (\w+) and (\w+) is (\w+)$/ do |facet_one, value_one, facet_two, value_two|
33
- value_one = value_one.to_i unless value_one[/^\d+$/].nil?
34
- value_two = value_two.to_i unless value_two[/^\d+$/].nil?
35
-
36
- @results = results.for(
37
- facet_one.downcase.to_sym => value_one,
38
- facet_two.downcase.to_sym => value_two
39
- )
40
- end
41
-
42
- When /^I drill down where ([\w_]+) includes the id of tag (\w+)$/ do |facet, text|
43
- tag = Tag.find_by_text(text)
44
- @results = results.for(facet.downcase.to_sym => tag.id)
45
- end
46
-
47
- When /^I drill down where ([\w_]+) includes the id of tags (\w+) or (\w+)$/ do |facet, text_one, text_two|
48
- tag_one = Tag.find_by_text(text_one)
49
- tag_two = Tag.find_by_text(text_two)
50
- @results = results.for(facet.downcase.to_sym => [tag_one.id, tag_two.id])
51
- end
52
-
53
- Then "I should have valid facet results" do
54
- results.should be_kind_of(Hash)
55
- results.values.each { |value| value.should be_kind_of(Hash) }
56
- end
57
-
58
- Then /^I should have (\d+) facets?$/ do |count|
59
- results.keys.length.should == count.to_i
60
- end
61
-
62
- Then /^I should have the facet ([\w_\s]+)$/ do |name|
63
- results[facet_name(name)].should be_kind_of(Hash)
64
- end
65
-
66
- Then /^I should not have the facet ([\w_\s]+)$/ do |name|
67
- results.keys.should_not include(facet_name(name))
68
- end
69
-
70
- Then /^the ([\w_\s]+) facet should have an? "([\w\s_]+)" key with (\d+) hits$/ do |name, key, hit_count|
71
- facet_name = facet_name name
72
- results[facet_name].keys.should include(key)
73
- results[facet_name][key].should eql(hit_count.to_i)
74
- end
75
-
76
- Then /^the ([\w_\s]+) facet should have an? "(\w+)" key$/ do |name, key|
77
- results[facet_name(name)].keys.should include(key)
78
- end
79
-
80
- Then /^the ([\w_\s]+) facet should have an? (\d+\.?\d*) key$/ do |name, key|
81
- if key[/\./]
82
- key = key.to_f
83
- else
84
- key = key.to_i
85
- end
86
-
87
- results[facet_name(name)].keys.should include(key)
88
- end
89
-
90
- Then /^the ([\w\s]+) facet should have (\d+) keys$/ do |name, count|
91
- results[facet_name(name)].keys.length.should == count.to_i
92
- end
93
-
94
- def facet_name(string)
95
- string.gsub(/\s/, '').underscore.to_sym
96
- end
@@ -1,36 +0,0 @@
1
- When "I include comments" do
2
- @results = nil
3
- @options[:include] = :comments
4
- end
5
-
6
- When /^I get the first comment$/ do
7
- @comment = Comment.find(:first)
8
- end
9
-
10
- When /^I track queries$/ do
11
- $queries_executed = []
12
- end
13
-
14
- When /^I compare comments$/ do
15
- results.first.comments.first.should == @comment
16
- end
17
-
18
- When /^I select only content$/ do
19
- @results = nil
20
- @options[:select] = "id, content"
21
- end
22
-
23
- Then /^I should have (\d+) quer[yies]+$/ do |count|
24
- $queries_executed.length.should == count.to_i
25
- end
26
-
27
- Then /^I should not get an error accessing the subject$/ do
28
- lambda { results.first.subject }.should_not raise_error
29
- end
30
-
31
- Then /^I should get an error accessing the subject$/ do
32
- error_class = NoMethodError
33
- error_class = ActiveRecord::MissingAttributeError if ActiveRecord.constants.include?("MissingAttributeError")
34
-
35
- lambda { results.first.subject }.should raise_error(error_class)
36
- end