Move timelines API from statuses to its own controller, add a check for
resources that require a user context vs those that don't (such as public timeline) /api/v1/statuses/public -> /api/v1/timelines/public /api/v1/statuses/home -> /api/v1/timelines/home /api/v1/statuses/mentions -> /api/v1/timelines/mentions /api/v1/statuses/tag/:tag -> /api/v1/timelines/tag/:tag
This commit is contained in:
		| @@ -59,38 +59,6 @@ RSpec.describe Api::V1::StatusesController, type: :controller do | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   describe 'GET #home' do | ||||
|     it 'returns http success' do | ||||
|       get :home | ||||
|       expect(response).to have_http_status(:success) | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   describe 'GET #mentions' do | ||||
|     it 'returns http success' do | ||||
|       get :mentions | ||||
|       expect(response).to have_http_status(:success) | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   describe 'GET #public' do | ||||
|     it 'returns http success' do | ||||
|       get :public | ||||
|       expect(response).to have_http_status(:success) | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   describe 'GET #tag' do | ||||
|     before do | ||||
|       post :create, params: { status: 'It is a #test' } | ||||
|     end | ||||
|  | ||||
|     it 'returns http success' do | ||||
|       get :tag, params: { id: 'test' } | ||||
|       expect(response).to have_http_status(:success) | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   describe 'POST #create' do | ||||
|     before do | ||||
|       post :create, params: { status: 'Hello world' } | ||||
|   | ||||
							
								
								
									
										80
									
								
								spec/controllers/api/v1/timelines_controller_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								spec/controllers/api/v1/timelines_controller_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| require 'rails_helper' | ||||
|  | ||||
| RSpec.describe Api::V1::TimelinesController, type: :controller do | ||||
|   render_views | ||||
|  | ||||
|   let(:user)  { Fabricate(:user, account: Fabricate(:account, username: 'alice')) } | ||||
|  | ||||
|   before do | ||||
|     stub_request(:post, "https://pubsubhubbub.superfeedr.com/").to_return(:status => 200, :body => "", :headers => {}) | ||||
|     allow(controller).to receive(:doorkeeper_token) { token } | ||||
|   end | ||||
|  | ||||
|   context 'with a user context' do | ||||
|     let(:token) { double acceptable?: true, resource_owner_id: user.id } | ||||
|  | ||||
|     describe 'GET #home' do | ||||
|       it 'returns http success' do | ||||
|         get :home | ||||
|         expect(response).to have_http_status(:success) | ||||
|       end | ||||
|     end | ||||
|  | ||||
|     describe 'GET #mentions' do | ||||
|       it 'returns http success' do | ||||
|         get :mentions | ||||
|         expect(response).to have_http_status(:success) | ||||
|       end | ||||
|     end | ||||
|  | ||||
|     describe 'GET #public' do | ||||
|       it 'returns http success' do | ||||
|         get :public | ||||
|         expect(response).to have_http_status(:success) | ||||
|       end | ||||
|     end | ||||
|  | ||||
|     describe 'GET #tag' do | ||||
|       before do | ||||
|         PostStatusService.new.call(user.account, 'It is a #test') | ||||
|       end | ||||
|  | ||||
|       it 'returns http success' do | ||||
|         get :tag, params: { id: 'test' } | ||||
|         expect(response).to have_http_status(:success) | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   context 'without a user context' do | ||||
|     let(:token) { double acceptable?: true, resource_owner_id: nil } | ||||
|  | ||||
|     describe 'GET #home' do | ||||
|       it 'returns http unprocessable entity' do | ||||
|         get :home | ||||
|         expect(response).to have_http_status(:unprocessable_entity) | ||||
|       end | ||||
|     end | ||||
|  | ||||
|     describe 'GET #mentions' do | ||||
|       it 'returns http unprocessable entity' do | ||||
|         get :mentions | ||||
|         expect(response).to have_http_status(:unprocessable_entity) | ||||
|       end | ||||
|     end | ||||
|  | ||||
|     describe 'GET #public' do | ||||
|       it 'returns http success' do | ||||
|         get :public | ||||
|         expect(response).to have_http_status(:success) | ||||
|       end | ||||
|     end | ||||
|  | ||||
|     describe 'GET #tag' do | ||||
|       it 'returns http success' do | ||||
|         get :tag, params: { id: 'test' } | ||||
|         expect(response).to have_http_status(:success) | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
		Reference in New Issue
	
	Block a user