Add missing policy attribute to WebPushSubscriptionSerializer (#23210)
		
	* Add missing `policy` attribute to `WebPushSubscriptionSerializer` Fixes #23145 * Add tests
This commit is contained in:
		
					parent
					
						
							
								9b795a25cd
							
						
					
				
			
			
				commit
				
					
						448be26b34
					
				
			
		
					 2 changed files with 13 additions and 1 deletions
				
			
		|  | @ -1,7 +1,7 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class REST::WebPushSubscriptionSerializer < ActiveModel::Serializer | ||||
|   attributes :id, :endpoint, :alerts, :server_key | ||||
|   attributes :id, :endpoint, :alerts, :server_key, :policy | ||||
| 
 | ||||
|   def alerts | ||||
|     (object.data&.dig('alerts') || {}).each_with_object({}) { |(k, v), h| h[k] = ActiveModel::Type::Boolean.new.cast(v) } | ||||
|  | @ -10,4 +10,8 @@ class REST::WebPushSubscriptionSerializer < ActiveModel::Serializer | |||
|   def server_key | ||||
|     Rails.configuration.x.vapid_public_key | ||||
|   end | ||||
| 
 | ||||
|   def policy | ||||
|     object.data&.dig('policy') || 'all' | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -61,6 +61,10 @@ describe Api::V1::Push::SubscriptionsController do | |||
|       post :create, params: create_payload | ||||
|       expect(Web::PushSubscription.where(endpoint: create_payload[:subscription][:endpoint]).count).to eq 1 | ||||
|     end | ||||
| 
 | ||||
|     it 'returns the expected JSON' do | ||||
|       expect(body_as_json.with_indifferent_access).to include({ endpoint: create_payload[:subscription][:endpoint], alerts: {}, policy: 'all' }) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'PUT #update' do | ||||
|  | @ -78,6 +82,10 @@ describe Api::V1::Push::SubscriptionsController do | |||
|         expect(push_subscription.data['alerts'][type]).to eq(alerts_payload[:data][:alerts][type.to_sym].to_s) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     it 'returns the expected JSON' do | ||||
|       expect(body_as_json.with_indifferent_access).to include({ endpoint: create_payload[:subscription][:endpoint], alerts: alerts_payload[:data][:alerts], policy: alerts_payload[:data][:policy] }) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   describe 'DELETE #destroy' do | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue