Skip to content
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
20 changes: 12 additions & 8 deletions src/lesson13/homework/immutability.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
test("dummy test", () => undefined);

/*

import { OriginalTeam, ExpectedTeam } from "./immutability";
import {
OriginalTeam,
ExpectedTeam,
originalTeamToExpectedTeam,
originalArrayToExpectedArray,
originalTeamToExpectedTeam2,
} from "./immutability";

// Задание 1
test("team to team", () => {
Expand All @@ -18,7 +22,7 @@ test("team to team", () => {
roster: 25,
};

expect(originalTeamToExpectedTeam(originalTeam)).toBe(expectedTeam);
expect(originalTeamToExpectedTeam(originalTeam)).toStrictEqual(expectedTeam);
});

// Задание 2
Expand All @@ -27,7 +31,9 @@ test("array to array", () => {

const expectedArray = ["two", 3, 4, 5];

expect(originalArrayToExpectedArray(originalArray)).toBe(expectedArray);
expect(originalArrayToExpectedArray(originalArray)).toStrictEqual(
expectedArray
);
});

// Задание 3
Expand All @@ -48,7 +54,5 @@ test("team to team deep", () => {
},
};

expect(originalTeamToExpectedTeam(originalTeam)).toBe(expectedTeam);
expect(originalTeamToExpectedTeam2(originalTeam)).toStrictEqual(expectedTeam);
});

*/
93 changes: 61 additions & 32 deletions src/lesson13/homework/immutability.ts
Original file line number Diff line number Diff line change
@@ -1,39 +1,68 @@
// // Задание 1
// export type OriginalTeam = {
// size: number;
// name: string;
// league: string;
// };

// export type ExpectedTeam = {
// name: string;
// league: string;
// roster: number;
// };

// export const originalTeamToExpectedTeam = (
// originalTeam: OriginalTeam
// ): ExpectedTeam => {
// //
// };
export type OriginalTeam = {
size: number;
name: string;
league: string;
};

export type ExpectedTeam = {
name: string;
league: string;
roster: number;
};

export const originalTeamToExpectedTeam = (
originalTeam: OriginalTeam
// eslint-disable-next-line
// @ts-ignore
): ExpectedTeam => {
const result: ExpectedTeam = {
name: "New York Badgers",
roster: 25,
league: originalTeam.league,
};

return result;
};

// // Задание 2
// type SomeArray = Array<number | string>;
type SomeArray = Array<number | string>;

export const originalArrayToExpectedArray = (
originalArray: SomeArray
// eslint-disable-next-line
// @ts-ignore
): SomeArray => {
const newLastItem: number | string = originalArray[originalArray.length - 1];

const result: SomeArray = originalArray.slice(-2);

// const originalArrayToExpectedArray = (originalArray: SomeArray): SomeArray => {
// //
// };
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore
// @ts-ignore
result.push(newLastItem + 1);
result.unshift("two");

return result;
};

// // Задание 3

// export type Team = {
// name: string;
// captain: {
// name: string;
// age: number;
// };
// };

// export const originalTeamToExpectedTeam = (originalTeam: Team): Team => {
// //
// };
export type Team = {
name: string;
captain: {
name: string;
age: number;
};
};

export const originalTeamToExpectedTeam2 = (
originalTeam: Team
// eslint-disable-next-line
// @ts-ignore
): Team => {
const result: Team = JSON.parse(JSON.stringify(originalTeam));

result.captain.age = 28;

return result;
};
60 changes: 28 additions & 32 deletions src/lesson13/homework/pureFunctions.test.ts
Original file line number Diff line number Diff line change
@@ -1,44 +1,40 @@
test("dummy test", () => undefined);

