経験は何よりも饒舌

10年後に真価を発揮するかもしれないブログ 

denodrivers/deno_mongo で作った my good first issue

この記事はDeno Advent Calendar 2021の19日目です。

deno_mongo で取り組んだ my good first issue を紹介したいと思います。

README.mdに情報を足す

リンクに飛んだ方がわかりやすいと思ったのでそうしました。
docs: Improve README by wafuwafu13 · Pull Request #294 · denodrivers/mongo · GitHub

フォーマットを統一する

varが使われているなど、VSCode上で警告の出ている箇所がちらほらあったので、CIでdeno lintを走らせるようにしました。
chore: Run `deno lint` in CI by wafuwafu13 · Pull Request #298 · denodrivers/mongo · GitHub

TODOコメントを拾う

TODO: add test casesを拾いました。
test(02_connect): Add `runCommand` test by wafuwafu13 · Pull Request #295 · denodrivers/mongo · GitHub

非推奨のAPIを使わない

非推奨になったassertThrowsAsyncが使われていたので書き換えました。
chore: `assertThrowsAsync` is deprecated by wafuwafu13 · Pull Request #313 · denodrivers/mongo · GitHub

テストの方法を改善

MongoのCURD操作のテストをしているファイルがあるのですが、最初に実行されるテストから最後まで同じコレクションが使われており、テスト間に依存関係がある状態でした。
その状態では、最後の方にあるテストを読もうとしたとき、最初の方のテストで何がinsertされたのかを順に追っていかないといけないので辛いです。
そのため、各テストの実行後のコレクションの中身をコメントで追記するという作業をしました。
chore(test/03_curd): Improve readability by wafuwafu13 · Pull Request #302 · denodrivers/mongo · GitHub
しかし、テストを追加する際にコメントも編集しないといけなくなる、そもそも依存関係をなくした方が良いという議論になりました。
それはそうだと思ったので、各テストの実行後にコレクションの中身を削除する関数を用意し、依存関係のないテストを新たに書きました。
test(03_curd): Write tests that do not depend on each other by wafuwafu13 · Pull Request #311 · denodrivers/mongo · GitHub




機能の追加やバグ修正はしていませんが、それ以外にもできることが結構ある場合があります。
good first issue といえども、コードの全体像を把握した上での good first issue なので、まずは自分なりの my good first issue に取り掛かるのもありかもしれません。