Add announcements (#12662)
* Add announcements Fix #11006 * Add reactions to announcements * Add admin UI for announcements * Add unit tests * Fix issues - Add `with_dismissed` param to announcements API - Fix end date not being formatted when time range is given - Fix announcement delete causing reactions to send streaming updates - Fix announcements container growing too wide and mascot too small - Fix `all_day` being settable when no time range is given - Change text "Update" to "Announcement" * Fix scheduler unpublishing announcements before they are due * Fix filter params not being passed to announcements filter
This commit is contained in:
		
					parent
					
						
							
								81cc86bb1f
							
						
					
				
			
			
				commit
				
					
						f52c988e12
					
				
			
		
					 65 changed files with 1779 additions and 22 deletions
				
			
		
							
								
								
									
										59
									
								
								spec/controllers/api/v1/announcements_controller_spec.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								spec/controllers/api/v1/announcements_controller_spec.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,59 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| require 'rails_helper' | ||||
| 
 | ||||
| RSpec.describe Api::V1::AnnouncementsController, type: :controller do | ||||
|   render_views | ||||
| 
 | ||||
|   let(:user)   { Fabricate(:user) } | ||||
|   let(:scopes) { 'read' } | ||||
|   let(:token)  { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) } | ||||
| 
 | ||||
|   let!(:announcement) { Fabricate(:announcement) } | ||||
| 
 | ||||
|   describe 'GET #index' do | ||||
|     context 'without token' do | ||||
|       it 'returns http unprocessable entity' do | ||||
|         get :index | ||||
|         expect(response).to have_http_status :unprocessable_entity | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with token' do | ||||
|       before do | ||||
|         allow(controller).to receive(:doorkeeper_token) { token } | ||||
|         get :index | ||||
|       end | ||||
| 
 | ||||
|       it 'returns http success' do | ||||
|         expect(response).to have_http_status(200) | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'POST #dismiss' do | ||||
|     context 'without token' do | ||||
|       it 'returns http unauthorized' do | ||||
|         post :dismiss, params: { id: announcement.id } | ||||
|         expect(response).to have_http_status :unauthorized | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with token' do | ||||
|       let(:scopes) { 'write:accounts' } | ||||
| 
 | ||||
|       before do | ||||
|         allow(controller).to receive(:doorkeeper_token) { token } | ||||
|         post :dismiss, params: { id: announcement.id } | ||||
|       end | ||||
| 
 | ||||
|       it 'returns http success' do | ||||
|         expect(response).to have_http_status(200) | ||||
|       end | ||||
| 
 | ||||
|       it 'dismisses announcement' do | ||||
|         expect(announcement.announcement_mutes.find_by(account: user.account)).to_not be_nil | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue