mirror of
https://github.com/CompassConnections/Compass.git
synced 2026-02-19 23:37:25 -05:00
83 lines
2.9 KiB
TypeScript
83 lines
2.9 KiB
TypeScript
// TODO: add test data to firebase emulator as well (see example below, but user IDs from supabase and firebase need to the same)
|
|
|
|
import {createSupabaseDirectClient} from "shared/lib/supabase/init";
|
|
import UserAccountInformation from "../tests/e2e/backend/utils/userInformation";
|
|
import {seedDatabase} from "../tests/e2e/utils/seedDatabase";
|
|
|
|
import axios from 'axios';
|
|
import {config} from '../tests/e2e/web/SPEC_CONFIG.js';
|
|
import {tryCatch} from "common/lib/util/try-catch";
|
|
import {insert} from "shared/lib/supabase/utils";
|
|
|
|
async function createAuth(email: string, password: string) {
|
|
const base = 'http://localhost:9099/identitytoolkit.googleapis.com/v1';
|
|
|
|
try {
|
|
await axios.post(`${base}/accounts:signUp?key=fake-api-key`, {
|
|
email: email,
|
|
password: password,
|
|
returnSecureToken: true
|
|
})
|
|
} catch (err: any) {
|
|
if (err.response?.status === 400 || err.response?.data?.error?.message?.includes('EMAIL_EXISTS')) {
|
|
return;
|
|
}
|
|
if (err.code === 'ECONNREFUSED') throw Error('Firebase emulator not running. Start with:\n yarn test:e2e:services\n')
|
|
console.log(err);
|
|
}
|
|
|
|
console.log('Auth created', config.USERS.DEV_1.EMAIL)
|
|
|
|
// TODY: retrieve real user ID from response
|
|
const userId = Date.now().toString()
|
|
|
|
return userId
|
|
}
|
|
|
|
// Can remove this later once we update tests/e2e/web/fixtures/signInFixture.ts
|
|
createAuth(config.USERS.DEV_1.EMAIL, config.USERS.DEV_1.PASSWORD)
|
|
|
|
async function seedCompatibilityPrompts(pg: any, userId: string = null) {
|
|
// Need some prompts to prevent the onboarding from stopping once it reaches them (just after profile creation)
|
|
const question = "What is your favorite color?"
|
|
const multiple_choice_options = {"Blue": 0, "Green": 1, "Red": 2}
|
|
const {data, error} = await tryCatch(
|
|
insert(pg, 'compatibility_prompts', {
|
|
creator_id: userId,
|
|
question,
|
|
answer_type: 'compatibility_multiple_choice',
|
|
multiple_choice_options,
|
|
})
|
|
)
|
|
console.log('Compatibility prompts created', {data, error})
|
|
}
|
|
|
|
type ProfileType = 'basic' | 'medium' | 'full'
|
|
|
|
(async () => {
|
|
const pg = createSupabaseDirectClient()
|
|
|
|
await seedCompatibilityPrompts(pg)
|
|
|
|
//Edit the count seedConfig to specify the amount of each profiles to create
|
|
const seedConfig = [
|
|
{count: 1, profileType: 'basic' as ProfileType},
|
|
{count: 1, profileType: 'medium' as ProfileType},
|
|
{count: 1, profileType: 'full' as ProfileType},
|
|
]
|
|
|
|
for (const {count, profileType} of seedConfig) {
|
|
for (let i = 0; i < count; i++) {
|
|
const userInfo = new UserAccountInformation()
|
|
userInfo.user_id = await createAuth(userInfo.email, userInfo.password)
|
|
if (i == 0) {
|
|
// Seed the first profile with deterministic data for the e2e tests
|
|
userInfo.name = 'Franklin Buckridge'
|
|
}
|
|
console.log('Seeded user:', userInfo)
|
|
await seedDatabase(pg, userInfo, profileType)
|
|
}
|
|
}
|
|
|
|
process.exit(0)
|
|
})() |