Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Emma tdd lesson1 pass tests #52

Open
wants to merge 18 commits into
base: emma-tdd-workshop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 15 additions & 14 deletions src/index.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {
People,
Person,
arrayCopier,
ageAdder,
ageRemover,
Expand All @@ -11,8 +11,8 @@ import {
describe("arrayCopier", () => {
it("should return an empty array when an empty array is passed", () => {
// ARRANGE
const emptyArray: ReadonlyArray<People> = [];
const expected: ReadonlyArray<People> = [];
const emptyArray: ReadonlyArray<Person> = [];
const expected: ReadonlyArray<Person> = [];
// ACT
const result = arrayCopier(emptyArray);
// ASSERT
Expand All @@ -21,11 +21,11 @@ describe("arrayCopier", () => {

it("should return a copy of the array", () => {
// ARRANGE
const peopleList: ReadonlyArray<People> = [
const peopleList: ReadonlyArray<Person> = [
{ name: "Aron", age: 42 },
{ name: "Stormi", age: 24 },
];
const expected: ReadonlyArray<People> = [
const expected: ReadonlyArray<Person> = [
{ name: "Aron", age: 42 },
{ name: "Stormi", age: 24 },
];
Expand All @@ -39,7 +39,7 @@ describe("arrayCopier", () => {
describe("ageAdder", () => {
it("should add age to each person in agelessPeople array", () => {
// ARRANGE
const agelessPeopleList: ReadonlyArray<Partial<People>> = [
const agelessPeopleList: ReadonlyArray<Partial<Person>> = [
{ name: "Aron" },
{ name: "Stormi" },
];
Expand All @@ -53,18 +53,19 @@ describe("ageAdder", () => {
];
// ACT
const result = ageAdder(agelessPeopleList, ages);
// ASSERT
expect(result).toEqual(expected);
});
});

describe("ageRemover", () => {
it("should remove the age key from an array of people with ages", () => {
// ARRANGE
const peopleList: ReadonlyArray<People> = [
const peopleList: ReadonlyArray<Person> = [
{ name: "Aron", age: 42 },
{ name: "Stormi", age: 24 },
];
const expected: ReadonlyArray<Partial<People>> = [
const expected: ReadonlyArray<Partial<Person>> = [
{ name: "Aron" },
{ name: "Stormi" },
];
Expand All @@ -78,11 +79,11 @@ describe("ageRemover", () => {
describe("ageRemover2", () => {
it("should remove the age key from an array of people with ages", () => {
// ARRANGE
const peopleList: ReadonlyArray<People> = [
const peopleList: ReadonlyArray<Person> = [
{ name: "Aron", age: 42 },
{ name: "Stormi", age: 24 },
];
const expected: ReadonlyArray<Partial<People>> = [
const expected: ReadonlyArray<Partial<Person>> = [
{ name: "Aron" },
{ name: "Stormi" },
];
Expand All @@ -96,11 +97,11 @@ describe("ageRemover2", () => {
describe('ageRemover3', () => {
it("should return an array of objects with only string name", () => {
// ARRANGE
const peopleList: ReadonlyArray<People> = [
const peopleList: ReadonlyArray<Person> = [
{ name: "Aron", age: 42 },
{ name: "Stormi", age: 24 },
];
const expected: ReadonlyArray<Partial<People>> = [
const expected: ReadonlyArray<Partial<Person>> = [
{ name: "Aron" }, { name: "Stormi" }
];
// ACT
Expand All @@ -113,7 +114,7 @@ describe('ageRemover3', () => {
describe('idAsName', () => {
it('should return an array of objects with id instead of name key', () => {
// ARRANGE
const peopleList: ReadonlyArray<People> = [
const peopleList: ReadonlyArray<Person> = [
{ name: "Aron", age: 42 },
{ name: "Stormi", age: 24 },
];
Expand All @@ -131,7 +132,7 @@ describe('idAsName', () => {
describe('justNames', () => {
it('should return an array of names', () => {
// ARRANGE
const peopleList: ReadonlyArray<People> = [
const peopleList: ReadonlyArray<Person> = [
{ name: "Aron", age: 42 },
{ name: "Stormi", age: 24 },
];
Expand Down
61 changes: 46 additions & 15 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,61 @@
export interface People {
export interface Person {
readonly name: string;
readonly age: number;
}

export const arrayCopier = (array: ReadonlyArray<People>) => {

export const arrayCopier = (array: ReadonlyArray<Person>) => {
return [...array];
};

export const ageAdder = (people: ReadonlyArray<Partial<People>>, ages: Record<string, number>) => {

export const ageAdder = (people: ReadonlyArray<Partial<Person>>, ages: Record<string, number>) => {
const addAges = people.map((person) => {
const { name } = person
if (name) {
return { ...person,
age: ages[name.toLowerCase()]}
}
});
return addAges;
};

export const ageRemover = (people: ReadonlyArray<People>) => {

export const ageRemover = (people: ReadonlyArray<Person>) => {
const removeAges = people.map(person => {
return {
name: person.name
}
});
return removeAges;
}
export const ageRemover2 = (people: ReadonlyArray<People>) => {

export const ageRemover2 = (people: ReadonlyArray<Person>) => {
const removeAges = people.map(person => {
const { name } = person
return { name };
});
return removeAges;
}
export const ageRemover3 = (people: ReadonlyArray<People>) => {

export const ageRemover3 = (people: ReadonlyArray<Person>) => {
const removeAges = people.map(person => {
const { age, ...rest } = person
return rest;
});
return removeAges;
}

export const idAsName = (people: ReadonlyArray<People>) => {

export const idAsName = (people: ReadonlyArray<Person>) => {
const replaceName = people.map(person => {
const { name: id, age } = person;
return {
id,
age
}
});
return replaceName;
}

export const justNames = (people: ReadonlyArray<People>) => {

export const justNames = (people: ReadonlyArray<Person>) => {
const namesArray = people.map(person => {
const { name: id } = person;
return id;
});
return namesArray;
}