# frozen_string_literal: true require "swagger_helper" RSpec.describe "notifications" do let(:admin) { Fabricate(:admin) } let!(:notification) { Fabricate(:notification, user: admin) } before do Jobs.run_immediately! sign_in(admin) end path "/notifications.json" do get "Get the notifications that belong to the current user" do tags "Notifications" operationId "getNotifications" produces "application/json" response "200", "notifications" do schema type: :object, properties: { notifications: { type: :array, items: { type: :object, properties: { id: { type: :integer, }, user_id: { type: :integer, }, notification_type: { type: :integer, }, read: { type: :boolean, }, created_at: { type: :string, }, post_number: { type: %i[integer null], }, topic_id: { type: %i[integer null], }, slug: { type: %i[string null], }, data: { type: :object, properties: { badge_id: { type: :integer, }, badge_name: { type: :string, }, badge_slug: { type: :string, }, badge_title: { type: :boolean, }, username: { type: :string, }, }, }, }, }, }, total_rows_notifications: { type: :integer, }, seen_notification_id: { type: :integer, }, load_more_notifications: { type: :string, }, } run_test! end end end path "/notifications/mark-read.json" do put "Mark notifications as read" do tags "Notifications" operationId "markNotificationsAsRead" consumes "application/json" parameter name: :notification, in: :body, schema: { type: :object, properties: { id: { type: :integer, description: "(optional) Leave off to mark all notifications as read", }, }, } produces "application/json" response "200", "notifications marked read" do schema type: :object, properties: { success: { type: :string } } let(:notification) do notification = Fabricate(:notification) NotificationSerializer.new(notification).as_json end run_test! end end end end