-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ba58aa9
commit cf2d68b
Showing
7 changed files
with
137 additions
and
75 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import * as dotenv from 'dotenv'; | ||
|
||
dotenv.config({ path: 'test/.env' }); | ||
|
||
export const U = process.env.U!; // username | ||
export const P = process.env.P!; // password | ||
|
||
export const config = { provider: () => ({ username: U, password: P }) }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
import type { GlobalSetupContext } from 'vitest/node'; | ||
import { CourseType, Learn2018Helper } from '../src'; | ||
import { config } from './config'; | ||
|
||
/** | ||
* find suitable semester and course for testing or read from environment variables | ||
* this also works like a gate for skipping tests if no network connection or `OPENSSL_CONF` not correctly configured | ||
*/ | ||
export default async function setup({ provide }: GlobalSetupContext) { | ||
const h = new Learn2018Helper(config); | ||
|
||
await h.login(); | ||
|
||
const findCourse = async (semesterId: string, courseType: CourseType) => { | ||
const courses = await h.getCourseList(semesterId, courseType); | ||
return courses.length > 0 ? courses[0].id : undefined; | ||
}; | ||
|
||
let semesterTester = process.env.S; | ||
let courseTester = process.env.C; | ||
let semesterTATester = process.env.ST; | ||
let courseTATester = process.env.CT; | ||
|
||
if (!semesterTester) { | ||
const semesters = await h.getSemesterIdList(); | ||
for (const semester of semesters) { | ||
const course = await findCourse(semester, CourseType.STUDENT); | ||
if (course) { | ||
semesterTester = semester; | ||
courseTester = course; | ||
break; | ||
} | ||
} | ||
semesterTester = semesterTester || semesters[0]; | ||
} | ||
if (!courseTester) { | ||
courseTester = await findCourse(semesterTester, CourseType.STUDENT); | ||
} | ||
provide('S', semesterTester); | ||
provide('C', courseTester); | ||
|
||
if (!semesterTATester) { | ||
const semesters = await h.getSemesterIdList(); | ||
for (const semester of semesters) { | ||
const course = await findCourse(semester, CourseType.TEACHER); | ||
if (course) { | ||
semesterTATester = semester; | ||
courseTATester = course; | ||
break; | ||
} | ||
} | ||
semesterTATester = semesterTATester || semesters[0]; | ||
} | ||
if (!courseTATester) { | ||
courseTATester = await findCourse(semesterTATester, CourseType.TEACHER); | ||
} | ||
provide('ST', semesterTATester); | ||
provide('CT', courseTATester); | ||
|
||
await h.logout(); | ||
} | ||
|
||
declare module 'vitest' { | ||
export interface ProvidedContext { | ||
S: string; | ||
C: string | undefined; | ||
ST: string; | ||
CT: string | undefined; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,28 @@ | ||
import { describe, it, expect, beforeAll, afterAll } from 'vitest'; | ||
import * as dotenv from 'dotenv'; | ||
import { afterAll, beforeAll, describe, expect, it } from 'vitest'; | ||
import { Language, Learn2018Helper } from '../src'; | ||
|
||
dotenv.config({ path: 'test/.env' }); | ||
const U = process.env.U!; // username | ||
const P = process.env.P!; // password | ||
const configs = { provider: () => ({ username: U, password: P }) }; | ||
import { config } from './config'; | ||
|
||
describe('helper interaction', () => { | ||
let helper: Learn2018Helper; | ||
const h = new Learn2018Helper(config); | ||
|
||
beforeAll(async () => { | ||
helper = new Learn2018Helper(configs); | ||
await h.login(); | ||
}); | ||
afterAll(async () => { | ||
await helper.logout(); | ||
await h.logout(); | ||
}); | ||
|
||
it('should set lang', async () => { | ||
await helper.login(); | ||
const pre_lang = helper.getCurrentLanguage(); | ||
await h.login(); | ||
const pre_lang = h.getCurrentLanguage(); | ||
const toset_lang = pre_lang === Language.EN ? Language.ZH : Language.EN; | ||
await helper.setLanguage(toset_lang); | ||
expect(helper.getCurrentLanguage()).toBe(toset_lang); | ||
await h.setLanguage(toset_lang); | ||
expect(h.getCurrentLanguage()).toBe(toset_lang); | ||
|
||
await helper.logout(); | ||
await helper.login(); | ||
expect(helper.getCurrentLanguage()).toBe(toset_lang); | ||
await h.logout(); | ||
await h.login(); | ||
expect(h.getCurrentLanguage()).toBe(toset_lang); | ||
|
||
await helper.setLanguage(pre_lang); | ||
await h.setLanguage(pre_lang); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,7 @@ | ||
# create another .env file under this (not root) folder and replace under config to yours. | ||
U=yourTisnghuaUsername | ||
P=yourTsinghuaPassword | ||
S=semetster1 | ||
C=course1 | ||
ST=semester2 | ||
CT=course2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters