Skip to content

Shadi A. - #21

Open
shmoonwalker wants to merge 3 commits into
HackYourAssignment:mainfrom
shmoonwalker:main
Open

shmoonwalker wants to merge 3 commits into
HackYourAssignment:mainfrom
shmoonwalker:main

Conversation

@shmoonwalker

Copy link
Copy Markdown

Complete All Tasks For Week 10

@github-actions

Copy link
Copy Markdown

📝 HackYourFuture auto grade

Assignment Score: 100 / 100 ✅

Status: ✅ Passed
Minimum score to pass: 50
🧪 The auto grade is experimental and still being improved

Test Details
Vitest unit test results:

✅ [10] Markdown file created
✅ [1] Content starts with # Cocktail Recipes
✅ [1] Content includes drink name as ## Margarita
✅ [1] Content includes medium drink image
✅ [1] Content includes category and alcoholic info
✅ [1] Content includes header ### Ingredients
✅ [1] Content includes ingredients list
✅ [1] Content includes header ### Instructions
✅ [1] Content includes instruction details
✅ [1] Content includes glass type
✅ [1] Calls console.error() if no cocktail name argument provided
✅ [1] Calls console.error() if cocktail not found
✅ [1] Calls console.error() if fetch was not OK
✅ should complete all CRUD operations successfully
✅ should verify updatePost uses PUT method with Authorization
✅ should verify deleteUser uses DELETE method with Authorization
✅ should verify deletePost uses DELETE method with Authorization
✅ should verify getMe fetches current user info with Authorization
✅ should handle errors in any CRUD operation
✅ should make GET request to /users/me with Authorization header
✅ should return user information with correct structure
✅ should throw error when response is not ok (404)
✅ should make GET request to /posts/me with Authorization header
✅ should return an array of posts
✅ should return empty array when no posts exist
✅ should make POST request to /users/register with correct data
✅ should return user data with correct structure
✅ should include Content-Type header
✅ should throw error when API returns error
✅ should make POST request to /users/login with correct data
✅ should return user data with token
✅ should throw error on invalid credentials
✅ should make POST request to /posts with correct data and Authorization header
✅ should return post data with correct structure
✅ should include Content-Type and Authorization headers
✅ should throw error when not authenticated

Total passed: 36
Total failed: 0

@JQnetherlands
JQnetherlands self-requested a review March 19, 2026 10:57
@JQnetherlands JQnetherlands self-assigned this Mar 19, 2026
@@ -1,5 +1,5 @@
// Change base URL for API requests to the local IP of the Post Central API server
const BASE_URL = 'http://localhost:3000';
const BASE_URL = "https://postcentral.hyf.dev";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh yes, it could have been that too


function authHeader(token) {
return {
Authorization: `Bearer ${token}`,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice

});
if (!response.ok) {
throw new Error(
`Failed to get user info: HTTP ${response.status} ${response.statusText}`,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see my main comment

});
if (!response.ok) {
throw new Error(
`Failed to login user: HTTP ${response.status} ${response.statusText}`,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see my main comment

});
if (!response.ok) {
throw new Error(
`Failed to create post: HTTP ${response.status} ${response.statusText}`,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see my main comment

});
if (!response.ok) {
throw new Error(
`Failed to get posts: HTTP ${response.status} ${response.statusText}`,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see my main comment

});
if (!response.ok) {
throw new Error(
`Failed to update post: HTTP ${response.status} ${response.statusText}`,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see my main comment

});
if (!response.ok) {
throw new Error(
`Failed to delete post: HTTP ${response.status} ${response.statusText}`,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see my main comment

@JQnetherlands JQnetherlands left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello, Shadi.

I will start with the good news! you have passed both task successfully, you almost have exceeds expectations ( almost 5 starts), now I will go on with the nices to have.

For now, you solution about the task 1 , it’s the one I like most! You did amazingly using for loop, I have to say it is well done and more important from an academic point of view, I have only several good things to say about it.

You clearly understand loops, that is very important because all the methods map(), forEach(), reduce(), etc are under the hood loops, if you dominate loop perfectly you can understand and use the other methods (map, forEach, Reduce) much better.

Loops are important because you have it in almost all the programming languages, maybe you don’t have a map() function in other language, but for sure loops, and with loops you can accomplish almost everything. Please keep the good basic knowledge as you are doing.

Some developers, teams, maybe will tell you that you should use methods instead of loops, just be aware that this preferences for the company or team you work for and in any case won’t erase that indeed you did an amazing job, but keep in mind that maybe in the future you should use (because they tell you) methods instead of loops.

About task 2, all your functions accomplish their goal , well done, each of one shows you do understand the CRUD and HTTP actions and what each Method needs to successfully fetch to the back end (GET, POST, UPDATE, DELETE).

The only feedback I have to write better code is the following:

Right now you have ---> Failed to delete post: HTTP ${response.status} ${response.statusText}

That would be ---> Failed to delete post: HTTP 403 forbidden

Do you think it is clear enough information for the user to know what went wrong?
Can you imagine a better statement for the user?

for example this you could do if you change your code a bit, I will give you the final expected output that I am talking about:

clearer output ---> Failed to delete post: HTTP 403 You can only modify your own posts

Do you see the difference? can you imagine how you could make your code give that example? HINT: maybe an inline conditional , do you know which one?

That you could apply to each function to make it more user friendly.

Again, you did super well overall, you passed successfully and almost beyond expectations, please be proud of yourself and keep the good work! Congratulations

@JQnetherlands JQnetherlands added the Reviewed This assignment has been reivewed by a mentor and a feedback has been provided label Mar 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Reviewed This assignment has been reivewed by a mentor and a feedback has been provided

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants