ts-xml 0.0.1 → 1.0.2

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