From 81303586d783a72c84658e6bf47bcb9e61fb3f33 Mon Sep 17 00:00:00 2001 From: Chegele Date: Thu, 6 Jul 2023 15:46:25 -0400 Subject: [PATCH] Unit tests for member --- .../reputation/reputation/member.spec.ts | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/services/reputation/reputation/member.spec.ts diff --git a/src/services/reputation/reputation/member.spec.ts b/src/services/reputation/reputation/member.spec.ts new file mode 100644 index 0000000..66751a1 --- /dev/null +++ b/src/services/reputation/reputation/member.spec.ts @@ -0,0 +1,70 @@ +import { Member } from "./member"; + +describe('Reputation Service Member', () => { + + let testMemberA: Member; + let testMemberB: Member; + + beforeEach(() => { + testMemberA = new Member("testMemberA"); + testMemberB = new Member("testMemberB"); + }); + + it('should be able to get all members', () => { + const members = Member.getAllMembers(); + expect(members.length).toBe(2); + expect(members[0]).toBe(testMemberA); + expect(members[1]).toBe(testMemberB); + }); + + it('should be able to get a specific member', () => { + const member = Member.getMember("testMemberA"); + expect(member).toBeDefined(); + }); + + it('should be able to create a new member with random id', () => { + const member = new Member(); + expect(typeof member.id).toBe("string"); + expect(member.id.length).toBeGreaterThan(5); + }); + + it('should be able to create a new member with specific id', () => { + const member = new Member("testing"); + expect(member.id).toBe("testing"); + }); + + it('should be able to get the id of a member', () => { + expect(testMemberA.id).toBe("testMemberA"); + }); + + it('should be able to get the reputation of a member', () => { + expect(testMemberA.reputation).toBe(0); + }); + + it('should be able to get the ledger for a member', () => { + expect(testMemberA.ledger.length).toBe(0); + }); + + it('should produce a ledger entry when modifying reputation', () => { + const entry = testMemberA.postReputation("testPost", 10); + expect(testMemberA.ledger.length).toBe(1); + expect(testMemberA.ledger[0]).toBe(entry); + expect(entry.timestamp).toBeDefined(); + expect(entry.type).toBe("post"); + expect(entry.postId).toBe("testPost"); + expect(entry.citationId).toBeNull(); + expect(entry.change).toBe(10); + expect(entry.balance).toBe(10); + }); + + it('should be able to modify members reputation with a post', () => { + testMemberA.postReputation("testPost", 10); + expect(testMemberA.reputation).toBe(10); + }); + + it('should be able to modify members reputation with a citation', () => { + testMemberA.citationReputation("testPost", "testCitation", 10); + expect(testMemberA.reputation).toBe(10); + }); + +});