Closed shin-chang closed 8 years ago
指摘ありがとう。修正する! しかし、rspecで値をPOSTする方法がわかんないからテストできずにいる。。
しんちゃん、ありがと!
そう、 【必須】roomステータス管理 #12 のdeleteAPIの代わりに使う。ユーザを削除するのではなく、statusをfalseにするAPIです。 クライアントで、退出したユーザ情報って取得できないの?
curlでテストはやってて、DBのユーザstatusがfalseに更新されるところまでは確認してる。 ただ、組長が書いてくれたので、rspecでもテスト出来るようにしたいと思い。
うん、useridでなく、window idにする必要ある。ブラウザ閉じて退室した時の処理に必要。 詳しくは、 https://github.com/iot-social-network-link/meetalk/wiki/%E5%85%A5%E9%80%80%E5%AE%A4%E6%99%82%E3%81%AE%E4%BB%95%E6%A7%98
クライアントで保持しているデータは
っであってる?
rspecは
bin/rspec
で動くはず。(テスト用のdbとかいるけど) ただ、apiのurlが異なるからそのままだと動かないので修正するわ。
それであってる!
了解!window_idを入力パラメータにしよう。
あと、user.statusはboolean型なので、'false'じゃなくてfalseね。 これだと文字列になってる。
return { result: true } if user.update(:status => 'false')
ごめんテストが書けないけど、window_idを入力パラメータにして、API叩く仕様に変更しました。 あと、user.statusへの値をboolean型に変えました。
APIコマンドはこちらです。 curl -X PUT http://localhost:3000/api/v1/leaving_user -d "window_id=:window_id"
app/models/user.rbもstatusが間違ってるわ。 修正してマージします。
count = User.where(room_id: self.room_id, status: 'true').group(:gender).count
以下のケースでテストを実施、すべてパスしたのでマージしました。
PUT /api/v1/leaving_user, :window_id
userが存在する場合
behaves like check http_status
正しくアクセスできること
behaves like return true
trueを返すこと
user statusがtrueの場合
user statusがfalseに変更されること
roomの人数が変更されること(male: 2->1)
user statusがfalseの場合
user statusが変更されないこと
roomの人数が変更されないこと(male: 1->1)
apiを3回叩いた場合
1回目のみroomの人数が変更されること(male: 2->1)
userが存在しない場合
behaves like check http_status
正しくアクセスできること
behaves like return false
falseを返すこと
APIにPUTする際のコマンドは、 curl -X PUT curl -X PUT http://localhost:3000/api/v1/leaving_user -d "user_id=:user_id" としている