Skip to content

Commit 98687ab

Browse files
committed
add missing test coverage
Signed-off-by: Keval Mahajan <mahajankeval23@gmail.com>
1 parent abcd05f commit 98687ab

File tree

1 file changed

+214
-0
lines changed

1 file changed

+214
-0
lines changed

tests/unit/mcpgateway/services/test_team_management_service.py

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2312,3 +2312,217 @@ async def test_get_user_personal_team_filters_correctly(self, mock_db):
23122312
# Verify execute was called (query construction is internal)
23132313
mock_db.execute.assert_called_once()
23142314
mock_db.commit.assert_called_once()
2315+
2316+
def test_should_include_personal_team_all_filters_pass(self):
2317+
"""Test should_include_personal_team returns True when all filters pass."""
2318+
mock_team = MagicMock(spec=EmailTeam)
2319+
mock_team.is_active = True
2320+
mock_team.visibility = "private"
2321+
mock_team.name = "Test Team"
2322+
mock_team.slug = "test-team"
2323+
mock_team.description = "A test description"
2324+
2325+
result = TeamManagementService.should_include_personal_team(
2326+
mock_team, include_inactive=True, visibility=None, search_query=None
2327+
)
2328+
2329+
assert result is True
2330+
2331+
def test_should_include_personal_team_filters_inactive_team(self):
2332+
"""Test should_include_personal_team filters out inactive teams when include_inactive=False."""
2333+
mock_team = MagicMock(spec=EmailTeam)
2334+
mock_team.is_active = False
2335+
mock_team.visibility = "private"
2336+
mock_team.name = "Inactive Team"
2337+
mock_team.slug = "inactive-team"
2338+
mock_team.description = "An inactive team"
2339+
2340+
result = TeamManagementService.should_include_personal_team(
2341+
mock_team, include_inactive=False, visibility=None, search_query=None
2342+
)
2343+
2344+
assert result is False
2345+
2346+
def test_should_include_personal_team_includes_inactive_when_flag_set(self):
2347+
"""Test should_include_personal_team includes inactive teams when include_inactive=True."""
2348+
mock_team = MagicMock(spec=EmailTeam)
2349+
mock_team.is_active = False
2350+
mock_team.visibility = "private"
2351+
mock_team.name = "Inactive Team"
2352+
mock_team.slug = "inactive-team"
2353+
mock_team.description = "An inactive team"
2354+
2355+
result = TeamManagementService.should_include_personal_team(
2356+
mock_team, include_inactive=True, visibility=None, search_query=None
2357+
)
2358+
2359+
assert result is True
2360+
2361+
def test_should_include_personal_team_filters_by_visibility(self):
2362+
"""Test should_include_personal_team filters teams by visibility."""
2363+
mock_team = MagicMock(spec=EmailTeam)
2364+
mock_team.is_active = True
2365+
mock_team.visibility = "private"
2366+
mock_team.name = "Private Team"
2367+
mock_team.slug = "private-team"
2368+
mock_team.description = "A private team"
2369+
2370+
# Should filter out when visibility doesn't match
2371+
result = TeamManagementService.should_include_personal_team(
2372+
mock_team, include_inactive=False, visibility="public", search_query=None
2373+
)
2374+
2375+
assert result is False
2376+
2377+
def test_should_include_personal_team_matches_visibility(self):
2378+
"""Test should_include_personal_team includes teams when visibility matches."""
2379+
mock_team = MagicMock(spec=EmailTeam)
2380+
mock_team.is_active = True
2381+
mock_team.visibility = "public"
2382+
mock_team.name = "Public Team"
2383+
mock_team.slug = "public-team"
2384+
mock_team.description = "A public team"
2385+
2386+
result = TeamManagementService.should_include_personal_team(
2387+
mock_team, include_inactive=False, visibility="public", search_query=None
2388+
)
2389+
2390+
assert result is True
2391+
2392+
def test_should_include_personal_team_search_matches_name(self):
2393+
"""Test should_include_personal_team search query matches team name."""
2394+
mock_team = MagicMock(spec=EmailTeam)
2395+
mock_team.is_active = True
2396+
mock_team.visibility = "private"
2397+
mock_team.name = "Engineering Team"
2398+
mock_team.slug = "eng-team"
2399+
mock_team.description = "Team for engineers"
2400+
2401+
result = TeamManagementService.should_include_personal_team(
2402+
mock_team, include_inactive=False, visibility=None, search_query="engineering"
2403+
)
2404+
2405+
assert result is True
2406+
2407+
def test_should_include_personal_team_search_matches_slug(self):
2408+
"""Test should_include_personal_team search query matches team slug."""
2409+
mock_team = MagicMock(spec=EmailTeam)
2410+
mock_team.is_active = True
2411+
mock_team.visibility = "private"
2412+
mock_team.name = "Team Alpha"
2413+
mock_team.slug = "alpha-squad"
2414+
mock_team.description = "First team"
2415+
2416+
result = TeamManagementService.should_include_personal_team(
2417+
mock_team, include_inactive=False, visibility=None, search_query="squad"
2418+
)
2419+
2420+
assert result is True
2421+
2422+
def test_should_include_personal_team_search_matches_description(self):
2423+
"""Test should_include_personal_team search query matches team description."""
2424+
mock_team = MagicMock(spec=EmailTeam)
2425+
mock_team.is_active = True
2426+
mock_team.visibility = "private"
2427+
mock_team.name = "Team Beta"
2428+
mock_team.slug = "beta"
2429+
mock_team.description = "Specialized operations team"
2430+
2431+
result = TeamManagementService.should_include_personal_team(
2432+
mock_team, include_inactive=False, visibility=None, search_query="operations"
2433+
)
2434+
2435+
assert result is True
2436+
2437+
def test_should_include_personal_team_search_case_insensitive(self):
2438+
"""Test should_include_personal_team search is case-insensitive."""
2439+
mock_team = MagicMock(spec=EmailTeam)
2440+
mock_team.is_active = True
2441+
mock_team.visibility = "private"
2442+
mock_team.name = "DevOps Team"
2443+
mock_team.slug = "devops"
2444+
mock_team.description = "Infrastructure team"
2445+
2446+
result = TeamManagementService.should_include_personal_team(
2447+
mock_team, include_inactive=False, visibility=None, search_query="DEVOPS"
2448+
)
2449+
2450+
assert result is True
2451+
2452+
def test_should_include_personal_team_search_no_match(self):
2453+
"""Test should_include_personal_team filters out teams when search doesn't match."""
2454+
mock_team = MagicMock(spec=EmailTeam)
2455+
mock_team.is_active = True
2456+
mock_team.visibility = "private"
2457+
mock_team.name = "Marketing Team"
2458+
mock_team.slug = "marketing"
2459+
mock_team.description = "Marketing operations"
2460+
2461+
result = TeamManagementService.should_include_personal_team(
2462+
mock_team, include_inactive=False, visibility=None, search_query="engineering"
2463+
)
2464+
2465+
assert result is False
2466+
2467+
def test_should_include_personal_team_search_with_none_description(self):
2468+
"""Test should_include_personal_team handles None description in search."""
2469+
mock_team = MagicMock(spec=EmailTeam)
2470+
mock_team.is_active = True
2471+
mock_team.visibility = "private"
2472+
mock_team.name = "Sales Team"
2473+
mock_team.slug = "sales"
2474+
mock_team.description = None
2475+
2476+
# Should not match description (None), but should match name
2477+
result = TeamManagementService.should_include_personal_team(
2478+
mock_team, include_inactive=False, visibility=None, search_query="sales"
2479+
)
2480+
2481+
assert result is True
2482+
2483+
def test_should_include_personal_team_search_no_match_with_none_description(self):
2484+
"""Test should_include_personal_team filters out when search doesn't match and description is None."""
2485+
mock_team = MagicMock(spec=EmailTeam)
2486+
mock_team.is_active = True
2487+
mock_team.visibility = "private"
2488+
mock_team.name = "Finance Team"
2489+
mock_team.slug = "finance"
2490+
mock_team.description = None
2491+
2492+
result = TeamManagementService.should_include_personal_team(
2493+
mock_team, include_inactive=False, visibility=None, search_query="marketing"
2494+
)
2495+
2496+
assert result is False
2497+
2498+
def test_should_include_personal_team_multiple_filters_combined(self):
2499+
"""Test should_include_personal_team with multiple filters applied together."""
2500+
mock_team = MagicMock(spec=EmailTeam)
2501+
mock_team.is_active = True
2502+
mock_team.visibility = "public"
2503+
mock_team.name = "Open Source Team"
2504+
mock_team.slug = "opensource"
2505+
mock_team.description = "Public contributions"
2506+
2507+
# All filters should pass
2508+
result = TeamManagementService.should_include_personal_team(
2509+
mock_team, include_inactive=False, visibility="public", search_query="open"
2510+
)
2511+
2512+
assert result is True
2513+
2514+
def test_should_include_personal_team_multiple_filters_one_fails(self):
2515+
"""Test should_include_personal_team returns False when one filter fails."""
2516+
mock_team = MagicMock(spec=EmailTeam)
2517+
mock_team.is_active = True
2518+
mock_team.visibility = "private"
2519+
mock_team.name = "Internal Team"
2520+
mock_team.slug = "internal"
2521+
mock_team.description = "Private operations"
2522+
2523+
# Visibility filter should fail
2524+
result = TeamManagementService.should_include_personal_team(
2525+
mock_team, include_inactive=False, visibility="public", search_query="internal"
2526+
)
2527+
2528+
assert result is False

0 commit comments

Comments
 (0)