127 lines
5.0 KiB
Plaintext
127 lines
5.0 KiB
Plaintext
RULES:
|
|
1) if you do not have a file that you need, stop, and request it immediately.
|
|
2) never remove logging or comments
|
|
3) you cannot ever use 'any' or 'unknown' to solve possible typescript issues
|
|
4) when creating new files, output there entire path in your explanation, to make it easier to know where to save those new files and directories to
|
|
5) add comments when you can, as that will help ensure ideas persist into the app
|
|
6) Your knowledge of package version, like nodejs, is always old, like a year or more old - ask me for the best version to use, as your knowledge is incomplete
|
|
7) Stop making predictions and/or guessing at solutions. Focus on adding logging and debugging to issues that are not solved right away.
|
|
8) Do not make obsequious statements - we're here to do a job, not get patted on the shoulder for insignificant achievements.
|
|
9) Provide me with the npm command to execute rather than wanting to edit the package.json file. That is not the correct way to handle a package update.
|
|
10) Provide the code solution in DIFF format for brevity.
|
|
11) Always add logging and debugging to prove a solution works, and only remove logging and debugging when it is not possible to adapt it to the new conditions.
|
|
|
|
|
|
|
|
latest refacter
|
|
|
|
Refactor `RecipeSuggester.test.tsx` to use `renderWithProviders`.
|
|
Create a new test file for `StatCard.tsx` to verify its props and rendering.
|
|
|
|
|
|
|
|
while assuming that master_schema_rollup.sql is the "ultimate source of truth", issues can happen and it may not have been properly
|
|
updated - look for differences between these files
|
|
|
|
|
|
UPC SCANNING !
|
|
|
|
EXPIRY DATES !
|
|
|
|
|
|
|
|
|
|
are there any other unit test files that should be refactored :
|
|
|
|
Extract Shared Utility Functions Several utility functions are duplicated across multiple route files.
|
|
|
|
Update Route Files to Use New Utilities route files will be updated to import these new utility functions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Review the `getJobStatus` API client function and add more robust error handling for non-JSON responses.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Review the `src/services/apiClient.test.ts` file. It seems to have a lot of manual data creation for API payloads. Can we refactor it to use factories where appropriate, or create new factories for API payloads if needed?
|
|
|
|
|
|
|
|
The `useApi` hook has complex state management. Can you suggest a way to simplify it, perhaps by using a reducer or a state machine?
|
|
|
|
|
|
|
|
|
|
|
|
Are there any opportunities to improve the mock factories themselves, for example, by adding more realistic default data?
|
|
|
|
Now that the user creation is centralized, can we add more complex test user scenarios to the helper, like a user with a pre-existing shopping list?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
How can I add a new "Recipes Created" stat to the AdminStatsPage and its tests?
|
|
|
|
NO CODE just outline the steps
|
|
|
|
|
|
Gemini
|
|
Outlining the Implementation Path
|
|
Gemini 2.5 generated this response due to high traffic on Gemini 3
|
|
|
|
Of course! Here is a step-by-step outline of how to add a new "Recipes Created" statistic to your AdminStatsPage.
|
|
|
|
Backend Steps
|
|
|
|
|
|
Update Database Query:
|
|
|
|
In the database repository file responsible for fetching admin statistics (e.g., admin.db.ts), you'll need to add a query that performs a COUNT(*) on your recipes table.
|
|
|
|
|
|
Update Service Layer:
|
|
|
|
The service function that aggregates the statistics (which is called by your API controller) needs to be modified to execute the new recipe count query.
|
|
The result of this query should be added to the statistics object that is returned.
|
|
|
|
|
|
Update API Endpoint:
|
|
|
|
The controller for the /api/admin/stats endpoint must be updated to include the new recipeCount field in the JSON object it sends to the frontend.
|
|
Frontend Steps
|
|
|
|
|
|
Update AppStats Type:
|
|
|
|
In src/services/apiClient.ts, where the AppStats type is defined, add the new property: recipeCount: number;.
|
|
Update Mock Factory:
|
|
|
|
In src/tests/utils/mockFactories.ts, modify the createMockAppStats function. Add recipeCount to the defaultStats object with a default value (e.g., recipeCount: 500). This ensures any test that uses the factory will not break due to the missing property.
|
|
|
|
|
|
|
|
|
|
|
|
Update AdminStatsPage Component (AdminStatsPage.tsx):
|
|
|
|
Import a suitable icon for recipes, like BookOpenIcon, at the top of the file.
|
|
Inside the main div where the other StatCard components are rendered, add a new one for the recipe count:
|
|
jsx
|
|
<StatCard title="Total Recipes" value={stats.recipeCount.toLocaleString()} icon={<BookOpenIcon className="w-6 h-6" />} />
|
|
Update AdminStatsPage Tests (AdminStatsPage.test.tsx):
|
|
|
|
In the test 'should display stats cards when data is fetched successfully', update the mockStats object to include a value for recipeCount. Add a new expect assertion to verify that the "Total Recipes" title and its corresponding value are rendered.
|
|
In the test 'should format large numbers with commas for readability', add a large number for recipeCount in the mock data and assert that it is rendered with commas.
|
|
In the test 'should correctly display zero values for all stats', add recipeCount: 0 to the mock data and increase the expected count of "0" elements found in the document from 5 to 6. |