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

[Refactor] SummaryUtil 리팩토링(#723) #756

Merged
merged 3 commits into from
Nov 20, 2024
Merged
Show file tree
Hide file tree
Changes from 2 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
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,21 @@ test("getClusterIds test", () => {
expect(result).toHaveLength(2);
});

test("getInitData test", () => {
describe("getInitData test", () => {
const result = getInitData(clusterNodeMockData);

expect(result).not.toBeUndefined();
expect(result[0].clusterId).toBe(0);
expect(result[0].summary.authorNames[0][0]).toBe("ytaek");
expect(result[0].summary.content.message).toBe("Initial commit");
test("getInitData test", () => {
expect(result).not.toBeUndefined();
expect(result[0].clusterId).toBe(0);
expect(result[0].summary.authorNames[0][0]).toBe("ytaek");
expect(result[0].summary.content.message).toBe("Initial commit");
});

test("클러스터의 커밋 작성자 이름이 중복되지 않는다.", () => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code는 가급적 한글보다는 영어로 작성해주시면 감사하겠습니다!

const isUnique = result
.map((data) => data.summary.authorNames.length === new Set(data.summary.authorNames).size)
.every((value) => value === true);

expect(isUnique).toBe(true);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분이 정말 아리까리 하네요.

  • 일단 test에 logic이 들어가있어서, 이 isUnique에 대한 test가 또 필요할 것 같아요.
  • test에는 가급적 value로 정해주면 좋겠습니다.
  • 그리고, 하나의 action(result값)에 대한 assertion만 따로 해서 분리를 했는데, 이럴꺼면 getInitData test에 통합시키는게 맞을 것 같긴 합니다.

});
});
Original file line number Diff line number Diff line change
Expand Up @@ -66,55 +66,37 @@ export function getInitData(data: GlobalProps["data"]): Cluster[] {
const clusters: Cluster[] = [];

data.map((clusterNode) => {
const { message } = clusterNode.commitNodeList[0].commit;
const resultMsg = message.split("/n/n")[0];
const cluster: Cluster = {
clusterId: clusterNode.commitNodeList[0].clusterId,
summary: {
authorNames: [],
content: {
message: resultMsg,
count: clusterNode.commitNodeList.length - 1,
},
},
latestReleaseTag: "",
};

const { commit: clusterFirstCommit, clusterId } = clusterNode.commitNodeList[0];
const { message } = clusterFirstCommit;
const clusterTags: string[] = [];
const authorSet: Set<string> = new Set();

clusterNode.commitNodeList.map((commitNode: CommitNode) => {
clusterNode.commitNodeList.forEach((commitNode: CommitNode) => {
// set names
const authorSet: Set<string> = new Set();
commitNode.commit.author.names.map((name) => {
commitNode.commit.author.names.forEach((name) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍👍👍

authorSet.add(name.trim());
return name.trim();
});

cluster.summary.authorNames.push(Array.from(authorSet));

// get releaseTags in cluster commitNodeList
commitNode.commit.releaseTags?.map((tag) => {
commitNode.commit.releaseTags?.forEach((tag) => {
clusterTags.push(tag);
return clusterTags;
});

return commitNode;
});

// set latset release tag
const latestReleaseTag = getCommitLatestTag(clusterTags);
cluster.latestReleaseTag = latestReleaseTag;

// remove name overlap
const authorsSet = cluster.summary.authorNames.reduce((set, authorArray) => {
authorArray.forEach((author) => {
set.add(author);
});
return set;
}, new Set());

cluster.summary.authorNames = [];
cluster.summary.authorNames.push(Array.from(authorsSet) as string[]);
const cluster: Cluster = {
clusterId: clusterId,
summary: {
authorNames: [Array.from(authorSet)],
content: {
message: message.split("/n/n")[0],
count: clusterNode.commitNodeList.length - 1,
},
},
latestReleaseTag: latestReleaseTag,
};

clusters.push(cluster);
return cluster;
Expand Down
Loading