mirror of
https://github.com/pieartsy/PluralFlux.git
synced 2026-04-16 20:55:30 +10:00
Compare commits
1 Commits
add-system
...
Develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
badc6baaf0 |
@@ -1,47 +0,0 @@
|
||||
import {Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, Unique} from "typeorm"
|
||||
|
||||
@Entity({name: "System", synchronize: true})
|
||||
@Unique("UQ_System_userid", ['userid'])
|
||||
@Unique("UQ_System_shortid", ['shortid'])
|
||||
export class System {
|
||||
|
||||
@PrimaryGeneratedColumn()
|
||||
id: number
|
||||
|
||||
@Column({
|
||||
nullable: true,
|
||||
})
|
||||
shortid: string
|
||||
|
||||
@Column()
|
||||
userid: string
|
||||
|
||||
@Column({
|
||||
length: 100,
|
||||
nullable: true
|
||||
})
|
||||
name: string
|
||||
|
||||
@Column({
|
||||
type: "varchar",
|
||||
nullable: true,
|
||||
length: 100
|
||||
})
|
||||
fronter: string
|
||||
|
||||
@Column({
|
||||
nullable: true,
|
||||
})
|
||||
grouptag: string
|
||||
|
||||
@Column({
|
||||
nullable: true,
|
||||
})
|
||||
autoproxy: string
|
||||
|
||||
@CreateDateColumn({ type: 'timestamptz' })
|
||||
createdAt: Date
|
||||
|
||||
@UpdateDateColumn({ type: 'timestamptz' })
|
||||
updatedAt: Date
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Update1773670748825 implements MigrationInterface {
|
||||
name = 'Update1773670748825'
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`CREATE TABLE "System" ("id" SERIAL NOT NULL, "shortid" character varying, "userid" character varying NOT NULL, "name" character varying(100), "fronter" character varying(100), "grouptag" character varying, "autoproxy" character varying, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), CONSTRAINT "UQ_System_shortid" UNIQUE ("shortid"), CONSTRAINT "UQ_System_userid" UNIQUE ("userid"), CONSTRAINT "PK_b8e3f6855de5a4758fcb59e5567" PRIMARY KEY ("id"))`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`DROP TABLE "System"`);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Update1773749921832 implements MigrationInterface {
|
||||
name = 'Update1773749921832'
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`INSERT INTO "System" ("userid") SELECT DISTINCT "userid" FROM "Member";`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`DELETE from "System" USING "Member" WHERE "System".userid = "Member".userid;`);
|
||||
}
|
||||
}
|
||||
@@ -293,6 +293,21 @@ describe('bot', () => {
|
||||
expect(client.login).toHaveBeenCalledWith(process.env.FLUXER_BOT_TOKEN)
|
||||
})
|
||||
|
||||
test('login exits with code 1 if client.login fails', async () => {
|
||||
// Arrange
|
||||
let message = "client.login failed";
|
||||
client.login = jest.fn().mockImplementation(() => { throw new Error(message) });
|
||||
jest.spyOn(global.console, 'error').mockImplementation(() => {});
|
||||
jest.spyOn(process, 'exit').mockImplementation(() => {});
|
||||
// Act
|
||||
await login();
|
||||
// Assert
|
||||
expect(console.error).toHaveBeenCalledTimes(1);
|
||||
expect(console.error).toHaveBeenCalledWith('Login failed:', new Error(message));
|
||||
expect(process.exit).toHaveBeenCalledTimes(1);
|
||||
expect(process.exit).toHaveBeenCalledWith(1);
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
// restore the spy created with spyOn
|
||||
jest.restoreAllMocks();
|
||||
|
||||
@@ -67,6 +67,7 @@ describe('MemberHelper', () => {
|
||||
});
|
||||
|
||||
test.each([
|
||||
[[mockMember.name], null, null, undefined, false, mockMember.name],
|
||||
[[mockMember.name, '--help'], null, null, undefined, true, undefined],
|
||||
[['new', '--help'], null, null, 'new', true, '--help'],
|
||||
[['remove', '--help'], null, null, 'remove', true, '--help'],
|
||||
@@ -474,6 +475,30 @@ describe('MemberHelper', () => {
|
||||
})
|
||||
})
|
||||
|
||||
describe('removeMember', () => {
|
||||
test('if removeMember returns a positive number, return a success message', async () => {
|
||||
// Arrange
|
||||
memberRepo.removeMember.mockResolvedValue(1);
|
||||
const expectedReturn = `Member "${mockMember.name}" has been deleted.`;
|
||||
// Act
|
||||
const res = await memberHelper.removeMember(authorId, mockMember.name);
|
||||
// Assert
|
||||
expect(memberRepo.removeMember).toHaveBeenCalledTimes(1);
|
||||
expect(memberRepo.removeMember).toHaveBeenCalledWith(authorId, mockMember.name);
|
||||
expect(res).toEqual(expectedReturn);
|
||||
})
|
||||
|
||||
test('if removeMember returns a negative number, throw error', async () => {
|
||||
// Arrange
|
||||
memberRepo.removeMember.mockResolvedValue(-1);
|
||||
// Act
|
||||
expect(memberHelper.removeMember(authorId, mockMember.name)).rejects.toThrow(new Error(`${enums.err.NO_MEMBER}`));
|
||||
// Assert
|
||||
expect(memberRepo.removeMember).toHaveBeenCalledTimes(1);
|
||||
expect(memberRepo.removeMember).toHaveBeenCalledWith(authorId, mockMember.name);
|
||||
})
|
||||
})
|
||||
|
||||
describe('addFullMember', () => {
|
||||
test('calls getMemberByName', async () => {
|
||||
// Arrange
|
||||
@@ -504,6 +529,29 @@ describe('MemberHelper', () => {
|
||||
expect(memberRepo.createMember).not.toHaveBeenCalled();
|
||||
})
|
||||
|
||||
test('if displayName is not filled out, call memberRepo.createMember with null value', async () => {
|
||||
// Arrange
|
||||
memberRepo.getMemberByName.mockResolvedValue();
|
||||
const expectedMemberArgs = {
|
||||
name: mockMember.name,
|
||||
userid: authorId,
|
||||
displayname: null,
|
||||
proxy: null,
|
||||
propic: null
|
||||
}
|
||||
memberRepo.createMember = jest.fn().mockResolvedValue(expectedMemberArgs);
|
||||
const expectedReturn = {
|
||||
member: expectedMemberArgs,
|
||||
errors: [`Display name ${enums.err.NO_VALUE}. ${enums.err.SET_TO_NULL}`]
|
||||
}
|
||||
// Act
|
||||
const res = await memberHelper.addFullMember(authorId, mockMember.name, " ");
|
||||
// Assert
|
||||
expect(res).toEqual(expectedReturn);
|
||||
expect(memberRepo.createMember).toHaveBeenCalledWith(expectedMemberArgs);
|
||||
expect(memberRepo.createMember).toHaveBeenCalledTimes(1);
|
||||
})
|
||||
|
||||
test('if displayname is over 32 characters, call memberRepo.createMember with null value', async () => {
|
||||
// Arrange
|
||||
memberRepo.getMemberByName.mockResolvedValue();
|
||||
|
||||
Reference in New Issue
Block a user