64 lines
1.6 KiB
TypeScript
64 lines
1.6 KiB
TypeScript
|
import type { SupabaseUser } from "@/infrastructure/supabase/supabase"
|
||
|
import { USER_MOCK } from "../domain/User"
|
||
|
|
||
|
interface SupabaseUserMockCreateOptions {
|
||
|
id?: SupabaseUser["id"]
|
||
|
email?: SupabaseUser["email"]
|
||
|
displayName?: SupabaseUser["user_metadata"]["display_name"]
|
||
|
date?: Date
|
||
|
}
|
||
|
const supabaseUserMockCreate = (
|
||
|
options: SupabaseUserMockCreateOptions = {},
|
||
|
): SupabaseUser => {
|
||
|
const {
|
||
|
id = USER_MOCK.example.id,
|
||
|
email = USER_MOCK.example.email,
|
||
|
displayName = USER_MOCK.example.displayName,
|
||
|
date = new Date(),
|
||
|
} = options
|
||
|
|
||
|
return {
|
||
|
id,
|
||
|
app_metadata: { provider: "email", providers: ["email"] },
|
||
|
user_metadata: { display_name: displayName },
|
||
|
aud: "authenticated",
|
||
|
email,
|
||
|
confirmation_sent_at: undefined,
|
||
|
recovery_sent_at: undefined,
|
||
|
email_change_sent_at: undefined,
|
||
|
new_email: "",
|
||
|
new_phone: "",
|
||
|
invited_at: undefined,
|
||
|
action_link: "",
|
||
|
created_at: date.toISOString(),
|
||
|
confirmed_at: undefined,
|
||
|
email_confirmed_at: date.toISOString(),
|
||
|
phone_confirmed_at: undefined,
|
||
|
last_sign_in_at: undefined,
|
||
|
role: "authenticated",
|
||
|
updated_at: date.toISOString(),
|
||
|
identities: [
|
||
|
{
|
||
|
id,
|
||
|
user_id: id,
|
||
|
identity_data: {
|
||
|
sub: id,
|
||
|
email,
|
||
|
},
|
||
|
provider: "email",
|
||
|
identity_id: id,
|
||
|
last_sign_in_at: date.toISOString(),
|
||
|
created_at: date.toISOString(),
|
||
|
updated_at: date.toISOString(),
|
||
|
},
|
||
|
],
|
||
|
is_anonymous: false,
|
||
|
factors: [],
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export const SUPABASE_USER_MOCK = {
|
||
|
create: supabaseUserMockCreate,
|
||
|
example: supabaseUserMockCreate(),
|
||
|
}
|