Merged PR 909: 画面修正(CSVファイルの変換処理)
## 概要 [Task4202: 画面修正(CSVファイルの変換処理)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/4202) - CSVデータの変換関数を修正 - author_id,encryption_passwordが数値のみの場合でも、文字列として扱うようにする ## レビューポイント - ほかに確認したほうが良いテストケースはあるか ## 動作確認状況 - ローカルで確認 - 行った修正がデグレを発生させていないことを確認できるか - 具体的にどのような確認をしたか - 既存のテストはすべて通ることを確認 ## 補足 - 相談、参考資料などがあれば
This commit is contained in:
parent
37666a00c7
commit
909c2a6d55
@ -131,4 +131,23 @@ describe("parse", () => {
|
|||||||
expect(actualValue.role).toEqual(expectValue.role);
|
expect(actualValue.role).toEqual(expectValue.role);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("author_id,encryption_passwordが数値のみの場合でも、文字列として変換できる", async () => {
|
||||||
|
const text = fs.readFileSync("src/common/test/test_008.csv", "utf-8");
|
||||||
|
const actualData = await parseCSV(text);
|
||||||
|
const expectData: CSVType[] = [
|
||||||
|
{
|
||||||
|
name: "hoge",
|
||||||
|
email: "sample@example.com",
|
||||||
|
role: 1,
|
||||||
|
author_id: "1111",
|
||||||
|
auto_renew: 1,
|
||||||
|
notification: 1,
|
||||||
|
encryption: 1,
|
||||||
|
encryption_password: "222222",
|
||||||
|
prompt: 0,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
expect(actualData).toEqual(expectData);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -42,7 +42,24 @@ export const parseCSV = async (csvString: string): Promise<CSVType[]> =>
|
|||||||
download: false,
|
download: false,
|
||||||
worker: false, // XXX: workerを使うとエラーが発生するためfalseに設定
|
worker: false, // XXX: workerを使うとエラーが発生するためfalseに設定
|
||||||
header: true,
|
header: true,
|
||||||
dynamicTyping: true,
|
dynamicTyping: {
|
||||||
|
// author_id, encryption_passwordは数値のみの場合、numberに変換されたくないためdynamicTypingをtrueにしない
|
||||||
|
role: true,
|
||||||
|
auto_renew: true,
|
||||||
|
notification: true,
|
||||||
|
encryption: true,
|
||||||
|
prompt: true,
|
||||||
|
},
|
||||||
|
// dynamicTypingがfalseの場合、空文字をnullに変換できないためtransformを使用する
|
||||||
|
transform: (value, field) => {
|
||||||
|
if (field === "author_id" || field === "encryption_password") {
|
||||||
|
// 空文字の場合はnullに変換する
|
||||||
|
if (value === "") {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
},
|
||||||
complete: (results: ParseResult<CSVType>) => {
|
complete: (results: ParseResult<CSVType>) => {
|
||||||
// ヘッダーがCSVTypeFieldsと一致しない場合はエラーを返す
|
// ヘッダーがCSVTypeFieldsと一致しない場合はエラーを返す
|
||||||
if (!equals(results.meta.fields ?? [], CSVTypeFields)) {
|
if (!equals(results.meta.fields ?? [], CSVTypeFields)) {
|
||||||
|
|||||||
2
dictation_client/src/common/test/test_008.csv
Normal file
2
dictation_client/src/common/test/test_008.csv
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
name,email,role,author_id,auto_renew,notification,encryption,encryption_password,prompt
|
||||||
|
hoge,sample@example.com,1,1111,1,1,1,222222,0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user