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

チャンネル取得機能のテストの実装 #61

Merged
merged 14 commits into from
Sep 10, 2024
Merged

Conversation

noharu36
Copy link
Collaborator

@noharu36 noharu36 commented Aug 8, 2024

とりあえずテスト書いてみました
要修正

テストの”チャンネルオーナーを取得する”、”チャンネルに参加しているユーザーの一覧を取得する”、”全てのメッセージを取得する”は、User型、Message型を作成した後修正する必要がある。

@noharu36 noharu36 requested a review from eraser5th August 8, 2024 15:31
@noharu36 noharu36 self-assigned this Aug 8, 2024
.gitignore Outdated Show resolved Hide resolved
backend/src/usecase/channel.rs Outdated Show resolved Hide resolved
backend/src/models/channel.rs Outdated Show resolved Hide resolved
.gitignore Outdated Show resolved Hide resolved
.gitignore Outdated Show resolved Hide resolved
backend/src/usecase/channel.rs Outdated Show resolved Hide resolved
.gitignore Outdated Show resolved Hide resolved
backend/src/models/channel.rs Outdated Show resolved Hide resolved
backend/src/usecase/channel.rs Outdated Show resolved Hide resolved
pub id: String,
pub name: String,
// User型を実装したら書き換える
pub owner: String,
Copy link
Contributor

Choose a reason for hiding this comment

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

ownerみたいな別のモデルを参照するやつは多分ComplexObject使うことになるのでいらないはず

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

ComplexObject、詳しく見てないんでわからないんですけど、自分のフィールドを見て新しいフィールドを擬似的に作成してるものじゃないですか?使い方違うような気がする???

impl MyObj {
    async fn c(&self) -> i32 {
        self.a + self.b
    }```

Copy link
Contributor

Choose a reason for hiding this comment

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

ComplexObjectの認識は合ってると思う。

Copy link
Contributor

Choose a reason for hiding this comment

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

色々考えてどっちでもいい感ありそうだなってなっている。

  • ComplexObjectを使わない
    • 常にDBのjoinを使って対象となるownerの情報も取ることになる
    • 実装はシンプルだけどチャンネルの情報だけ欲しい場合には勿体無い
  • ComplexObjectを使う
    • ownerの情報が必要な時だけ計算される
    • おそらくself.idをもとにチャンネルテーブルに再検索をかけるので、必要となった時の計算は増える

Copy link
Contributor

Choose a reason for hiding this comment

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

俺の認識としてはComplexObjectはここのトレードオフのための仕組みだと思ってる。間違っていたらすまん。

Copy link
Contributor

Choose a reason for hiding this comment

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

この程度のものに関してはComplexObjectは使わないで、本当に重い処理(例えば検索付きのフィールドとか)に関してComplexObjectで切り分けるとかになるのかな?

assert_eq!(result, "aaa".to_string())
}

// append_query_resultsに3要素のタプルを渡すための拡張
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

ここを追加することでappend_query_resultsに3要素のタプルを渡すことができる。
書く場所がわからなかったのでとりあえずテストの中に書いてる

Copy link
Contributor

@eraser5th eraser5th left a comment

Choose a reason for hiding this comment

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

よさげ

@noharu36 noharu36 merged commit b0b77af into story/#21 Sep 10, 2024
2 of 3 checks passed
@noharu36 noharu36 deleted the ticket/#31 branch September 10, 2024 14:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants