diff --git a/.adonisjs/client/registry/schema.d.ts b/.adonisjs/client/registry/schema.d.ts index 6392d57..94fe50d 100644 --- a/.adonisjs/client/registry/schema.d.ts +++ b/.adonisjs/client/registry/schema.d.ts @@ -99,8 +99,8 @@ export interface Registry { paramsTuple: [] params: {} query: {} - response: ExtractResponse>> - errorResponse: ExtractErrorResponse>> + response: ExtractResponse>> + errorResponse: ExtractErrorResponse>> } } 'kits.store': { @@ -111,8 +111,8 @@ export interface Registry { paramsTuple: [] params: {} query: ExtractQuery> - response: ExtractResponse>> - errorResponse: ExtractErrorResponse>> | { status: 422; response: { errors: SimpleError[] } } + response: ExtractResponse>> + errorResponse: ExtractErrorResponse>> | { status: 422; response: { errors: SimpleError[] } } } } 'kits.edit': { @@ -123,8 +123,8 @@ export interface Registry { paramsTuple: [ParamValue] params: { rkey: ParamValue } query: ExtractQueryForGet> - response: ExtractResponse>> - errorResponse: ExtractErrorResponse>> | { status: 422; response: { errors: SimpleError[] } } + response: ExtractResponse>> + errorResponse: ExtractErrorResponse>> | { status: 422; response: { errors: SimpleError[] } } } } 'kits.update': { @@ -135,8 +135,8 @@ export interface Registry { paramsTuple: [ParamValue] params: { rkey: ParamValue } query: ExtractQuery|InferInput<(typeof import('#kits/validators/kit').updateKitValidator)>> - response: ExtractResponse>> - errorResponse: ExtractErrorResponse>> | { status: 422; response: { errors: SimpleError[] } } + response: ExtractResponse>> + errorResponse: ExtractErrorResponse>> | { status: 422; response: { errors: SimpleError[] } } } } 'kits.destroy': { @@ -147,8 +147,8 @@ export interface Registry { paramsTuple: [ParamValue] params: { rkey: ParamValue } query: ExtractQuery> - response: ExtractResponse>> - errorResponse: ExtractErrorResponse>> | { status: 422; response: { errors: SimpleError[] } } + response: ExtractResponse>> + errorResponse: ExtractErrorResponse>> | { status: 422; response: { errors: SimpleError[] } } } } 'profile': { @@ -183,8 +183,8 @@ export interface Registry { paramsTuple: [ParamValue, ParamValue] params: { handle: ParamValue; rkey: ParamValue } query: ExtractQuery> - response: ExtractResponse>> - errorResponse: ExtractErrorResponse>> | { status: 422; response: { errors: SimpleError[] } } + response: ExtractResponse>> + errorResponse: ExtractErrorResponse>> | { status: 422; response: { errors: SimpleError[] } } } } 'kits.unlike': { @@ -195,8 +195,8 @@ export interface Registry { paramsTuple: [ParamValue, ParamValue] params: { handle: ParamValue; rkey: ParamValue } query: ExtractQuery> - response: ExtractResponse>> - errorResponse: ExtractErrorResponse>> | { status: 422; response: { errors: SimpleError[] } } + response: ExtractResponse>> + errorResponse: ExtractErrorResponse>> | { status: 422; response: { errors: SimpleError[] } } } } 'stats': { diff --git a/.adonisjs/server/controllers.ts b/.adonisjs/server/controllers.ts index 36d87cd..72afe6b 100644 --- a/.adonisjs/server/controllers.ts +++ b/.adonisjs/server/controllers.ts @@ -18,7 +18,7 @@ export const controllers = { }, kits: { DestroyKit: () => import('#app/kits/controllers/destroy_kit_controller'), - LikeKit: () => import('#app/kits/controllers/like_kit_controller'), + KitLikes: () => import('#app/kits/controllers/kit_likes_controller'), ListKits: () => import('#app/kits/controllers/list_kits_controller'), StoreKit: () => import('#app/kits/controllers/store_kit_controller'), UpdateKit: () => import('#app/kits/controllers/update_kit_controller'), diff --git a/app/kits/controllers/destroy_kit_controller.ts b/app/kits/controllers/destroy_kit_controller.ts index acf5c91..66a9e79 100644 --- a/app/kits/controllers/destroy_kit_controller.ts +++ b/app/kits/controllers/destroy_kit_controller.ts @@ -7,7 +7,7 @@ import { KitsService } from '#kits/services/kits_service' export default class DestroyKitController { constructor(private kitsService: KitsService) {} - async handle({ params, request, response, session }: HttpContext) { + async destroy({ params, request, response, session }: HttpContext) { const { rkey } = await request.validateUsing(kitParamsValidator, { data: params }) try { diff --git a/app/kits/controllers/like_kit_controller.ts b/app/kits/controllers/kit_likes_controller.ts similarity index 95% rename from app/kits/controllers/like_kit_controller.ts rename to app/kits/controllers/kit_likes_controller.ts index 3309a52..1d8d632 100644 --- a/app/kits/controllers/like_kit_controller.ts +++ b/app/kits/controllers/kit_likes_controller.ts @@ -4,7 +4,7 @@ import { KitLikesService } from '#kits/services/kit_likes_service' import { likeKitParamsValidator } from '#kits/validators/kit' @inject() -export default class LikeKitController { +export default class KitLikesController { constructor(private kitLikesService: KitLikesService) {} async store({ params, request, response }: HttpContext) { diff --git a/app/kits/controllers/store_kit_controller.ts b/app/kits/controllers/store_kit_controller.ts index c473c40..f90422d 100644 --- a/app/kits/controllers/store_kit_controller.ts +++ b/app/kits/controllers/store_kit_controller.ts @@ -7,11 +7,11 @@ import { KitsService } from '#kits/services/kits_service' export default class StoreKitController { constructor(private kitsService: KitsService) {} - async render({ inertia }: HttpContext) { + async create({ inertia }: HttpContext) { return inertia.render('kits/new', {}) } - async handle({ request, response, session }: HttpContext) { + async store({ request, response, session }: HttpContext) { const data = await request.validateUsing(createKitValidator) await this.kitsService.create(data) diff --git a/app/kits/controllers/update_kit_controller.ts b/app/kits/controllers/update_kit_controller.ts index f2608ca..49132b1 100644 --- a/app/kits/controllers/update_kit_controller.ts +++ b/app/kits/controllers/update_kit_controller.ts @@ -8,7 +8,7 @@ import KitRecordTransformer from '#kits/transformers/kit_record_transformer' export default class UpdateKitController { constructor(private kitsService: KitsService) {} - async render({ params, request, inertia }: HttpContext) { + async edit({ params, request, inertia }: HttpContext) { const { rkey } = await request.validateUsing(kitParamsValidator, { data: params }) const remote = await this.kitsService.getByRkey(rkey) @@ -17,7 +17,7 @@ export default class UpdateKitController { }) } - async handle({ params, request, response, session }: HttpContext) { + async update({ params, request, response, session }: HttpContext) { const { rkey } = await request.validateUsing(kitParamsValidator, { data: params }) const data = await request.validateUsing(updateKitValidator) diff --git a/app/kits/routes.ts b/app/kits/routes.ts index 8367440..c4e93c6 100644 --- a/app/kits/routes.ts +++ b/app/kits/routes.ts @@ -14,10 +14,10 @@ const { router .group(() => { router.get('/shelf', [ListKitsController, 'render']).as('shelf') - router.get('/kits/new', [StoreKitController, 'render']).as('kits.new') - router.post('/kits', [StoreKitController, 'handle']).as('kits.store') - router.get('/kits/:rkey/edit', [UpdateKitController, 'render']).as('kits.edit') - router.put('/kits/:rkey', [UpdateKitController, 'handle']).as('kits.update') - router.delete('/kits/:rkey', [DestroyKitController, 'handle']).as('kits.destroy') + router.get('/kits/new', [StoreKitController, 'create']).as('kits.new') + router.post('/kits', [StoreKitController, 'store']).as('kits.store') + router.get('/kits/:rkey/edit', [UpdateKitController, 'edit']).as('kits.edit') + router.put('/kits/:rkey', [UpdateKitController, 'update']).as('kits.update') + router.delete('/kits/:rkey', [DestroyKitController, 'destroy']).as('kits.destroy') }) .use(middleware.auth()) diff --git a/app/profile/routes.ts b/app/profile/routes.ts index 20a3f2c..2c49d12 100644 --- a/app/profile/routes.ts +++ b/app/profile/routes.ts @@ -4,16 +4,16 @@ import { controllers } from '#generated/controllers' const { profile: { ShowProfile: ShowProfileController, ShowKit: ShowKitController }, - kits: { LikeKit: LikeKitController }, + kits: { KitLikes: KitLikesController }, } = controllers router.get('/profile/:handle', [ShowProfileController, 'render']).as('profile') router.get('/profile/:handle/kit/:rkey', [ShowKitController, 'render']).as('kit') router - .post('/profile/:handle/kit/:rkey/like', [LikeKitController, 'store']) + .post('/profile/:handle/kit/:rkey/like', [KitLikesController, 'store']) .as('kits.like') .use(middleware.auth()) router - .delete('/profile/:handle/kit/:rkey/like', [LikeKitController, 'destroy']) + .delete('/profile/:handle/kit/:rkey/like', [KitLikesController, 'destroy']) .as('kits.unlike') .use(middleware.auth()) diff --git a/tests/functional/kits/like_kit.spec.ts b/tests/functional/kits/like_kit.spec.ts index 4e4a6ea..6dbe357 100644 --- a/tests/functional/kits/like_kit.spec.ts +++ b/tests/functional/kits/like_kit.spec.ts @@ -8,7 +8,7 @@ import { KitLikesService } from '#kits/services/kit_likes_service' import FakeAuthMiddlewareWithUser from '../../helpers/fake_auth_middleware_with_user.js' import { FakeKitLikesService } from '../../helpers/fake_kit_likes_service.js' -test.group('LikeKitController.store', (group) => { +test.group('KitLikesController.store', (group) => { group.each.setup(() => testUtils.db().truncate()) const kitUri = AtUri.make('did:plc:amuro', 'build.gunpla.kit', 'abc123').toString() @@ -25,7 +25,7 @@ test.group('LikeKitController.store', (group) => { swap(AuthMiddleware, new FakeAuthMiddlewareWithUser('did:plc:liker')) const response = await client - .visit('kits.like', { handle: 'ghost.bsky.social', rkey: 'anyrkey' }) + .visit('kits.like', { handle: 'nonexistent.bsky.social', rkey: 'abc123' }) .withCsrfToken() response.assertStatus(404) @@ -35,11 +35,14 @@ test.group('LikeKitController.store', (group) => { client, swap, }) => { - await ProfileFactory.merge({ did: 'did:plc:amuro', handle: 'amuro.bsky.social' }).create() swap(AuthMiddleware, new FakeAuthMiddlewareWithUser('did:plc:liker')) + await ProfileFactory.merge({ + did: 'did:plc:amuro', + handle: 'amuro.bsky.social', + }).create() const response = await client - .visit('kits.like', { handle: 'amuro.bsky.social', rkey: 'ghost-rkey' }) + .visit('kits.like', { handle: 'amuro.bsky.social', rkey: 'unknownrkey' }) .withCsrfToken() response.assertStatus(404) @@ -49,13 +52,18 @@ test.group('LikeKitController.store', (group) => { client, swap, }) => { - await ProfileFactory.merge({ did: 'did:plc:amuro', handle: 'amuro.bsky.social' }).create() + swap(AuthMiddleware, new FakeAuthMiddlewareWithUser('did:plc:liker')) + swap(KitLikesService, new FakeKitLikesService()) + + await ProfileFactory.merge({ + did: 'did:plc:amuro', + handle: 'amuro.bsky.social', + }).create() + await KitFactory.merge({ did: 'did:plc:amuro', uri: kitUri, }).create() - swap(AuthMiddleware, new FakeAuthMiddlewareWithUser('did:plc:liker')) - swap(KitLikesService, new FakeKitLikesService({ likeCount: 1 })) const response = await client .visit('kits.like', { handle: 'amuro.bsky.social', rkey: 'abc123' }) @@ -66,7 +74,7 @@ test.group('LikeKitController.store', (group) => { }) }) -test.group('LikeKitController.destroy', (group) => { +test.group('KitLikesController.destroy', (group) => { group.each.setup(() => testUtils.db().truncate()) const kitUri = AtUri.make('did:plc:amuro', 'build.gunpla.kit', 'abc123').toString() @@ -80,12 +88,17 @@ test.group('LikeKitController.destroy', (group) => { }) test('DELETE kits.unlike when user has no like record returns 404', async ({ client, swap }) => { - await ProfileFactory.merge({ did: 'did:plc:amuro', handle: 'amuro.bsky.social' }).create() + swap(AuthMiddleware, new FakeAuthMiddlewareWithUser('did:plc:liker')) + + await ProfileFactory.merge({ + did: 'did:plc:amuro', + handle: 'amuro.bsky.social', + }).create() + await KitFactory.merge({ did: 'did:plc:amuro', uri: kitUri, }).create() - swap(AuthMiddleware, new FakeAuthMiddlewareWithUser('did:plc:liker')) const response = await client .visit('kits.unlike', { handle: 'amuro.bsky.social', rkey: 'abc123' }) @@ -98,13 +111,18 @@ test.group('LikeKitController.destroy', (group) => { client, swap, }) => { - await ProfileFactory.merge({ did: 'did:plc:amuro', handle: 'amuro.bsky.social' }).create() + swap(AuthMiddleware, new FakeAuthMiddlewareWithUser('did:plc:liker')) + swap(KitLikesService, new FakeKitLikesService()) + + await ProfileFactory.merge({ + did: 'did:plc:amuro', + handle: 'amuro.bsky.social', + }).create() + await KitFactory.merge({ did: 'did:plc:amuro', uri: kitUri, }).create() - swap(AuthMiddleware, new FakeAuthMiddlewareWithUser('did:plc:liker')) - swap(KitLikesService, new FakeKitLikesService({ likeCount: 0 })) const response = await client .visit('kits.unlike', { handle: 'amuro.bsky.social', rkey: 'abc123' })