@@ -1278,142 +1278,138 class QueryTest < ActiveSupport::TestCase | |||
|
1278 | 1278 | end |
|
1279 | 1279 | end |
|
1280 | 1280 | |
|
1281 | context "#statement" do | |
|
1282 | context "with 'member_of_group' filter" do | |
|
1283 | setup do | |
|
1284 | Group.destroy_all # No fixtures | |
|
1285 |
|
|
|
1286 |
|
|
|
1287 | @user_in_group2 = User.generate! | |
|
1288 |
|
|
|
1289 | ||
|
1290 | @group = Group.generate!.reload | |
|
1291 | @group.users << @user_in_group | |
|
1292 | @group.users << @second_user_in_group | |
|
1293 | ||
|
1294 | @group2 = Group.generate!.reload | |
|
1295 | @group2.users << @user_in_group2 | |
|
1296 | ||
|
1297 | end | |
|
1298 | ||
|
1299 | should "search assigned to for users in the group" do | |
|
1300 | @query = IssueQuery.new(:name => '_') | |
|
1301 | @query.add_filter('member_of_group', '=', [@group.id.to_s]) | |
|
1302 | ||
|
1303 | assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@group.id}')" | |
|
1304 | assert_find_issues_with_query_is_successful @query | |
|
1305 | end | |
|
1306 | ||
|
1307 | should "search not assigned to any group member (none)" do | |
|
1308 | @query = IssueQuery.new(:name => '_') | |
|
1309 | @query.add_filter('member_of_group', '!*', ['']) | |
|
1310 | ||
|
1311 | # Users not in a group | |
|
1312 | assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}','#{@group.id}','#{@group2.id}')" | |
|
1313 | assert_find_issues_with_query_is_successful @query | |
|
1314 | end | |
|
1315 | ||
|
1316 | should "search assigned to any group member (all)" do | |
|
1317 | @query = IssueQuery.new(:name => '_') | |
|
1318 | @query.add_filter('member_of_group', '*', ['']) | |
|
1319 | ||
|
1320 | # Only users in a group | |
|
1321 | assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}','#{@group.id}','#{@group2.id}')" | |
|
1322 | assert_find_issues_with_query_is_successful @query | |
|
1323 | end | |
|
1324 | ||
|
1325 | should "return an empty set with = empty group" do | |
|
1326 | @empty_group = Group.generate! | |
|
1327 | @query = IssueQuery.new(:name => '_') | |
|
1328 | @query.add_filter('member_of_group', '=', [@empty_group.id.to_s]) | |
|
1329 | ||
|
1330 | assert_equal [], find_issues_with_query(@query) | |
|
1331 | end | |
|
1332 | ||
|
1333 | should "return issues with ! empty group" do | |
|
1334 | @empty_group = Group.generate! | |
|
1335 | @query = IssueQuery.new(:name => '_') | |
|
1336 | @query.add_filter('member_of_group', '!', [@empty_group.id.to_s]) | |
|
1337 | ||
|
1338 | assert_find_issues_with_query_is_successful @query | |
|
1339 | end | |
|
1340 | end | |
|
1281 | def setup_member_of_group | |
|
1282 | Group.destroy_all # No fixtures | |
|
1283 | @user_in_group = User.generate! | |
|
1284 | @second_user_in_group = User.generate! | |
|
1285 | @user_in_group2 = User.generate! | |
|
1286 | @user_not_in_group = User.generate! | |
|
1287 | ||
|
1288 | @group = Group.generate!.reload | |
|
1289 | @group.users << @user_in_group | |
|
1290 | @group.users << @second_user_in_group | |
|
1341 | 1291 | |
|
1342 | context "with 'assigned_to_role' filter" do | |
|
1343 | setup do | |
|
1344 | @manager_role = Role.find_by_name('Manager') | |
|
1345 | @developer_role = Role.find_by_name('Developer') | |
|
1292 | @group2 = Group.generate!.reload | |
|
1293 | @group2.users << @user_in_group2 | |
|
1346 | 1294 | |
|
1347 | @project = Project.generate! | |
|
1348 | @manager = User.generate! | |
|
1349 | @developer = User.generate! | |
|
1350 | @boss = User.generate! | |
|
1351 | @guest = User.generate! | |
|
1352 | User.add_to_project(@manager, @project, @manager_role) | |
|
1353 | User.add_to_project(@developer, @project, @developer_role) | |
|
1354 | User.add_to_project(@boss, @project, [@manager_role, @developer_role]) | |
|
1295 | @query = IssueQuery.new(:name => '_') | |
|
1296 | end | |
|
1355 | 1297 | |
|
1356 | @issue1 = Issue.generate!(:project => @project, :assigned_to_id => @manager.id) | |
|
1357 | @issue2 = Issue.generate!(:project => @project, :assigned_to_id => @developer.id) | |
|
1358 | @issue3 = Issue.generate!(:project => @project, :assigned_to_id => @boss.id) | |
|
1359 | @issue4 = Issue.generate!(:project => @project, :assigned_to_id => @guest.id) | |
|
1360 | @issue5 = Issue.generate!(:project => @project) | |
|
1361 | end | |
|
1298 | test "member_of_group filter should search assigned to for users in the group" do | |
|
1299 | setup_member_of_group | |
|
1300 | @query.add_filter('member_of_group', '=', [@group.id.to_s]) | |
|
1362 | 1301 | |
|
1363 | should "search assigned to for users with the Role" do | |
|
1364 | @query = IssueQuery.new(:name => '_', :project => @project) | |
|
1365 | @query.add_filter('assigned_to_role', '=', [@manager_role.id.to_s]) | |
|
1302 | assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@group.id}')" | |
|
1303 | assert_find_issues_with_query_is_successful @query | |
|
1304 | end | |
|
1305 | ||
|
1306 | test "member_of_group filter should search not assigned to any group member (none)" do | |
|
1307 | setup_member_of_group | |
|
1308 | @query.add_filter('member_of_group', '!*', ['']) | |
|
1309 | ||
|
1310 | # Users not in a group | |
|
1311 | assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}','#{@group.id}','#{@group2.id}')" | |
|
1312 | assert_find_issues_with_query_is_successful @query | |
|
1313 | end | |
|
1366 | 1314 | |
|
1367 | assert_query_result [@issue1, @issue3], @query | |
|
1368 | end | |
|
1315 | test "member_of_group filter should search assigned to any group member (all)" do | |
|
1316 | setup_member_of_group | |
|
1317 | @query.add_filter('member_of_group', '*', ['']) | |
|
1369 | 1318 | |
|
1370 | should "search assigned to for users with the Role on the issue project" do | |
|
1371 | other_project = Project.generate! | |
|
1372 | User.add_to_project(@developer, other_project, @manager_role) | |
|
1319 | # Only users in a group | |
|
1320 | assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}','#{@group.id}','#{@group2.id}')" | |
|
1321 | assert_find_issues_with_query_is_successful @query | |
|
1322 | end | |
|
1373 | 1323 | |
|
1374 | @query = IssueQuery.new(:name => '_', :project => @project) | |
|
1375 | @query.add_filter('assigned_to_role', '=', [@manager_role.id.to_s]) | |
|
1324 | test "member_of_group filter should return an empty set with = empty group" do | |
|
1325 | setup_member_of_group | |
|
1326 | @empty_group = Group.generate! | |
|
1327 | @query.add_filter('member_of_group', '=', [@empty_group.id.to_s]) | |
|
1376 | 1328 | |
|
1377 | assert_query_result [@issue1, @issue3], @query | |
|
1378 |
|
|
|
1329 | assert_equal [], find_issues_with_query(@query) | |
|
1330 | end | |
|
1379 | 1331 | |
|
1380 | should "return an empty set with empty role" do | |
|
1381 | @empty_role = Role.generate! | |
|
1382 | @query = IssueQuery.new(:name => '_', :project => @project) | |
|
1383 |
|
|
|
1332 | test "member_of_group filter should return issues with ! empty group" do | |
|
1333 | setup_member_of_group | |
|
1334 | @empty_group = Group.generate! | |
|
1335 | @query.add_filter('member_of_group', '!', [@empty_group.id.to_s]) | |
|
1384 | 1336 | |
|
1385 |
|
|
|
1386 |
|
|
|
1337 | assert_find_issues_with_query_is_successful @query | |
|
1338 | end | |
|
1387 | 1339 | |
|
1388 | should "search assigned to for users without the Role" do | |
|
1389 | @query = IssueQuery.new(:name => '_', :project => @project) | |
|
1390 | @query.add_filter('assigned_to_role', '!', [@manager_role.id.to_s]) | |
|
1340 | def setup_assigned_to_role | |
|
1341 | @manager_role = Role.find_by_name('Manager') | |
|
1342 | @developer_role = Role.find_by_name('Developer') | |
|
1391 | 1343 | |
|
1392 | assert_query_result [@issue2, @issue4, @issue5], @query | |
|
1393 | end | |
|
1344 | @project = Project.generate! | |
|
1345 | @manager = User.generate! | |
|
1346 | @developer = User.generate! | |
|
1347 | @boss = User.generate! | |
|
1348 | @guest = User.generate! | |
|
1349 | User.add_to_project(@manager, @project, @manager_role) | |
|
1350 | User.add_to_project(@developer, @project, @developer_role) | |
|
1351 | User.add_to_project(@boss, @project, [@manager_role, @developer_role]) | |
|
1394 | 1352 | |
|
1395 | should "search assigned to for users not assigned to any Role (none)" do | |
|
1396 | @query = IssueQuery.new(:name => '_', :project => @project) | |
|
1397 | @query.add_filter('assigned_to_role', '!*', ['']) | |
|
1353 | @issue1 = Issue.generate!(:project => @project, :assigned_to_id => @manager.id) | |
|
1354 | @issue2 = Issue.generate!(:project => @project, :assigned_to_id => @developer.id) | |
|
1355 | @issue3 = Issue.generate!(:project => @project, :assigned_to_id => @boss.id) | |
|
1356 | @issue4 = Issue.generate!(:project => @project, :assigned_to_id => @guest.id) | |
|
1357 | @issue5 = Issue.generate!(:project => @project) | |
|
1398 | 1358 | |
|
1399 | assert_query_result [@issue4, @issue5], @query | |
|
1400 |
|
|
|
1359 | @query = IssueQuery.new(:name => '_', :project => @project) | |
|
1360 | end | |
|
1401 | 1361 | |
|
1402 |
|
|
|
1403 | @query = IssueQuery.new(:name => '_', :project => @project) | |
|
1404 |
|
|
|
1362 | test "assigned_to_role filter should search assigned to for users with the Role" do | |
|
1363 | setup_assigned_to_role | |
|
1364 | @query.add_filter('assigned_to_role', '=', [@manager_role.id.to_s]) | |
|
1405 | 1365 | |
|
1406 |
|
|
|
1407 |
|
|
|
1366 | assert_query_result [@issue1, @issue3], @query | |
|
1367 | end | |
|
1408 | 1368 | |
|
1409 | should "return issues with ! empty role" do | |
|
1410 | @empty_role = Role.generate! | |
|
1411 | @query = IssueQuery.new(:name => '_', :project => @project) | |
|
1412 | @query.add_filter('assigned_to_role', '!', [@empty_role.id.to_s]) | |
|
1369 | test "assigned_to_role filter should search assigned to for users with the Role on the issue project" do | |
|
1370 | setup_assigned_to_role | |
|
1371 | other_project = Project.generate! | |
|
1372 | User.add_to_project(@developer, other_project, @manager_role) | |
|
1373 | @query.add_filter('assigned_to_role', '=', [@manager_role.id.to_s]) | |
|
1413 | 1374 | |
|
1414 |
|
|
|
1415 |
|
|
|
1416 | end | |
|
1375 | assert_query_result [@issue1, @issue3], @query | |
|
1376 | end | |
|
1377 | ||
|
1378 | test "assigned_to_role filter should return an empty set with empty role" do | |
|
1379 | setup_assigned_to_role | |
|
1380 | @empty_role = Role.generate! | |
|
1381 | @query.add_filter('assigned_to_role', '=', [@empty_role.id.to_s]) | |
|
1382 | ||
|
1383 | assert_query_result [], @query | |
|
1384 | end | |
|
1385 | ||
|
1386 | test "assigned_to_role filter should search assigned to for users without the Role" do | |
|
1387 | setup_assigned_to_role | |
|
1388 | @query.add_filter('assigned_to_role', '!', [@manager_role.id.to_s]) | |
|
1389 | ||
|
1390 | assert_query_result [@issue2, @issue4, @issue5], @query | |
|
1391 | end | |
|
1392 | ||
|
1393 | test "assigned_to_role filter should search assigned to for users not assigned to any Role (none)" do | |
|
1394 | setup_assigned_to_role | |
|
1395 | @query.add_filter('assigned_to_role', '!*', ['']) | |
|
1396 | ||
|
1397 | assert_query_result [@issue4, @issue5], @query | |
|
1398 | end | |
|
1399 | ||
|
1400 | test "assigned_to_role filter should search assigned to for users assigned to any Role (all)" do | |
|
1401 | setup_assigned_to_role | |
|
1402 | @query.add_filter('assigned_to_role', '*', ['']) | |
|
1403 | ||
|
1404 | assert_query_result [@issue1, @issue2, @issue3], @query | |
|
1405 | end | |
|
1406 | ||
|
1407 | test "assigned_to_role filter should return issues with ! empty role" do | |
|
1408 | setup_assigned_to_role | |
|
1409 | @empty_role = Role.generate! | |
|
1410 | @query.add_filter('assigned_to_role', '!', [@empty_role.id.to_s]) | |
|
1411 | ||
|
1412 | assert_query_result [@issue1, @issue2, @issue3, @issue4, @issue5], @query | |
|
1417 | 1413 | end |
|
1418 | 1414 | |
|
1419 | 1415 | def test_query_column_should_accept_a_symbol_as_caption |
General Comments 0
You need to be logged in to leave comments.
Login now