Skip to content

Commit 10d3491

Browse files
committed
Tests
1 parent 2b54e09 commit 10d3491

16 files changed

Lines changed: 317 additions & 260 deletions

File tree

app/Http/Controllers/ComputerScienceResourceController.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ public function store(StoreResourceRequest $request)
122122
'platforms' => $resource->platforms,
123123
]);
124124

125-
return redirect(route('resources.show', ['slug' => $resource->slug]))
126-
->with('success', 'Created Resource!');
125+
$request->session()->flash('success', 'Created Resource!');
126+
return response()->json($resource);
127127
} catch (Throwable $e) {
128128
DB::rollBack();
129129
Log::critical('Failed to create resource', [
@@ -133,7 +133,7 @@ public function store(StoreResourceRequest $request)
133133
'data' => $validatedData,
134134
]);
135135

136-
return back()->withErrors(['error' => 'Failed to create resource. Please try again.']);
136+
return response()->json([], 500);
137137
}
138138
}
139139

app/Http/Controllers/ResourceReviewController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public function store(StoreResourceReview $request, ComputerScienceResource $com
5858
'review_id' => $review->id,
5959
]);
6060

61-
return response()->json();
61+
return response()->json($review);
6262
}
6363

6464
public function update(StoreResourceReview $request, ComputerScienceResource $computerScienceResource)
@@ -106,6 +106,6 @@ public function update(StoreResourceReview $request, ComputerScienceResource $co
106106
'review_id' => $existingReview->id,
107107
]);
108108

109-
return response()->json();
109+
return response()->json($existingReview);
110110
}
111111
}

resources/js/Components/Comments/Commentable.vue

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const props = defineProps({
2828
},
2929
sortByInitialValue: {
3030
type: String,
31-
default: "top"
31+
default: "top",
3232
},
3333
loadedCommentData: {
3434
type: Object,
@@ -60,7 +60,9 @@ const createdNewCommentCallback = (newComment, userData) => {
6060
6161
// Ensure DOM updates are complete, then scroll to the new comment
6262
nextTick(() => {
63-
const newCommentElement = commentRefs.value.get(`comment_${newComment.id}`);
63+
const newCommentElement = commentRefs.value.get(
64+
`comment_${newComment.id}`
65+
);
6466
if (newCommentElement) {
6567
newCommentElement.scrollIntoView({
6668
behavior: "smooth",
@@ -80,8 +82,10 @@ provide("commentRefs", commentRefs);
8082
const showEmptyState = computed(() => {
8183
return (
8284
hasLoadedCommentData &&
83-
idToChildren.value instanceof Map &&
84-
(!idToChildren.value.get(null) || idToChildren.value.get(null).length === 0)
85+
(!idToChildren.value ||
86+
!(idToChildren.value instanceof Map) ||
87+
!idToChildren.value.get(null) ||
88+
idToChildren.value.get(null).length === 0)
8589
);
8690
});
8791

resources/js/Components/Resources/Reviews/CreateResourceReview.vue

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ const formFields = [
6767
6868
const {
6969
isSavedToLocalStorage,
70-
isDataLoaded,
7170
hasFormContent,
7271
clearLocalStorage,
7372
} = useLocalStorageSaver(form, props.resourceId, formFields, "review-draft");
@@ -114,9 +113,7 @@ const submitReview = async (event) => {
114113
</script>
115114

116115
<template>
117-
<!-- Main container, conditionally rendered -->
118116
<div
119-
v-if="isDataLoaded"
120117
class="mx-auto bg-white shadow-lg rounded-2xl p-6 relative"
121118
>
122119
<FormSaverChip
File renamed without changes.

resources/js/Composables/useLocalStorageSaver.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { ref, computed, onMounted, onUnmounted, watch } from "vue";
33
export function useLocalStorageSaver(form, localStorageKeyId, formFields, keyPrefix = 'edit-draft') {
44
const localStorageKey = computed(() => `${keyPrefix}-${localStorageKeyId}`);
55
const isSavedToLocalStorage = ref(false);
6-
const isDataLoaded = ref(false);
76

87
const hasFormContent = computed(() => {
98
return formFields.some(field => {
@@ -43,14 +42,17 @@ export function useLocalStorageSaver(form, localStorageKeyId, formFields, keyPre
4342
form[field] = parsedData[field];
4443
}
4544
});
45+
// Always keep image_file as null after loading
46+
if (formFields.includes('image_file')) {
47+
form['image_file'] = null;
48+
}
4649
isSavedToLocalStorage.value = true;
4750
} catch (error) {
4851
console.error('Error loading saved data:', error);
4952
localStorage.removeItem(localStorageKey.value);
5053
isSavedToLocalStorage.value = false;
5154
}
5255
}
53-
isDataLoaded.value = true;
5456
};
5557

5658
let saveTimeout;
@@ -76,7 +78,6 @@ export function useLocalStorageSaver(form, localStorageKeyId, formFields, keyPre
7678

7779
return {
7880
isSavedToLocalStorage,
79-
isDataLoaded,
8081
hasFormContent,
8182
clearLocalStorage
8283
};

resources/js/Helpers/validation.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { object, string, array, number } from "yup";
66
export const resourceMandatoryFields = object({
77
name: string().required("Name is required").max(100, "Max 100 chars"),
88
page_url: string()
9-
.url("Must be a valid URL (Need to have https://)")
9+
.url("Must be a valid URL")
1010
.required("URL is required"),
1111
platforms: array().of(string()).min(1, "At least one platform is required"),
1212
description: string().required("Description is required").max(10000),

0 commit comments

Comments
 (0)