Skip to content

Commit ad05ee0

Browse files
committed
Add Deprecated Trait that contains all deprecated methods
Add Test for Chaning Buttons (close #60)
1 parent 3be802c commit ad05ee0

File tree

4 files changed

+157
-108
lines changed

4 files changed

+157
-108
lines changed

src/OneSignalMessage.php

+4-45
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,15 @@
33
namespace NotificationChannels\OneSignal;
44

55
use Illuminate\Support\Arr;
6-
use NotificationChannels\OneSignal\Traits\Categories\AppearanceHelpers;
7-
use NotificationChannels\OneSignal\Traits\Categories\AttachmentHelpers;
8-
use NotificationChannels\OneSignal\Traits\Categories\ButtonHelpers;
9-
use NotificationChannels\OneSignal\Traits\Categories\DeliveryHelpers;
10-
use NotificationChannels\OneSignal\Traits\Categories\GroupingHelpers;
6+
use NotificationChannels\OneSignal\Traits\{
7+
Categories\AppearanceHelpers, Categories\AttachmentHelpers, Categories\ButtonHelpers, Categories\DeliveryHelpers, Categories\GroupingHelpers, Deprecated
8+
};
119

1210

1311
class OneSignalMessage
1412
{
1513

16-
use AppearanceHelpers, AttachmentHelpers, ButtonHelpers, DeliveryHelpers, GroupingHelpers;
14+
use AppearanceHelpers, AttachmentHelpers, ButtonHelpers, DeliveryHelpers, GroupingHelpers, Deprecated;
1715

1816
/** @var array */
1917
protected $payload = [];
@@ -36,19 +34,6 @@ public function __construct($body = '')
3634
$this->setBody($body);
3735
}
3836

39-
/**
40-
* Set the message body.
41-
*
42-
* @param mixed $value
43-
*
44-
* @deprecated use setBody instead
45-
*
46-
* @return $this
47-
*/
48-
public function body($value)
49-
{
50-
return $this->setBody($value);
51-
}
5237

5338
/**
5439
* Set the message body.
@@ -62,19 +47,6 @@ public function setBody($value)
6247
return $this->setParameter('contents', $this->parseValueToArray($value));
6348
}
6449

65-
/**
66-
* Set the message subject.
67-
*
68-
* @param mixed $value
69-
*
70-
* @deprecated Use setSubject instead
71-
*
72-
* @return $this
73-
*/
74-
public function subject($value)
75-
{
76-
return $this->setParameter('headings', $this->parseValueToArray($value));
77-
}
7850

7951
/**
8052
* Set the message subject.
@@ -98,19 +70,6 @@ protected function parseValueToArray($value)
9870
return (is_array($value)) ? $value : ['en' => $value];
9971
}
10072

101-
/**
102-
* Set the message url.
103-
*
104-
* @param string $value
105-
*
106-
* @deprecated use setUrl Instead
107-
*
108-
* @return $this
109-
*/
110-
public function url($value)
111-
{
112-
return $this->setUrl($value);
113-
}
11473

11574
/**
11675
* Set additional data.

src/Traits/Categories/ButtonHelpers.php

+11-58
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,6 @@
88
trait ButtonHelpers
99
{
1010

11-
/**
12-
* Add a web button to the message.
13-
*
14-
* @param OneSignalWebButton $button
15-
*
16-
* @deprecated use setWebButton instead
17-
*
18-
* @return $this
19-
*/
20-
public function webButton(OneSignalWebButton $button)
21-
{
22-
return $this->setWebButton($button);
23-
}
24-
25-
/**
26-
* Adds more than one web button to the message.
27-
*
28-
* @param array[OnSignalWebButton] $buttons
29-
*
30-
* @deprecated use setWebButtons instead
31-
*
32-
* @return $this
33-
*/
34-
public function webButtons(array $buttons)
35-
{
36-
return $this->setWebButtons($buttons);
37-
}
3811

3912
/**
4013
* Add a web button to the message.
@@ -57,24 +30,15 @@ public function setWebButton(OneSignalWebButton $button)
5730
*/
5831
public function setWebButtons(array $buttons)
5932
{
60-
return $this->setParameter('web_buttons', collect($buttons)->map(function ($button) {
61-
return $button->toArray();
62-
}));
63-
}
33+
collect($buttons)->map(function ($button) {
34+
$this->setWebButton($button);
35+
});
6436

65-
/**
66-
* Add a native button to the message.
67-
*
68-
* @param OneSignalButton $button
69-
*
70-
* @deprecated use setButton instead
71-
* @return $this
72-
*/
73-
public function button(OneSignalButton $button)
74-
{
75-
return $this->setButton($button);
37+
return $this;
7638
}
7739

40+
41+
7842
/**
7943
* Add a native button to the message.
8044
*
@@ -87,19 +51,6 @@ public function setButton(OneSignalButton $button)
8751
return $this->setParameter('buttons', array_merge($this->getParameter('buttons', []), [$button->toArray()]));
8852
}
8953

90-
/**
91-
* Adds more than one native button to the message.
92-
*
93-
* @param array $buttons
94-
*
95-
* @deprecated use setButtons instead
96-
*
97-
* @return $this
98-
*/
99-
public function buttons(array $buttons)
100-
{
101-
return $this->setButtons($buttons);
102-
}
10354

10455
/**
10556
* Adds more than one native button to the message.
@@ -110,8 +61,10 @@ public function buttons(array $buttons)
11061
*/
11162
public function setButtons(array $buttons)
11263
{
113-
return $this->setParameter('buttons', collect($buttons)->map(function ($button) {
114-
return $button->toArray();
115-
}));
64+
collect($buttons)->map(function ($button) {
65+
$this->setButton($button);
66+
});
67+
68+
return $this;
11669
}
11770
}