/*

import { getTopName, Team, QsObj, createQs, parseQs } from "./pureFunctions";

test("it works", () => expect(true).toBe(true));

// test("getTopName", () => {
// const teams: Team[] = [
// { name: "Lions", score: 5 },
// { name: "Tigers", score: 4 },
// { name: "Bears", score: 6 },
// { name: "Monkeys", score: 2 },
// ];

// expect(getTopName(teams)).toBe("Bears");
// });

// test("createQs", () => {
// const qsObj: QsObj = {
// page: "2",
// pageSize: "10",
// total: "205",
// somethingElse: "value",
// };

// expect(createQs(qsObj)).toBe(
// "?page=2&pageSize=10&total=205&somethingElse=value"
// );
// });

// test("parseQs", () => {
// const qs = "?page=2&pageSize=10&total=205&somethingElse=value";

expect(parseQs(qs)).toBe({
test("getTopName", () => {
const teams: Team[] = [
{ name: "Lions", score: 5 },
{ name: "Tigers", score: 4 },
{ name: "Bears", score: 6 },
{ name: "Monkeys", score: 2 },
];

expect(getTopName(teams)).toBe("Bears");
});

test("createQs", () => {
const qsObj: QsObj = {
page: "2",
pageSize: "10",
total: "205",
somethingElse: "value",
});
};

expect(createQs(qsObj)).toBe(
"?page=2&pageSize=10&total=205&somethingElse=value"
);
});

*/
test("parseQs", () => {
const qs = "?page=2&pageSize=10&total=205&somethingElse=value";

expect(parseQs(qs)).toStrictEqual({
page: "2",
pageSize: "10",
total: "205",
somethingElse: "value",
});
});
55 changes: 44 additions & 11 deletions src/lesson13/homework/pureFunctions.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,52 @@
// // Задание 1
// export type Team = { name: string; score: number };
export type Team = { name: string; score: number };

// export const getTopName = (teams: Team[]): string => {
// //
// };
export const getTopName = (
teams: Team[]
// eslint-disable-next-line
// @ts-ignore
): string => {
const maxTeam: Team = teams.reduce((maxTeam: Team, item: Team) =>
item.score > maxTeam.score ? item : maxTeam
);

return maxTeam.name;
};

// // Задание 2
// export type QsObj = Record<string, string | number | boolean | object>;
export type QsObj = Record<string, string | number | boolean | object>;

export const createQs = (
qsObj: QsObj
// eslint-disable-next-line
// @ts-ignore
): string => {
const params: Array<string> = [];

for (const [key, value] of Object.entries(qsObj)) {
params.push(`${key}=${value}`);
}

// export const createQs = (qsObj: QsObj): string => {
// //
// };
return "?" + params.join("&");
};

// // Задание 3

// export const parseQs = (qs: string): QsObj => {
// //
// };
export const parseQs = (
qs: string
// eslint-disable-next-line
// @ts-ignore
): QsObj => {
qs = qs.replace("?", "");

const parser = (str: string, delimeter: string) => str.split(delimeter);

const result = parser(qs, "&").reduce((result: {}, item) => {
const value = parser(item, "=");
// @ts-ignore
result[value[0]] = value[1];
return result;
}, {});

return result;
};
42 changes: 24 additions & 18 deletions src/lesson13/homework/ramdaPureFunctions.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
test("dummy test", () => undefined);
/*

import {
getTopName,
Expand All @@ -9,30 +8,37 @@ import {
parseQs,
} from "./ramdaPureFunctions";

// });
test("getTopName", () => {
const teams: Team[] = [
{ name: "Lions", score: 5 },
{ name: "Tigers", score: 4 },
{ name: "Bears", score: 6 },
{ name: "Monkeys", score: 2 },
];

// test("createQs", () => {
// const qsObj: QsObj = {
// page: "2",
// pageSize: "10",
// total: "205",
// somethingElse: "value",
// };
expect(getTopName(teams)).toBe("Bears");
});

test("createQs", () => {
const qsObj: QsObj = {
page: "2",
pageSize: "10",
total: "205",
somethingElse: "value",
};

// expect(createQs(qsObj)).toBe(
// "?page=2&pageSize=10&total=205&somethingElse=value"
// );
// });
expect(createQs(qsObj)).toBe(
"?page=2&pageSize=10&total=205&somethingElse=value"
);
});

// test("parseQs", () => {
// const qs = "?page=2&pageSize=10&total=205&somethingElse=value";
test("parseQs", () => {
const qs = "?page=2&pageSize=10&total=205&somethingElse=value";

expect(parseQs(qs)).toBe({
expect(parseQs(qs)).toStrictEqual({
page: "2",
pageSize: "10",
total: "205",
somethingElse: "value",
});
});

*/
Loading