diff --git a/apps/kitchensink-react/e2e/multi-resource.spec.ts b/apps/kitchensink-react/e2e/multi-resource.spec.ts
index a40800c14..c8f7899d3 100644
--- a/apps/kitchensink-react/e2e/multi-resource.spec.ts
+++ b/apps/kitchensink-react/e2e/multi-resource.spec.ts
@@ -23,15 +23,17 @@ test.describe('Multi Resource Route', () => {
process.env['SDK_E2E_DATASET_0'], // First dataset
)
- // Create a player document in dataset 1
+ // Create a movie document in dataset 1
const {
- documentIds: [playerId],
+ documentIds: [movieId],
} = await createDocuments(
[
{
- _type: 'player',
- name: 'Test Player Multi Resource',
- slackUserId: 'U1234567890',
+ _type: 'movie',
+ title: 'Test Movie Multi Resource',
+ tmdb_id: 123456,
+ release_date: '2021-01-01',
+ hosted_poster_path: 'https://example.com/poster.jpg',
},
],
{asDraft: false}, // Create as published document
@@ -45,16 +47,16 @@ test.describe('Multi Resource Route', () => {
// Wait for both document cards to be visible
await expect(pageContext.getByTestId(/^author-document-/)).toBeVisible()
- await expect(pageContext.getByTestId(/^player-document-/)).toBeVisible()
+ await expect(pageContext.getByTestId(/^movie-document-/)).toBeVisible()
// Verify author document content is displayed
await expect(pageContext.getByTestId('author-name-display')).toHaveText(
'Test Author Multi Resource',
)
- // Verify player document content is displayed
- await expect(pageContext.getByTestId('player-name-display')).toHaveText(
- 'Test Player Multi Resource',
+ // Verify movie document content is displayed
+ await expect(pageContext.getByTestId('movie-name-display')).toHaveText(
+ 'Test Movie Multi Resource',
)
// Test author projection data
@@ -67,12 +69,14 @@ test.describe('Multi Resource Route', () => {
'Best Code Award',
)
- // Test player projection data
- await expect(pageContext.getByTestId('player-projection-name')).toContainText(
- 'Test Player Multi Resource',
+ // Test movie projection data
+ await expect(pageContext.getByTestId('movie-projection-name')).toContainText(
+ 'Test Movie Multi Resource',
)
- await expect(pageContext.getByTestId('player-projection-slack-id')).toContainText('U1234567890')
- await expect(pageContext.getByTestId('player-projection-has-slack')).toContainText('Yes')
+ await expect(pageContext.getByTestId('movie-projection-release-date')).toContainText(
+ '2021-01-01',
+ )
+ await expect(pageContext.getByTestId('movie-projection-has-poster')).toContainText('Yes')
// Test editing the author document
const authorNameInput = pageContext.getByTestId('author-name-input')
@@ -87,26 +91,26 @@ test.describe('Multi Resource Route', () => {
'Updated Author Name',
)
- // Test editing the player document
- const playerNameInput = pageContext.getByTestId('player-name-input')
- await playerNameInput.fill('Updated Player Name')
- await playerNameInput.press('Enter')
+ // Test editing the movie document
+ const movieNameInput = pageContext.getByTestId('movie-name-input')
+ await movieNameInput.fill('Updated Movie Name')
+ await movieNameInput.press('Enter')
// Verify the change is reflected in the display
- await expect(pageContext.getByTestId('player-name-display')).toHaveText('Updated Player Name')
+ await expect(pageContext.getByTestId('movie-name-display')).toHaveText('Updated Movie Name')
// Verify the change is also reflected in the projection
- await expect(pageContext.getByTestId('player-projection-name')).toContainText(
- 'Updated Player Name',
+ await expect(pageContext.getByTestId('movie-projection-name')).toContainText(
+ 'Updated Movie Name',
)
// Test that external changes are reflected (simulating real-time updates)
const authorClient = getClient(process.env['SDK_E2E_DATASET_0'])
await authorClient.patch(`drafts.${authorId}`).set({name: 'Externally Updated Author'}).commit()
- // Test external change for player
- const playerClient = getClient(process.env['SDK_E2E_DATASET_1'])
- await playerClient.patch(`drafts.${playerId}`).set({name: 'Externally Updated Player'}).commit()
+ // Test external change for movie
+ const movieClient = getClient(process.env['SDK_E2E_DATASET_1'])
+ await movieClient.patch(`drafts.${movieId}`).set({title: 'Externally Updated Movie'}).commit()
// Verify external change is reflected
await expect(async () => {
@@ -118,10 +122,10 @@ test.describe('Multi Resource Route', () => {
// Verify external change is reflected
await expect(async () => {
- const playerDisplay = await pageContext.getByTestId('player-name-display').textContent()
- const playerProjection = await pageContext.getByTestId('player-projection-name').textContent()
- expect(playerDisplay).toBe('Externally Updated Player')
- expect(playerProjection).toContain('Externally Updated Player')
+ const movieDisplay = await pageContext.getByTestId('movie-name-display').textContent()
+ const movieProjection = await pageContext.getByTestId('movie-projection-name').textContent()
+ expect(movieDisplay).toBe('Externally Updated Movie')
+ expect(movieProjection).toContain('Externally Updated Movie')
}).toPass({timeout: 5000})
})
})
diff --git a/apps/kitchensink-react/package.json b/apps/kitchensink-react/package.json
index 775289f66..6424941ea 100644
--- a/apps/kitchensink-react/package.json
+++ b/apps/kitchensink-react/package.json
@@ -7,12 +7,12 @@
"build": "pnpm tsc && vite build",
"clean": "rimraf dist",
"deploy": "sanity deploy",
- "dev": "vite",
+ "dev": "sanity dev",
"install": "npm run schema:extract && npm run types:generate",
"lint": "eslint .",
"paramour": "npx paramour --config=./src/css/css.config.js --output=./src/css/paramour.css",
"preview": "vite preview",
- "schema:extract": "sanity schema extract --workspace ppsg7ml5-test --path schema.ppsg7ml5.test.json && sanity schema extract --workspace d45jg133-production --path schema.d45jg133.production.json",
+ "schema:extract": "sanity schema extract --workspace ppsg7ml5-test --path schema.ppsg7ml5.test.json && sanity schema extract --workspace vo1ysemo-production --path schema.vo1ysemo.production.json",
"test:e2e": "playwright test",
"tsc": "tsc --noEmit",
"types:generate": "./node_modules/@sanity/cli/bin/sanity typegen generate"
diff --git a/apps/kitchensink-react/sanity-typegen.json b/apps/kitchensink-react/sanity-typegen.json
index 03481343d..3c488112c 100644
--- a/apps/kitchensink-react/sanity-typegen.json
+++ b/apps/kitchensink-react/sanity-typegen.json
@@ -5,8 +5,8 @@
"schemaId": "ppsg7ml5.test"
},
{
- "schemaPath": "./schema.d45jg133.production.json",
- "schemaId": "d45jg133.production"
+ "schemaPath": "./schema.vo1ysemo.production.json",
+ "schemaId": "vo1ysemo.production"
}
],
"overloadClientMethods": false
diff --git a/apps/kitchensink-react/sanity.cli.ts b/apps/kitchensink-react/sanity.cli.ts
index e821d2947..1aec3fd55 100644
--- a/apps/kitchensink-react/sanity.cli.ts
+++ b/apps/kitchensink-react/sanity.cli.ts
@@ -2,8 +2,8 @@ import {defineCliConfig} from 'sanity/cli'
export default defineCliConfig({
app: {
- organizationId: 'oSyH1iET5',
+ organizationId: 'oblZgbTFj',
entry: './src/App.tsx',
- id: 'cbhuuqhkp6sevhpreoh0so8s',
+ id: 'wkyoigmzawwnnwx458zgoh46',
},
})
diff --git a/apps/kitchensink-react/sanity.config.ts b/apps/kitchensink-react/sanity.config.ts
index 523156389..de12ea7b6 100644
--- a/apps/kitchensink-react/sanity.config.ts
+++ b/apps/kitchensink-react/sanity.config.ts
@@ -69,13 +69,43 @@ const bookType = defineType({
],
})
-const playerType = defineType({
- name: 'player',
- title: 'Player',
+const movieType = defineType({
+ name: 'movie',
+ title: 'Movie',
type: 'document',
fields: [
- defineField({name: 'name', title: 'Name', type: 'string'}),
- defineField({name: 'slackUserId', title: 'Slack User ID', type: 'string'}),
+ {
+ name: 'title',
+ title: 'Title',
+ type: 'string',
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: 'tmdb_id',
+ title: 'TMDB ID',
+ type: 'number',
+ validation: (Rule) => Rule.required(),
+ },
+ {
+ name: 'poster_path',
+ title: 'Poster Image',
+ type: 'string',
+ },
+ {
+ name: 'hosted_poster_path',
+ title: 'Hosted Poster Image',
+ type: 'url',
+ },
+ {
+ name: 'release_date',
+ title: 'Release Date',
+ type: 'string',
+ },
+ {
+ name: 'overview',
+ title: 'Overview',
+ type: 'text',
+ },
],
})
@@ -90,12 +120,12 @@ export default defineConfig([
},
},
{
- name: 'd45jg133-production',
- basePath: '/d45jg133-production',
- projectId: 'd45jg133',
+ name: 'vo1ysemo-production',
+ basePath: '/vo1ysemo-production',
+ projectId: 'vo1ysemo',
dataset: 'production',
schema: {
- types: [playerType],
+ types: [movieType],
},
},
])
diff --git a/apps/kitchensink-react/src/DocumentCollection/MultiResourceRoute.tsx b/apps/kitchensink-react/src/DocumentCollection/MultiResourceRoute.tsx
index 99d81bf56..fc4a4c34e 100644
--- a/apps/kitchensink-react/src/DocumentCollection/MultiResourceRoute.tsx
+++ b/apps/kitchensink-react/src/DocumentCollection/MultiResourceRoute.tsx
@@ -12,7 +12,7 @@ import {JSX, Suspense, useRef} from 'react'
import {
type MultiResourceAuthorProjectionProjectionResult,
- type MultiResourcePlayerProjectionProjectionResult,
+ MultiResourceMovieProjectionProjectionResult,
} from '../../sanity.types'
import {devConfigs, e2eConfigs} from '../sanityConfigs'
@@ -41,10 +41,10 @@ const multiResourceAuthorProjection = defineProjection(`{
"firstAward": awards[0]
}`)
-const multiResourcePlayerProjection = defineProjection(`{
- name,
- slackUserId,
- "hasSlackId": defined(slackUserId)
+const multiResourceMovieProjection = defineProjection(`{
+ title,
+ release_date,
+ "hasPoster": defined(hosted_poster_path)
}`)
interface ProjectionCardProps
- Name: {data?.name ?? 'No name'}
+
+ Title: {data?.title ?? 'No title'}
- Slack User ID: {data?.slackUserId ?? 'Not set'}
+
+ Release Date: {data?.release_date ?? 'Not set'}
- Has Slack ID: {data?.hasSlackId ? 'Yes' : 'No'}
+
+ Has Poster: {data?.hasPoster ? 'Yes' : 'No'}
- {player?.name}
+
+ {movie?.title}
Document Editors
Document Projections
@@ -385,8 +383,8 @@ export function MultiResourceRoute(): JSX.Element {
Second Project Presence for {devConfigs[1].projectId}