|
170 | 170 | ) |
171 | 171 |
|
172 | 172 | expect(result.length).to eq(3) |
173 | | - expect(result[0]["target_usernames"]).to eq([user.username]) |
174 | | - expect(result[1]["target_group_names"]).to eq([group.name]) |
| 173 | + expect(result[0]["target_group_names"]).to eq([group.name]) |
| 174 | + expect(result[1]["target_usernames"]).to eq([user.username]) |
175 | 175 | expect(result[2]["target_emails"]).to eq(["john@doe.com"]) |
176 | 176 | end |
177 | 177 |
|
178 | | - it "extracts users from group when option is selected" do |
179 | | - Fabricate(:query_group, query: query, group: group) |
180 | | - DiscourseDataExplorer::ResultToMarkdown.expects(:convert).returns("le table") |
181 | | - freeze_time |
| 178 | + describe "with users_from_group" do |
| 179 | + fab!(:valid_group) { Fabricate(:group, users: [user]) } |
| 180 | + fab!(:invalid_group) { Fabricate(:group, users: []) } |
182 | 181 |
|
183 | | - result = |
184 | | - described_class.generate(query.id, query_params, [group.name], { users_from_group: true }) |
185 | | - expect(result.length).to eq(1) |
186 | | - expect(result[0]["target_usernames"]).to eq([user.username]) |
| 182 | + describe "when true" do |
| 183 | + let(:opts) { { users_from_group: true } } |
| 184 | + |
| 185 | + it "does not work when no query groups are set" do |
| 186 | + result = described_class.generate(query.id, query_params, [group.name], opts) |
| 187 | + expect(result).to eq [] |
| 188 | + end |
| 189 | + |
| 190 | + it "works when user is a member of automation group and query group" do |
| 191 | + Fabricate(:query_group, query: query, group: valid_group) |
| 192 | + result = described_class.generate(query.id, query_params, [group.name], opts) |
| 193 | + |
| 194 | + expect(result.length).to eq(1) |
| 195 | + expect(result[0]["target_usernames"]).to eq([user.username]) |
| 196 | + end |
| 197 | + |
| 198 | + it "does not work when user is a member of automation group but not query group" do |
| 199 | + Fabricate(:query_group, query: query, group: invalid_group) |
| 200 | + result = described_class.generate(query.id, query_params, [group.name], opts) |
| 201 | + |
| 202 | + expect(result).to eq [] |
| 203 | + end |
| 204 | + |
| 205 | + it "works when user has access to one group in query groups" do |
| 206 | + Fabricate(:query_group, query: query, group: valid_group) |
| 207 | + Fabricate(:query_group, query: query, group: invalid_group) |
| 208 | + |
| 209 | + result = described_class.generate(query.id, query_params, [group.name], opts) |
| 210 | + |
| 211 | + expect(result.length).to eq(1) |
| 212 | + expect(result[0]["target_usernames"]).to eq([user.username]) |
| 213 | + end |
| 214 | + end |
| 215 | + |
| 216 | + describe "when false" do |
| 217 | + let(:opts) { { users_from_group: false } } |
| 218 | + |
| 219 | + it "works when group has query access" do |
| 220 | + Fabricate(:query_group, query: query, group: group) |
| 221 | + result = described_class.generate(query.id, query_params, [group.name], opts) |
| 222 | + |
| 223 | + expect(result.length).to eq(1) |
| 224 | + expect(result[0]["target_group_names"]).to eq([group.name]) |
| 225 | + end |
| 226 | + |
| 227 | + it "doesn't work when group doesn't have query access" do |
| 228 | + result = described_class.generate(query.id, query_params, [group.name], opts) |
| 229 | + |
| 230 | + expect(result).to eq [] |
| 231 | + end |
| 232 | + end |
187 | 233 | end |
188 | 234 |
|
189 | 235 | it "works with attached csv file" do |
|
0 commit comments