iot-social-network-link / meetalk

1 stars 0 forks source link

ユーザ退出時に、退出ユーザのステータスを無効化するAPIの実装 #12 #81

Closed shin-chang closed 8 years ago

shin-chang commented 8 years ago

APIにPUTする際のコマンドは、 curl -X PUT curl -X PUT http://localhost:3000/api/v1/leaving_user -d "user_id=:user_id" としている

xkumiyu commented 8 years ago
shin-chang commented 8 years ago

指摘ありがとう。修正する! しかし、rspecで値をPOSTする方法がわかんないからテストできずにいる。。

matsu0228 commented 8 years ago

しんちゃん、ありがと!

shin-chang commented 8 years ago

そう、 【必須】roomステータス管理 #12 のdeleteAPIの代わりに使う。ユーザを削除するのではなく、statusをfalseにするAPIです。 クライアントで、退出したユーザ情報って取得できないの?

curlでテストはやってて、DBのユーザstatusがfalseに更新されるところまでは確認してる。 ただ、組長が書いてくれたので、rspecでもテスト出来るようにしたいと思い。

matsu0228 commented 8 years ago

うん、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

xkumiyu commented 8 years ago

クライアントで保持しているデータは

っであってる?

rspecは

bin/rspec

で動くはず。(テスト用のdbとかいるけど) ただ、apiのurlが異なるからそのままだと動かないので修正するわ。

matsu0228 commented 8 years ago

それであってる!

xkumiyu commented 8 years ago

了解!window_idを入力パラメータにしよう。

あと、user.statusはboolean型なので、'false'じゃなくてfalseね。 これだと文字列になってる。

        return { result: true } if user.update(:status => 'false')
shin-chang commented 8 years ago

ごめんテストが書けないけど、window_idを入力パラメータにして、API叩く仕様に変更しました。 あと、user.statusへの値をboolean型に変えました。

APIコマンドはこちらです。 curl -X PUT http://localhost:3000/api/v1/leaving_user -d "window_id=:window_id"

xkumiyu commented 8 years ago

app/models/user.rbもstatusが間違ってるわ。 修正してマージします。

count = User.where(room_id: self.room_id, status: 'true').group(:gender).count
xkumiyu commented 8 years ago

以下のケースでテストを実施、すべてパスしたのでマージしました。

  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を返すこと