87 lines
2.4 KiB
TypeScript
87 lines
2.4 KiB
TypeScript
import { GradeSchool } from "./grade-school";
|
|
|
|
describe("School", () => {
|
|
let school: GradeSchool;
|
|
|
|
beforeEach(() => {
|
|
school = new GradeSchool();
|
|
});
|
|
|
|
it("a new school has an empty roster", () => {
|
|
expect(school.roster()).toEqual({});
|
|
});
|
|
|
|
it("adding a student adds them to the roster for the given grade", () => {
|
|
school.add("Aimee", 2);
|
|
|
|
const expectedDb = { 2: ["Aimee"] };
|
|
expect(school.roster()).toEqual(expectedDb);
|
|
});
|
|
|
|
it("adding more students to the same grade adds them to the roster", () => {
|
|
school.add("Blair", 2);
|
|
school.add("James", 2);
|
|
school.add("Paul", 2);
|
|
|
|
const expectedDb = { 2: ["Blair", "James", "Paul"] };
|
|
expect(school.roster()).toEqual(expectedDb);
|
|
});
|
|
|
|
it("adding students to different grades adds them to the roster", () => {
|
|
school.add("Chelsea", 3);
|
|
school.add("Logan", 7);
|
|
|
|
const expectedDb = { 3: ["Chelsea"], 7: ["Logan"] };
|
|
expect(school.roster()).toEqual(expectedDb);
|
|
});
|
|
|
|
it("grade returns the students in that grade in alphabetical order", () => {
|
|
school.add("Franklin", 5);
|
|
school.add("Bradley", 5);
|
|
school.add("Jeff", 1);
|
|
|
|
const expectedStudents = ["Bradley", "Franklin"];
|
|
expect(school.grade(5)).toEqual(expectedStudents);
|
|
});
|
|
|
|
it("grade returns an empty array if there are no students in that grade", () => {
|
|
expect(school.grade(1)).toEqual([]);
|
|
});
|
|
|
|
it("the students names in each grade in the roster are sorted", () => {
|
|
school.add("Jennifer", 4);
|
|
school.add("Kareem", 6);
|
|
school.add("Christopher", 4);
|
|
school.add("Kyle", 3);
|
|
|
|
const expectedSortedStudents = {
|
|
3: ["Kyle"],
|
|
4: ["Christopher", "Jennifer"],
|
|
6: ["Kareem"],
|
|
};
|
|
expect(school.roster()).toEqual(expectedSortedStudents);
|
|
});
|
|
|
|
it("roster cannot be modified outside of module", () => {
|
|
school.add("Aimee", 2);
|
|
const roster = school.roster();
|
|
roster[2].push("Oops.");
|
|
const expectedDb = { 2: ["Aimee"] };
|
|
expect(school.roster()).toEqual(expectedDb);
|
|
});
|
|
|
|
it("roster cannot be modified outside of module using grade()", () => {
|
|
school.add("Aimee", 2);
|
|
school.grade(2).push("Oops.");
|
|
const expectedDb = { 2: ["Aimee"] };
|
|
expect(school.roster()).toEqual(expectedDb);
|
|
});
|
|
|
|
it("a student can't be in two different grades", () => {
|
|
school.add("Aimee", 2);
|
|
school.add("Aimee", 1);
|
|
|
|
expect(school.grade(2)).toEqual([]);
|
|
});
|
|
});
|