Skip to content

Commit 76be755

Browse files
committed
Scope signon user filter to convos created via API
Now we've got the concept of a source for a conversation, we can ensure that we signon user filter only returns conversations created via the API. I've also updated the question show page to only show the signon user row which links to the index page with the user filter when the source is API.
1 parent 3fa282a commit 76be755

5 files changed

Lines changed: 24 additions & 7 deletions

File tree

app/helpers/admin/questions_helper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def question_show_summary_list_rows(question, answer, question_number, total_que
8585
end
8686

8787
signon_user = conversation.signon_user
88-
if signon_user.present?
88+
if signon_user.present? && conversation.source_api?
8989
rows << {
9090
field: "API user",
9191
value: safe_join([

app/models/admin/filters/questions_filter.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ def user_scope(scope)
134134
def signon_user_scope(scope)
135135
return scope if signon_user_id.blank? || user_id.present?
136136

137-
scope.joins(:conversation).where(conversation: { signon_user_id: signon_user_id })
137+
scope.joins(:conversation).where(conversation: { signon_user_id: signon_user_id, source: :api })
138138
end
139139

140140
def question_routing_label_scope(scope)

spec/helpers/admin/questions_helper_spec.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@
178178

179179
it "returns a row with a link to filter the questions table by the signon user" do
180180
signon_user = create(:signon_user)
181-
conversation.update!(signon_user:)
181+
conversation.update!(signon_user:, source: :api)
182182
result = helper.question_show_summary_list_rows(question, nil, 1, 1)
183183

184184
row = result.find { |r| r[:field] == "API user" }
@@ -202,6 +202,14 @@
202202
row = result.find { |r| r[:field] == "Source" }
203203
expect(row[:value]).to eq("API")
204204
end
205+
206+
it "doesn't return a signon user row if the conversation wasn't created via the API" do
207+
signon_user = create(:signon_user)
208+
conversation.update!(signon_user:)
209+
210+
result = helper.question_show_summary_list_rows(question, nil, 1, 1)
211+
expect(returned_keys(result)).not_to include("API user")
212+
end
205213
end
206214

207215
describe "#decode_and_mark_unicode_tag_segments" do

spec/models/admin/filters/questions_filter_spec.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,8 @@
234234
it "filters the results by signon user" do
235235
alice = create(:signon_user, email: "alice@example.com")
236236
bob = create(:signon_user, email: "bob@example.com")
237-
alice_question = create(:question, conversation: create(:conversation, signon_user: alice))
238-
bob_question = create(:question, conversation: create(:conversation, signon_user: bob))
237+
alice_question = create(:question, conversation: create(:conversation, :api, signon_user: alice))
238+
bob_question = create(:question, conversation: create(:conversation, :api, signon_user: bob))
239239

240240
filter = described_class.new(signon_user_id: alice.id)
241241
expect(filter.results).to eq([alice_question])
@@ -244,6 +244,15 @@
244244
expect(filter.results).to eq([bob_question])
245245
end
246246

247+
it "filters out results assoicated with a signon user that weren't created via the API" do
248+
signon_user = create(:signon_user)
249+
create(:question, conversation: create(:conversation, signon_user:))
250+
251+
filter = described_class.new(signon_user_id: signon_user.id)
252+
253+
expect(filter.results).to eq([])
254+
end
255+
247256
it "doesn't filter the results by signon user if signon_user_id and user_id are passed in" do
248257
alice = create(:signon_user, email: "alice@example.com")
249258
bob = create(:early_access_user, email: "bob@example.com")

spec/system/admin/user_filters_questions_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ def and_there_are_questions_associated_with_users
107107
end
108108

109109
def and_there_are_questions_associated_with_signon_users
110-
@conversation1 = build(:conversation, signon_user: @signon_user)
111-
conversation2 = build(:conversation, signon_user: @signon_user)
110+
@conversation1 = build(:conversation, :api, signon_user: @signon_user)
111+
conversation2 = build(:conversation, :api, signon_user: @signon_user)
112112
create(:question, conversation: @conversation1, message: "Hello world")
113113
create(:question, conversation: conversation2, message: "Greetings world")
114114

0 commit comments

Comments
 (0)