| TC-CCM-001 | Search with multiple valid ingredients | 1. Go to search page<br>2. Enter "chicken, rice, broccoli"<br>3. Click Search | chicken, rice, broccoli | Recipes containing ALL three ingredients appear | No results | FAIL |
3. Click Search chicken, rice, broccoli Recipes containing ALL three ingredients appear No results FAIL
| TC-CCM-002 | Search with one ingredient | 1. Go to search page<br>2. Enter "rice"<br>3. Click Search | rice | Recipes containing rice appear | Works — finds matches using ILIKE | PASS |
TC-CCM-002 Search with one ingredient 1. Go to search page
| TC-CCM-003 | Ingredient not found | 1. Enter "quinoa flakes"<br>2. Click Search | quinoa flakes | "No recipes found" message appears | Returns empty recipes: [] | PASS |
2. Enter "rice"
| TC-CCM-004 | Search with duplicated ingredients | 1. Enter "rice, rice, rice"<br>2. Click Search | rice, rice, rice | Same result as single "rice"; no duplicates used | Normalized → same query → same result | PASS |
3. Click Search rice Recipes containing rice appear Works — finds matches using ILIKE PASS
| TC-CCM-005 | Search with extra spaces | 1. Enter " chicken , rice , broccoli "<br>2. Click Search | (with extra spaces) | Recipes containing chicken, rice, and broccoli appear | normalizeWord handles trim → works | PASS |
TC-CCM-003 Ingredient not found 1. Enter "quinoa flakes"
| TC-CCM-006 | Search with uppercase/lowercase mix | 1. Enter "CHICKEN, Rice, BROCCOLI"<br>2. Click Search | Mixed case | Correct recipes appear | .toLowerCase() + ILIKE makes search case-insensitive | PASS |
| TC-CCM-007 | Search with partial ingredient match | 1. Enter "broc"<br>2. Click Search | broc | Either: No results | Because of %broc%, broccoli matches → returns recipes | FAIL |
TC-CCM-004 Search with duplicated ingredients 1. Enter "rice, rice, rice"
| TC-CCM-008 | Search with invalid characters | 1. Enter "rice!!!"<br>2. Click Search | rice!!! | Error message | No sanitizing, treated literally, e.g. rice!!! won't match → 0 results, no error | PASS |
2. Click Search rice, rice, rice Same result as single "rice"; no duplicates used Normalized → same query → same result PASS
| TC-CCM-009 | Search with empty input | 1. Leave input blank<br>2. Click Search | "" | Prompt user to enter ingredients and show all recipes | q = '' → ILIKE %% → returns ALL recipes | PASS |
TC-CCM-005 Search with extra spaces 1. Enter " chicken , rice , broccoli "
| TC-CCM-010 | Search with many ingredients at once | 1. Enter long list: "chicken, rice, cheese, carrots, onion, celery, beans, corn, tomatoes"<br>2. Click Search | 9 ingredients | Recipes requiring all listed ingredients appear | Works as OR search → shows recipes containing any | FAIL |
2. Click Search (with extra spaces) Recipes containing chicken, rice, and broccoli appear normalizeWord handles trim → works PASS
TC-CCM-006 Search with uppercase/lowercase mix 1. Enter "CHICKEN, Rice, BROCCOLI"
### User Story 2: As CourtneyChaosMom, I want to filter recipes by allergies so that all my children can safely eat the meals.
2. Click Search Mixed case Correct recipes appear .toLowerCase() + ILIKE makes search case-insensitive PASS
TC-CCM-007 Search with partial ingredient match 1. Enter "broc"
| Test Case ID | Test Scenario | Test Steps | Test Data | Expected Results | Actual Results | Pass/Fail |
2. Click Search broc Either: No results Because of %broc%, broccoli matches → returns recipes FAIL
TC-CCM-008 Search with invalid characters 1. Enter "rice!!!"
| TC-CCM-021 | Filter by single allergy (no dairy) | 1. Open Filter<br>2. Select "No Dairy"<br>3. Click Apply | no dairy | Only dairy-free recipes appear | Works if correct check box is chosen | PASS |
2. Click Search rice!!! Error message No sanitizing, treated literally, e.g. rice!!! won't match → 0 results, no error PASS
| TC-CCM-022 | Filter by multiple allergies | 1. Select "No Dairy" + "No Peanuts"<br>2. Click Search | no dairy, no peanuts | Only recipes meeting both restrictions appear | Works. Adds multiple NOT @> clauses | PASS |
TC-CCM-009 Search with empty input 1. Leave input blank
| TC-CCM-023 | Allergy filter with cuisine filters | 1. Select Cuisine = Italian<br>2. Select "No Dairy"<br>3. Click Search | Italian + no dairy | Italian dairy-free recipes appear | Works: LOWER(cuisine)=... AND NOT(allergens @>) | PASS |
2. Click Search "" Prompt user to enter ingredients and show all recipes q = '' → ILIKE %% → returns ALL recipes PASS
| TC-CCM-024 | Allergy filter with ingredient search | 1. Enter ingredient "chicken"<br>2. Select "No Nuts"<br>3. Search | chicken + nut-free | Chicken recipes that are nut-free appear | Works, both rules applied | PASS |
TC-CCM-010 Search with many ingredients at once 1. Enter long list: "chicken, rice, cheese, carrots, onion, celery, beans, corn, tomatoes"
| TC-CCM-025 | Filter with no matching recipes | 1. Type in "Eggs" into excluded ingredients<br>2. Apply | no eggs | "No recipes found" message displayed | Shows message saying no recipes found | PASS |
2. Click Search 9 ingredients Recipes requiring all listed ingredients appear Works as OR search → shows recipes containing any FAIL
| TC-CCM-026 | Clear allergy filters | 1. Apply "No Dairy"<br>2. Click "Clear Filters" | click clear filter while filters are applied | All allergy filters removed; full list returns | Works — filter cleared, returns all | PASS |
User Story 2: As CourtneyChaosMom, I want to filter recipes by allergies so that all my children can safely eat the meals.
| TC-CCM-027 | Allergy filter refreshes after page refresh | 1. Apply "No Peanuts"<br>2. Refresh page | no peanuts | Filter remains applied (if system is designed for persistence) | State of filters not stored anywhere, resets | PASS |
Test Case ID Test Scenario Test Steps Test Data Expected Results Actual Results Pass/Fail
| TC-CCM-028 | Invalid allergy selection input | 1. Attempt to enter custom allergen manually | "no mangoes" | No check box to choose | Can not be applied | PASS |
TC-CCM-021 Filter by single allergy (no dairy) 1. Open Filter
| TC-CCM-029 | Conflicting allergy filters | 1. Select "Only dairy" AND "No dairy" | conflicting filters | Error message | no result / recipe not found | PASS |
2. Select "No Dairy"
| TC-CCM-030 | Display allergy icons on results | 1. Apply "No Nuts"<br>2. Search | no nuts | Each recipe excludes the proper allergens | allergens are only excluded correctly sometimes | FAIL |
3. Click Apply no dairy Only dairy-free recipes appear Works if correct check box is chosen PASS
TC-CCM-022 Filter by multiple allergies 1. Select "No Dairy" + "No Peanuts"
2. Click Search no dairy, no peanuts Only recipes meeting both restrictions appear Works. Adds multiple NOT @> clauses PASS
TC-CCM-023 Allergy filter with cuisine filters 1. Select Cuisine = Italian
2. Select "No Dairy"
3. Click Search Italian + no dairy Italian dairy-free recipes appear Works: LOWER(cuisine)=... AND NOT(allergens @>) PASS
TC-CCM-024 Allergy filter with ingredient search 1. Enter ingredient "chicken"
2. Select "No Nuts"
3. Search chicken + nut-free Chicken recipes that are nut-free appear Works, both rules applied PASS
TC-CCM-025 Filter with no matching recipes 1. Type in "Eggs" into excluded ingredients
2. Apply no eggs "No recipes found" message displayed Shows message saying no recipes found PASS
TC-CCM-026 Clear allergy filters 1. Apply "No Dairy"
2. Click "Clear Filters" click clear filter while filters are applied All allergy filters removed; full list returns Works — filter cleared, returns all PASS
TC-CCM-027 Allergy filter refreshes after page refresh 1. Apply "No Peanuts"
2. Refresh page no peanuts Filter remains applied (if system is designed for persistence) State of filters not stored anywhere, resets PASS
TC-CCM-028 Invalid allergy selection input 1. Attempt to enter custom allergen manually "no mangoes" No check box to choose Can not be applied PASS
TC-CCM-029 Conflicting allergy filters 1. Select "Only dairy" AND "No dairy" conflicting filters Error message no result / recipe not found PASS
TC-CCM-030 Display allergy icons on results 1. Apply "No Nuts"
2. Search no nuts Each recipe excludes the proper allergens allergens are only excluded correctly sometimes FAIL