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