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);
|
||||
}
|
||||
});
|
||||
|
||||
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,
|
||||
worker: false, // XXX: workerを使うとエラーが発生するためfalseに設定
|
||||
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>) => {
|
||||
// ヘッダーが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