From 3aa4c74323e2736a5c3bff8533283cfb156d2db2 Mon Sep 17 00:00:00 2001 From: kaitokimuraofficial Date: Fri, 14 Nov 2025 16:46:32 +0000 Subject: [PATCH 1/4] Refactor test case for /users/me --- spec/notion/api/endpoints/users_spec.rb | 53 +++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/spec/notion/api/endpoints/users_spec.rb b/spec/notion/api/endpoints/users_spec.rb index aa8ee3d..554e79b 100644 --- a/spec/notion/api/endpoints/users_spec.rb +++ b/spec/notion/api/endpoints/users_spec.rb @@ -4,12 +4,57 @@ RSpec.describe Notion::Api::Endpoints::Users do let(:client) { Notion::Client.new } - context 'users' do - it 'me', vcr: { cassette_name: 'users_me' } do - response = client.me - expect(response.name).to eql 'Notion to Orbit' + # https://developers.notion.com/reference/get-self + describe '#me' do + context "when retrieving the token's bot user (GET /v1/users/me)" do + let(:url) { 'https://api.notion.com/v1/users/me' } + let(:response_json) do + { + "object": 'user', + "id": '16d84278-ab0e-484c-9bdd-b35da3bd8905', + "name": 'pied piper', + "avatar_url": nil, + "type": 'bot', + "bot": { + "owner": { + "type": 'user', + "user": { + "object": 'user', + "id": '5389a034-eb5c-47b5-8a9e-f79c99ef166c', + "name": 'christine makenotion', + "avatar_url": nil, + "type": 'person', + "person": { + "email": 'christine@makenotion.com' + } + } + } + } + }.to_json + end + + before do + stub_request(:get, url) + .to_return( + status: 200, + body: response_json, + headers: { 'Content-Type' => 'application/json' } + ) + end + + it 'returns a bot user object with owner information' do + response = client.me + + expect(response['object']).to eq('user') + expect(response['type']).to eq('bot') + + expect(response).to have_key('bot') + expect(response['bot']).to have_key('owner') + end end + end + context 'users' do it 'lists', vcr: { cassette_name: 'users_list' } do response = client.users_list expect(response.results.size).to be 1 From 324b6dfe1fb999a6e1f2e070f4bdc37bab7606eb Mon Sep 17 00:00:00 2001 From: kaitokimuraofficial Date: Fri, 14 Nov 2025 16:54:00 +0000 Subject: [PATCH 2/4] Refactor test case for /users/{user_id} --- spec/notion/api/endpoints/users_spec.rb | 44 ++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/spec/notion/api/endpoints/users_spec.rb b/spec/notion/api/endpoints/users_spec.rb index 554e79b..1c8f135 100644 --- a/spec/notion/api/endpoints/users_spec.rb +++ b/spec/notion/api/endpoints/users_spec.rb @@ -54,6 +54,45 @@ end end + describe '#user_id' do + context 'when retrieving a specific person user by ID (GET /v1/users/{user_id})' do + let(:user_id) { 'd40e767c-d7af-4b18-a86d-55c61f1e39a4' } + let(:url) { "https://api.notion.com/v1/users/#{user_id}" } + let(:response_json) do + { + "object": 'user', + "id": user_id, + "type": 'person', + "person": { + "email": 'avo@example.org' + }, + "name": 'Avocado Lovelace', + "avatar_url": 'https://secure.notion-static.com/e6a352a8-8381-44d0-a1dc-9ed80e62b53d.jpg' + }.to_json + end + + before do + stub_request(:get, url) + .to_return( + status: 200, + body: response_json, + headers: { 'Content-Type' => 'application/json' } + ) + end + + it 'returns the specific person user object' do + response = client.user(user_id: user_id) + + expect(response['object']).to eq('user') + expect(response['id']).to eq(user_id) + expect(response['type']).to eq('person') + + expect(response['name']).to eq('Avocado Lovelace') + expect(response['person']['email']).to eq('avo@example.org') + end + end + end + context 'users' do it 'lists', vcr: { cassette_name: 'users_list' } do response = client.users_list @@ -67,10 +106,5 @@ end expect(members.size).to eq 1 end - - it 'retrieves', vcr: { cassette_name: 'users' } do - response = client.user(user_id: 'a8da8d30-c858-4c3d-87ad-3f2d477bd98d') - expect(response.name).to eql 'Nicolas Goutay' - end end end \ No newline at end of file From 6f19a71d3438b19927196b90ec7368bac8682bf7 Mon Sep 17 00:00:00 2001 From: kaitokimuraofficial Date: Fri, 14 Nov 2025 17:03:09 +0000 Subject: [PATCH 3/4] Refactor test case for /users --- spec/notion/api/endpoints/users_spec.rb | 52 +++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/spec/notion/api/endpoints/users_spec.rb b/spec/notion/api/endpoints/users_spec.rb index 1c8f135..aed4008 100644 --- a/spec/notion/api/endpoints/users_spec.rb +++ b/spec/notion/api/endpoints/users_spec.rb @@ -93,12 +93,56 @@ end end - context 'users' do - it 'lists', vcr: { cassette_name: 'users_list' } do - response = client.users_list - expect(response.results.size).to be 1 + # https://developers.notion.com/reference/get-users + describe '#users_list' do + context 'when retrieving a paginated list of users (GET /v1/users)' do + let(:url) { 'https://api.notion.com/v1/users' } + let(:response_json) do + { + "object": 'list', + "results": [ + { + "object": 'user', + "id": 'd40e767c-d7af-4b18-a86d-55c61f1e39a4', + "type": 'person', + "person": { "email": 'avo@example.org' }, + "name": 'Avocado Lovelace', + "avatar_url": 'https://secure.notion-static.com/e6a352a8-8381-44d0-a1dc-9ed80e62b53d.jpg' + }, + { + "object": 'user', + "id": '9a3b5ae0-c6e6-482d-b0e1-ed315ee6dc57', + "type": 'bot', + "bot": {}, + "name": 'Doug Engelbot', + "avatar_url": 'https://secure.notion-static.com/6720d746-3402-4171-8ebb-28d15144923c.jpg' + } + ], + "next_cursor": 'fe2cc560-036c-44cd-90e8-294d5a74cebc', + "has_more": true + }.to_json + end + + before do + stub_request(:get, url) + .to_return( + status: 200, + body: response_json, + headers: { 'Content-Type' => 'application/json' } + ) + end + + it 'returns a list object containing multiple user types' do + response = client.users_list + + expect(response['object']).to eq('list') + expect(response['results']).to be_an(Array) + expect(response['results'].size).to eq(2) + end end + end + context 'users' do it 'paginated list', vcr: { cassette_name: 'paginated_users_list' } do members = [] client.users_list(page_size: 1) do |page| From 8558d3f9b37a22480f84ba64fc4331e606657cb2 Mon Sep 17 00:00:00 2001 From: kaitokimuraofficial Date: Fri, 14 Nov 2025 17:03:49 +0000 Subject: [PATCH 4/4] Add URL of test case for /users/{user_id} --- spec/notion/api/endpoints/users_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/notion/api/endpoints/users_spec.rb b/spec/notion/api/endpoints/users_spec.rb index aed4008..8e1fec0 100644 --- a/spec/notion/api/endpoints/users_spec.rb +++ b/spec/notion/api/endpoints/users_spec.rb @@ -54,6 +54,7 @@ end end + # https://developers.notion.com/reference/get-user describe '#user_id' do context 'when retrieving a specific person user by ID (GET /v1/users/{user_id})' do let(:user_id) { 'd40e767c-d7af-4b18-a86d-55c61f1e39a4' }