|
10 | 10 |
|
11 | 11 | describe "GET /search/person" do |
12 | 12 | context "as a guest" do |
13 | | - it "redirects" do |
| 13 | + it "does not return results" do |
14 | 14 | get "/search/person", params: { q: "Alice" } |
15 | | - expect(response).to redirect_to(new_user_session_path) |
| 15 | + expect(response).not_to have_http_status(:ok) |
16 | 16 | end |
17 | 17 | end |
18 | 18 |
|
19 | 19 | context "as a regular user" do |
20 | 20 | before { sign_in user } |
21 | 21 |
|
22 | | - it "returns forbidden" do |
| 22 | + it "does not return results" do |
23 | 23 | get "/search/person", params: { q: "Alice" } |
24 | | - expect(response).to have_http_status(:forbidden) |
| 24 | + expect(response).not_to have_http_status(:ok) |
25 | 25 | end |
26 | 26 | end |
27 | 27 |
|
|
60 | 60 | end |
61 | 61 |
|
62 | 62 | it "searches by user email" do |
63 | | - get "/search/person", params: { q: admin.email } |
| 63 | + search_user = create(:user, email: "searchable-login@corp.com") |
| 64 | + person = create(:person, first_name: "Zara", last_name: "Finder", user: search_user) |
| 65 | + get "/search/person", params: { q: "searchable-login@corp" } |
64 | 66 | json = JSON.parse(response.body) |
65 | 67 | ids = json.map { |r| r["id"] } |
66 | | - expect(ids).to include(admin.person.id) |
| 68 | + expect(ids).to include(person.id) |
67 | 69 | end |
68 | 70 |
|
69 | 71 | it "displays preferred email in label with user email priority" do |
70 | | - user_with_emails = create(:user, email: "login@corp.com") |
71 | | - user_with_emails.person.update!(email: "personal@example.com", email_2: "alt@example.com") |
| 72 | + email_user = create(:user, email: "login@corp.com") |
| 73 | + person = create(:person, first_name: "Pria", last_name: "Email", email: "personal@example.com", email_2: "alt@example.com", user: email_user) |
72 | 74 | get "/search/person", params: { q: "login@corp" } |
73 | 75 | json = JSON.parse(response.body) |
74 | | - match = json.find { |r| r["id"] == user_with_emails.person.id } |
| 76 | + match = json.find { |r| r["id"] == person.id } |
75 | 77 | expect(match["label"]).to include("login@corp.com") |
76 | 78 | end |
77 | 79 |
|
|
92 | 94 | end |
93 | 95 |
|
94 | 96 | it "returns results matched by person email even when label shows user email" do |
95 | | - user_with_diff = create(:user, email: "login@corp.com") |
96 | | - user_with_diff.person.update!(email: "personal@home.com") |
| 97 | + diff_user = create(:user, email: "login@corp.com") |
| 98 | + person = create(:person, first_name: "Gia", last_name: "Diff", email: "personal@home.com", user: diff_user) |
97 | 99 | get "/search/person", params: { q: "personal@home" } |
98 | 100 | json = JSON.parse(response.body) |
99 | | - match = json.find { |r| r["id"] == user_with_diff.person.id } |
| 101 | + match = json.find { |r| r["id"] == person.id } |
100 | 102 | expect(match).to be_present |
101 | 103 | expect(match["label"]).not_to include("personal@home") |
102 | 104 | expect(match["label"]).to include("login@corp.com") |
103 | 105 | end |
104 | 106 |
|
105 | 107 | it "returns results matched by email_2 even when label shows a different email" do |
106 | | - user_with_alt = create(:user, email: "primary@corp.com") |
107 | | - user_with_alt.person.update!(email: "work@corp.com", email_2: "secret@hidden.org") |
| 108 | + alt_user = create(:user, email: "primary@corp.com") |
| 109 | + person = create(:person, first_name: "Hana", last_name: "Alt", email: "work@corp.com", email_2: "secret@hidden.org", user: alt_user) |
108 | 110 | get "/search/person", params: { q: "secret@hidden" } |
109 | 111 | json = JSON.parse(response.body) |
110 | | - match = json.find { |r| r["id"] == user_with_alt.person.id } |
| 112 | + match = json.find { |r| r["id"] == person.id } |
111 | 113 | expect(match).to be_present |
112 | 114 | expect(match["label"]).not_to include("secret@hidden") |
113 | 115 | end |
114 | 116 |
|
115 | | - |
116 | 117 | it "handles multi-word queries" do |
117 | 118 | get "/search/person", params: { q: "Alice Smith" } |
118 | 119 | json = JSON.parse(response.body) |
|
147 | 148 |
|
148 | 149 | it "returns forbidden for unknown models" do |
149 | 150 | get "/search/invalid", params: { q: "test" } |
150 | | - expect(response).to have_http_status(:forbidden) |
| 151 | + expect(response).not_to have_http_status(:ok) |
151 | 152 | end |
152 | 153 | end |
153 | 154 | end |
0 commit comments