131 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| use LaravelFCM\Message\OptionsBuilder;
 | |
| use LaravelFCM\Message\OptionsPriorities;
 | |
| use LaravelFCM\Message\PayloadDataBuilder;
 | |
| use LaravelFCM\Message\PayloadNotificationBuilder;
 | |
| 
 | |
| class PayloadTest extends FCMTestCase
 | |
| {
 | |
|     /**
 | |
|      * @test
 | |
|      */
 | |
|     public function it_construct_a_valid_json_with_option()
 | |
|     {
 | |
|         $targetPartial = '{
 | |
| 					"collapse_key":"collapseKey",
 | |
| 					"content_available":true
 | |
| 				}';
 | |
| 
 | |
|         $targetFull = '{
 | |
| 					"collapse_key":"collapseKey",
 | |
| 					"content_available":true,
 | |
| 					"priority":"high",
 | |
| 					"delay_while_idle":true,
 | |
| 					"time_to_live":200,
 | |
| 					"restricted_package_name":"customPackageName",
 | |
| 					"dry_run": true
 | |
| 				}';
 | |
| 
 | |
|         $optionBuilder = new OptionsBuilder();
 | |
| 
 | |
|         $optionBuilder->setCollapseKey('collapseKey');
 | |
|         $optionBuilder->setContentAvailable(true);
 | |
| 
 | |
|         $json = json_encode($optionBuilder->build()->toArray());
 | |
|         $this->assertJsonStringEqualsJsonString($targetPartial, $json);
 | |
| 
 | |
|         $optionBuilder->setPriority(OptionsPriorities::high)
 | |
|             ->setDelayWhileIdle(true)
 | |
|             ->setDryRun(true)
 | |
|             ->setRestrictedPackageName('customPackageName')
 | |
|             ->setTimeToLive(200);
 | |
| 
 | |
|         $json = json_encode($optionBuilder->build()->toArray());
 | |
|         $this->assertJsonStringEqualsJsonString($targetFull, $json);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @test
 | |
|      */
 | |
|     public function it_construct_a_valid_json_with_data()
 | |
|     {
 | |
|         $targetAdd = '{
 | |
| 				"first_data":"first",
 | |
| 				"second_data":true
 | |
| 			}';
 | |
| 
 | |
|         $targetSet = '
 | |
| 				{
 | |
| 					"third_data":"third",
 | |
| 					"fourth_data":4
 | |
| 				}';
 | |
| 
 | |
|         $dataBuilder = new PayloadDataBuilder();
 | |
| 
 | |
|         $dataBuilder->addData(['first_data' => 'first'])
 | |
|             ->addData(['second_data' => true]);
 | |
| 
 | |
|         $json = json_encode($dataBuilder->build()->toArray());
 | |
|         $this->assertJsonStringEqualsJsonString($targetAdd, $json);
 | |
| 
 | |
|         $dataBuilder->setData(['third_data' => 'third', 'fourth_data' => 4]);
 | |
| 
 | |
|         $json = json_encode($dataBuilder->build()->toArray());
 | |
|         $this->assertJsonStringEqualsJsonString($targetSet, $json);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @test
 | |
|      */
 | |
|     public function it_construct_a_valid_json_with_notification()
 | |
|     {
 | |
|         $targetPartial = '{
 | |
| 					"title":"test_title",
 | |
| 					"body":"test_body",
 | |
| 					"badge":"test_badge",
 | |
| 					"sound":"test_sound"
 | |
| 				}';
 | |
| 
 | |
|         $targetFull = '{
 | |
| 					"title":"test_title",
 | |
| 					"body":"test_body",
 | |
| 					"android_channel_id":"test_channel_id",
 | |
| 					"badge":"test_badge",
 | |
| 					"sound":"test_sound",
 | |
| 					"tag":"test_tag",
 | |
| 					"color":"test_color",
 | |
| 					"click_action":"test_click_action",
 | |
| 					"body_loc_key":"test_body_key",
 | |
| 					"body_loc_args":"[ body0, body1 ]",
 | |
| 					"title_loc_key":"test_title_key",
 | |
| 					"title_loc_args":"[ title0, title1 ]",
 | |
| 					"icon":"test_icon"
 | |
| 				}';
 | |
| 
 | |
|         $notificationBuilder = new PayloadNotificationBuilder();
 | |
| 
 | |
|         $notificationBuilder->setTitle('test_title')
 | |
|                     ->setBody('test_body')
 | |
|                     ->setSound('test_sound')
 | |
|                     ->setBadge('test_badge');
 | |
| 
 | |
|         $json = json_encode($notificationBuilder->build()->toArray());
 | |
|         $this->assertJsonStringEqualsJsonString($targetPartial, $json);
 | |
| 
 | |
|         $notificationBuilder
 | |
|                     ->setChannelId('test_channel_id')
 | |
|                     ->setTag('test_tag')
 | |
|                     ->setColor('test_color')
 | |
|                     ->setClickAction('test_click_action')
 | |
|                     ->setBodyLocationKey('test_body_key')
 | |
|                     ->setBodyLocationArgs('[ body0, body1 ]')
 | |
|                     ->setTitleLocationKey('test_title_key')
 | |
|                     ->setTitleLocationArgs('[ title0, title1 ]')
 | |
|                     ->setIcon('test_icon');
 | |
| 
 | |
|         $json = json_encode($notificationBuilder->build()->toArray());
 | |
|         $this->assertJsonStringEqualsJsonString($targetFull, $json);
 | |
|     }
 | |
| }
 | 
