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.
- data/LICENSE +1 -1
- data/README.textile +9 -9
- data/lib/thinking_sphinx/xml/adapters/oracle_adapter.rb +5 -2
- data/lib/thinking_sphinx/xml/tasks.rb +12 -4
- metadata +40 -102
- data/features/alternate_primary_key.feature +0 -27
- data/features/attribute_transformation.feature +0 -22
- data/features/attribute_updates.feature +0 -39
- data/features/deleting_instances.feature +0 -67
- data/features/direct_attributes.feature +0 -11
- data/features/excerpts.feature +0 -13
- data/features/extensible_delta_indexing.feature +0 -9
- data/features/facets.feature +0 -82
- data/features/facets_across_model.feature +0 -29
- data/features/handling_edits.feature +0 -92
- data/features/retry_stale_indexes.feature +0 -24
- data/features/searching_across_models.feature +0 -20
- data/features/searching_by_index.feature +0 -40
- data/features/searching_by_model.feature +0 -175
- data/features/searching_with_find_arguments.feature +0 -56
- data/features/sphinx_detection.feature +0 -25
- data/features/sphinx_scopes.feature +0 -42
- data/features/step_definitions/alpha_steps.rb +0 -7
- data/features/step_definitions/beta_steps.rb +0 -7
- data/features/step_definitions/common_steps.rb +0 -188
- data/features/step_definitions/extensible_delta_indexing_steps.rb +0 -7
- data/features/step_definitions/facet_steps.rb +0 -96
- data/features/step_definitions/find_arguments_steps.rb +0 -36
- data/features/step_definitions/gamma_steps.rb +0 -15
- data/features/step_definitions/scope_steps.rb +0 -15
- data/features/step_definitions/search_steps.rb +0 -89
- data/features/step_definitions/sphinx_steps.rb +0 -35
- data/features/sti_searching.feature +0 -19
- data/features/support/database.example.yml +0 -3
- data/features/support/db/fixtures/alphas.rb +0 -10
- data/features/support/db/fixtures/authors.rb +0 -1
- data/features/support/db/fixtures/betas.rb +0 -10
- data/features/support/db/fixtures/boxes.rb +0 -9
- data/features/support/db/fixtures/categories.rb +0 -1
- data/features/support/db/fixtures/cats.rb +0 -3
- data/features/support/db/fixtures/comments.rb +0 -24
- data/features/support/db/fixtures/developers.rb +0 -29
- data/features/support/db/fixtures/dogs.rb +0 -3
- data/features/support/db/fixtures/extensible_betas.rb +0 -10
- data/features/support/db/fixtures/foxes.rb +0 -3
- data/features/support/db/fixtures/gammas.rb +0 -10
- data/features/support/db/fixtures/people.rb +0 -1001
- data/features/support/db/fixtures/posts.rb +0 -6
- data/features/support/db/fixtures/robots.rb +0 -14
- data/features/support/db/fixtures/tags.rb +0 -27
- data/features/support/db/migrations/create_alphas.rb +0 -7
- data/features/support/db/migrations/create_animals.rb +0 -5
- data/features/support/db/migrations/create_authors.rb +0 -3
- data/features/support/db/migrations/create_authors_posts.rb +0 -6
- data/features/support/db/migrations/create_betas.rb +0 -5
- data/features/support/db/migrations/create_boxes.rb +0 -5
- data/features/support/db/migrations/create_categories.rb +0 -3
- data/features/support/db/migrations/create_comments.rb +0 -10
- data/features/support/db/migrations/create_developers.rb +0 -9
- data/features/support/db/migrations/create_extensible_betas.rb +0 -5
- data/features/support/db/migrations/create_gammas.rb +0 -3
- data/features/support/db/migrations/create_people.rb +0 -13
- data/features/support/db/migrations/create_posts.rb +0 -5
- data/features/support/db/migrations/create_robots.rb +0 -4
- data/features/support/db/migrations/create_taggings.rb +0 -5
- data/features/support/db/migrations/create_tags.rb +0 -4
- data/features/support/env.rb +0 -21
- data/features/support/lib/generic_delta_handler.rb +0 -8
- data/features/support/models/alpha.rb +0 -21
- data/features/support/models/animal.rb +0 -5
- data/features/support/models/author.rb +0 -3
- data/features/support/models/beta.rb +0 -8
- data/features/support/models/box.rb +0 -8
- data/features/support/models/cat.rb +0 -3
- data/features/support/models/category.rb +0 -4
- data/features/support/models/comment.rb +0 -10
- data/features/support/models/developer.rb +0 -16
- data/features/support/models/dog.rb +0 -3
- data/features/support/models/extensible_beta.rb +0 -9
- data/features/support/models/fox.rb +0 -5
- data/features/support/models/gamma.rb +0 -5
- data/features/support/models/person.rb +0 -23
- data/features/support/models/post.rb +0 -21
- data/features/support/models/robot.rb +0 -12
- data/features/support/models/tag.rb +0 -3
- 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,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
|