src/Traits/Deprecated.php

+113
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
<?php
2+
/**
3+
* Created by PhpStorm.
4+
* User: lukaskammerling
5+
* Date: 15.03.18
6+
* Time: 09:03
7+
*/
8+
9+
namespace NotificationChannels\OneSignal\Traits;
10+
11+
12+
use NotificationChannels\OneSignal\OneSignalButton;
13+
use NotificationChannels\OneSignal\OneSignalWebButton;
14+
15+
trait Deprecated
16+
{
17+
/**
18+
* Set the message body.
19+
*
20+
* @param mixed $value
21+
*
22+
* @deprecated use setBody instead
23+
*
24+
* @return $this
25+
*/
26+
public function body($value)
27+
{
28+
return $this->setBody($value);
29+
}
30+
31+
/**
32+
* Set the message subject.
33+
*
34+
* @param mixed $value
35+
*
36+
* @deprecated Use setSubject instead
37+
*
38+
* @return $this
39+
*/
40+
public function subject($value)
41+
{
42+
return $this->setParameter('headings', $this->parseValueToArray($value));
43+
}
44+
45+
/**
46+
* Set the message url.
47+
*
48+
* @param string $value
49+
*
50+
* @deprecated use setUrl Instead
51+
*
52+
* @return $this
53+
*/
54+
public function url($value)
55+
{
56+
return $this->setUrl($value);
57+
}
58+
59+
/**
60+
* Add a web button to the message.
61+
*
62+
* @param OneSignalWebButton $button
63+
*
64+
* @deprecated use setWebButton instead
65+
*
66+
* @return $this
67+
*/
68+
public function webButton(OneSignalWebButton $button)
69+
{
70+
return $this->setWebButton($button);
71+
}
72+
73+
/**
74+
* Adds more than one web button to the message.
75+
*
76+
* @param array[OnSignalWebButton] $buttons
77+
*
78+
* @deprecated use setWebButtons instead
79+
*
80+
* @return $this
81+
*/
82+
public function webButtons(array $buttons)
83+
{
84+
return $this->setWebButtons($buttons);
85+
}
86+
87+
/**
88+
* Add a native button to the message.
89+
*
90+
* @param OneSignalButton $button
91+
*
92+
* @deprecated use setButton instead
93+
* @return $this
94+
*/
95+
public function button(OneSignalButton $button)
96+
{
97+
return $this->setButton($button);
98+
}
99+
100+
/**
101+
* Adds more than one native button to the message.
102+
*
103+
* @param array $buttons
104+
*
105+
* @deprecated use setButtons instead
106+
*
107+
* @return $this
108+
*/
109+
public function buttons(array $buttons)
110+
{
111+
return $this->setButtons($buttons);
112+
}
113+
}

