From e9242d7754681d12847d189dd0104e2da4058e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonne=20Ha=C3=9F?= Date: Mon, 10 Feb 2020 15:39:27 +0100 Subject: [PATCH] API: Fix fetching explicitly not only unread conversations --- app/controllers/api/v1/conversations_controller.rb | 4 +++- app/services/conversation_service.rb | 2 +- spec/integration/api/conversations_controller_spec.rb | 11 ++++++++++- spec/services/conversation_service_spec.rb | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/controllers/api/v1/conversations_controller.rb b/app/controllers/api/v1/conversations_controller.rb index d87f4c0a4..ddda48405 100644 --- a/app/controllers/api/v1/conversations_controller.rb +++ b/app/controllers/api/v1/conversations_controller.rb @@ -5,6 +5,8 @@ module Api class ConversationsController < Api::V1::BaseController include ConversationsHelper + BOOLEAN_TYPE = ActiveModel::Type::Boolean.new + before_action do require_access_token %w[conversations] end @@ -17,7 +19,7 @@ module Api mapped_params = {} mapped_params[:only_after] = params[:only_after] if params.has_key?(:only_after) - mapped_params[:unread] = params[:only_unread] if params.has_key?(:only_unread) + mapped_params[:unread] = BOOLEAN_TYPE.cast(params[:only_unread]) if params.has_key?(:only_unread) conversations_query = conversation_service.all_for_user(mapped_params) conversations_page = pager(conversations_query, "conversations.created_at").response diff --git a/app/services/conversation_service.rb b/app/services/conversation_service.rb index 354d30c39..a688b9d72 100644 --- a/app/services/conversation_service.rb +++ b/app/services/conversation_service.rb @@ -15,7 +15,7 @@ class ConversationService visibility_filter = if filter[:unread] { person_id: @user.person_id, - unread: 0 + unread: 1 } else {person_id: @user.person_id} diff --git a/spec/integration/api/conversations_controller_spec.rb b/spec/integration/api/conversations_controller_spec.rb index 07ecb5f02..414ea8b70 100644 --- a/spec/integration/api/conversations_controller_spec.rb +++ b/spec/integration/api/conversations_controller_spec.rb @@ -173,7 +173,16 @@ describe Api::V1::ConversationsController do params: {only_unread: true, access_token: access_token} ) expect(response.status).to eq(200) - expect(response_body(response).length).to eq(2) + expect(response_body(response).length).to eq(1) + end + + it "returns all the user unread conversations with only_unread explicitly false" do + get( + api_v1_conversations_path, + params: {only_unread: false, access_token: access_token} + ) + expect(response.status).to eq(200) + expect(response_body(response).length).to eq(3) end it "returns all the user conversations after a given date" do diff --git a/spec/services/conversation_service_spec.rb b/spec/services/conversation_service_spec.rb index 2e14b7f8f..75be689db 100644 --- a/spec/services/conversation_service_spec.rb +++ b/spec/services/conversation_service_spec.rb @@ -41,7 +41,7 @@ describe ConversationService do @conversation.conversation_visibilities[0].unread = true @conversation.conversation_visibilities[0].save! conversations = bob_conversation_service.all_for_user(unread: true) - expect(conversations.length).to eq(2) + expect(conversations.length).to eq(1) end it "returns conversation after a given date" do