tests/MessageTest.php

+29-5
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,15 @@ public function it_provides_a_create_method()
3737
/** @test */
3838
public function it_can_set_the_body()
3939
{
40-
$this->message->body('myBody');
40+
$this->message->setBody('myBody');
4141

4242
$this->assertEquals('myBody', Arr::get($this->message->toArray(), 'contents.en'));
4343
}
4444

4545
/** @test */
4646
public function it_can_set_the_subject()
4747
{
48-
$this->message->subject('mySubject');
48+
$this->message->setSubject('mySubject');
4949

5050
$this->assertEquals('mySubject', Arr::get($this->message->toArray(), 'headings.en'));
5151
}
@@ -59,7 +59,7 @@ public function it_does_not_append_empty_subject_value_when_subject_is_null()
5959
/** @test */
6060
public function it_can_set_the_url()
6161
{
62-
$this->message->url('myURL');
62+
$this->message->setUrl('myURL');
6363

6464
$this->assertEquals('myURL', Arr::get($this->message->toArray(), 'url'));
6565
}
@@ -114,7 +114,7 @@ public function it_can_set_additional_parameter()
114114
/** @test */
115115
public function it_can_set_the_icon()
116116
{
117-
$this->message->icon('myIcon');
117+
$this->message->setIcon('myIcon');
118118

119119
$this->assertEquals('myIcon', Arr::get($this->message->toArray(), 'chrome_web_icon'));
120120
$this->assertEquals('myIcon', Arr::get($this->message->toArray(), 'chrome_icon'));
@@ -141,7 +141,7 @@ public function it_can_set_a_web_button()
141141
/** @test */
142142
public function it_can_set_a_button()
143143
{
144-
$this->message->button(
144+
$this->message->setButton(
145145
OneSignalButton::create('buttonID')
146146
->text('buttonText')
147147
->icon('buttonIcon')
@@ -151,6 +151,30 @@ public function it_can_set_a_button()
151151
$this->assertEquals('buttonText', Arr::get($this->message->toArray(), 'buttons.0.text'));
152152
$this->assertEquals('buttonIcon', Arr::get($this->message->toArray(), 'buttons.0.icon'));
153153
}
154+
/** @test */
155+
public function it_can_set_a_web_buttons_with_chain()
156+
{
157+
$this->message->setWebButton(
158+
OneSignalWebButton::create('buttonID_1')
159+
->text('buttonText_1')
160+
->url('buttonURL_1')
161+
->icon('buttonIcon_1')
162+
)->setWebButton(
163+
OneSignalWebButton::create('buttonID_2')
164+
->text('buttonText_2')
165+
->url('buttonURL_2')
166+
->icon('buttonIcon_2')
167+
);
168+
169+
$this->assertEquals('buttonID_1', Arr::get($this->message->toArray(), 'web_buttons.0.id'));
170+
$this->assertEquals('buttonText_1', Arr::get($this->message->toArray(), 'web_buttons.0.text'));
171+
$this->assertEquals('buttonURL_1', Arr::get($this->message->toArray(), 'web_buttons.0.url'));
172+
$this->assertEquals('buttonIcon_1', Arr::get($this->message->toArray(), 'web_buttons.0.icon'));
173+
$this->assertEquals('buttonID_2', Arr::get($this->message->toArray(), 'web_buttons.1.id'));
174+
$this->assertEquals('buttonText_2', Arr::get($this->message->toArray(), 'web_buttons.1.text'));
175+
$this->assertEquals('buttonURL_2', Arr::get($this->message->toArray(), 'web_buttons.1.url'));
176+
$this->assertEquals('buttonIcon_2', Arr::get($this->message->toArray(), 'web_buttons.1.icon'));
177+
}
154178

155179
/** @test */
156180
public function it_can_set_a_image()

0 commit comments

Comments
 (0)