1+ <?php 
2+ 
3+ namespace  UnitTestFiles \Test ;
4+ 
5+ use  Route4Me \Address ;
6+ use  Route4Me \Constants ;
7+ use  Route4Me \Enum \ActivityTypes ;
8+ use  Route4Me \Enum \DeviceType ;
9+ use  Route4Me \OptimizationProblem ;
10+ use  Route4Me \OptimizationProblemParams ;
11+ use  Route4Me \Route4Me ;
12+ use  Route4Me \ActivityParameters ;
13+ use  Route4Me \RouteParameters ;
14+ 
15+ class  ActivityParametersUntTests extends  \PHPUnit \Framework \TestCase
16+ {
17+     public  static  $ route_id  = null ;
18+     public  static  $ problem  = null ;
19+ 
20+     public  static  function  setUpBeforeClass ()
21+     {
22+         Route4Me::setApiKey (Constants::API_KEY );
23+ 
24+         $ addresses  = [];
25+         $ addresses [] = Address::fromArray ([
26+             'address '            => '11497 Columbia Park Dr W, Jacksonville, FL 32258 ' ,
27+             'is_depot '           => true ,
28+             'lat '                => 30.159341812134 ,
29+             'lng '                => -81.538619995117 ,
30+             'time '               => 300 ,
31+             'time_window_start '  => 28800 ,
32+             'time_window_end '    => 32400 ,
33+         ]);
34+ 
35+         $ addresses [] = Address::fromArray ([
36+             'address '            => '214 Edgewater Branch Drive 32259 ' ,
37+             'lat '                => 30.103567123413 ,
38+             'lng '                => -81.595352172852 ,
39+             'time '               => 300 ,
40+             'time_window_start '  => 36000 ,
41+             'time_window_end '    => 37200 ,
42+         ]);
43+ 
44+         $ addresses [] = Address::fromArray ([
45+             'address '            => '756 eagle point dr 32092 ' ,
46+             'lat '                => 30.046422958374 ,
47+             'lng '                => -81.508758544922 ,
48+             'time '               => 300 ,
49+             'time_window_start '  => 39600 ,
50+             'time_window_end '    => 41400 ,
51+         ]);
52+ 
53+         $ addresses [] = Address::fromArray ([
54+             'address '            => '63 Stone Creek Cir St Johns, FL 32259, USA ' ,
55+             'lat '                => 30.048496 ,
56+             'lng '                => -81.558716 ,
57+             'time '               => 300 ,
58+             'time_window_start '  => 43200 ,
59+             'time_window_end '    => 45000 ,
60+         ]);
61+ 
62+         $ parameters  = RouteParameters::fromArray ([
63+             'device_type '            => DeviceType::IPAD ,
64+             'disable_optimization '   => false ,
65+             'route_name '             => 'phpunit test  ' .date ('Y-m-d H:i ' ),
66+         ]);
67+ 
68+         $ optimizationParameters  = new  OptimizationProblemParams ();
69+         $ optimizationParameters ->setAddresses ($ addresses );
70+         $ optimizationParameters ->setParameters ($ parameters );
71+ 
72+         self ::$ problem  = OptimizationProblem::optimize ($ optimizationParameters );
73+         $ routes  = self ::$ problem ->getRoutes ();
74+         self ::$ route_id  = $ routes [0 ]->route_id ;
75+     }
76+ 
77+     public  function  testFromArray ()
78+     {
79+         $ activityParameters  = ActivityParameters::fromArray ([
80+             "activity_id "            => "77BBB5F38723CCCCCCCCCCCCCCCCDD88 " ,
81+             "member_id "              => 444333 ,
82+             "activity_timestamp "     => 1595418362 ,
83+             "activity_type "          => "note-insert " ,
84+             "activity_message "       => "A note was added to address '63 Stone Creek Cir St Johns, FL 32259, USA' from Web Interface " ,
85+             "route_id "               => "38777FFFE274A1F970A3CA8D96F32222 " ,
86+             "route_destination_id "   => 535455583 ,
87+             "note_id "                => 9933366 ,
88+             "note_type "              => "Drop Off Occurred " ,
89+             "note_contents "          => "Test Add Note To Route Address " ,
90+             "route_name "             => "phpunit test 2020-07-22 13:45 " ,
91+             "note_file "              => "file.ext " ,
92+             "destination_name "       => "63 Stone Creek Cir St Johns, FL 32259, USA " ,
93+             "destination_alias "      => "Dest Alias " ,
94+             "member "  => [
95+                 "member_id "          => "444333 " ,
96+                 "member_first_name "  => "Olbay " ,
97+                 "member_last_name "   => "Gustavson " ,
98+                 "member_email "       => 
"[email protected]  "  99+             ]
100+         ]);
101+ 
102+         $ this  ->assertEquals ('77BBB5F38723CCCCCCCCCCCCCCCCDD88 ' , $ activityParameters ->activity_id );
103+ 
104+         $ this  ->assertEquals (444333 , $ activityParameters ->member_id );
105+         $ this  ->assertEquals (1595418362 , $ activityParameters ->activity_timestamp );
106+         $ this  ->assertEquals ('note-insert ' , $ activityParameters ->activity_type );
107+         $ this  ->assertEquals ('A note was added to address  \'63 Stone Creek Cir St Johns, FL 32259, USA \' from Web Interface ' , $ activityParameters ->activity_message );
108+         $ this  ->assertEquals ('38777FFFE274A1F970A3CA8D96F32222 ' , $ activityParameters ->route_id );
109+         $ this  ->assertEquals (535455583 , $ activityParameters ->route_destination_id );
110+         $ this  ->assertEquals (9933366 , $ activityParameters ->note_id );
111+         $ this  ->assertEquals ('Drop Off Occurred ' , $ activityParameters ->note_type );
112+         $ this  ->assertEquals ('Test Add Note To Route Address ' , $ activityParameters ->note_contents );
113+         $ this  ->assertEquals ('phpunit test 2020-07-22 13:45 ' , $ activityParameters ->route_name );
114+         $ this  ->assertEquals ('file.ext ' , $ activityParameters ->note_file );
115+         $ this  ->assertEquals ('63 Stone Creek Cir St Johns, FL 32259, USA ' , $ activityParameters ->destination_name );
116+         $ this  ->assertEquals ('Dest Alias ' , $ activityParameters ->destination_alias );
117+         $ this  ->assertEquals ([
118+             "member_id "          => "444333 " ,
119+             "member_first_name "  => "Olbay " ,
120+             "member_last_name "   => "Gustavson " ,
121+             "member_email "       => 
"[email protected]  "  122+         ], $ activityParameters ->member );
123+     }
124+ 
125+     public  function  testGetActivities ()
126+     {
127+         $ activities  = new  ActivityParameters ();
128+ 
129+         $ activityParameters  = ActivityParameters::fromArray ([
130+             'limit '   => 10 ,
131+             'offset '  => 0 ,
132+         ]);
133+ 
134+         $ result  = $ activities ->getActivities ($ activityParameters );
135+ 
136+         $ this  ->assertNotNull ($ result );
137+         $ this  ->assertNotNull (isset ($ result ['results ' ]));
138+ 
139+         $ firstActivity  = ActivityParameters::fromArray (
140+             $ result ['results ' ][0 ]
141+         );
142+ 
143+         $ this  ->assertContainsOnlyInstancesOf (ActivityParameters::class, [$ firstActivity ]);
144+     }
145+ 
146+     public  function  testSearchActivities ()
147+     {
148+         $ activities  = new  ActivityParameters ();
149+ 
150+         $ activityTypes  = new  ActivityTypes ();
151+ 
152+         foreach  ($ activityTypes ->getConstants () as  $ prop  => $ value ) {
153+             $ activityParameters  = ActivityParameters::fromArray ([
154+                 'activity_type '  => $ value ,
155+                 'limit '          => 2 ,
156+                 'offset '         => 0 ,
157+             ]);
158+ 
159+             $ activities  = new  ActivityParameters ();
160+             $ result  = $ activities ->searchActivities ($ activityParameters );
161+ 
162+             $ this  ->assertNotNull ($ result );
163+             $ this  ->assertNotNull (isset ($ result ['results ' ]));
164+ 
165+             if  (sizeof ($ result ['results ' ])>0 ) {
166+                 $ firstActivity  = ActivityParameters::fromArray (
167+                     $ result ['results ' ][0 ]
168+                 );
169+ 
170+                 $ this  ->assertContainsOnlyInstancesOf (ActivityParameters::class, [$ firstActivity ]);
171+             }
172+         }
173+     }
174+ 
175+     public  function  testSendUserMessage ()
176+     {
177+         $ activities  = new  ActivityParameters ();
178+ 
179+         $ postParameters  = ActivityParameters::fromArray ([
180+             'activity_type '      => 'user_message ' ,
181+             'activity_message '   => 'Hello - php! ' ,
182+             'route_id '           => self ::$ route_id ,
183+         ]);
184+ 
185+         $ result  = $ activities ->sendUserMessage ($ postParameters );
186+ 
187+         $ this  ->assertNotNull ($ result );
188+         $ this  ->assertNotNull (isset ($ result ['status ' ]));
189+         $ this  ->assertTrue (isset ($ result ['status ' ]));
190+     }
191+ 
192+     public  static  function  tearDownAfterClass ()
193+     {
194+         $ optimizationProblemId  = self :: $ problem ->optimization_problem_id ;
195+ 
196+         $ params  = [
197+             'optimization_problem_ids '  => [
198+                 '0 '  => $ optimizationProblemId
199+             ],
200+             'redirect '  => 0 ,
201+         ];
202+ 
203+         $ optimizationProblem  = new  OptimizationProblem ();
204+ 
205+         $ result  = $ optimizationProblem ->removeOptimization ($ params );
206+ 
207+         if  ($ result !=null  && $ result ['status ' ]==true ) {
208+             echo  "The test optimization was removed <br> " ;
209+         } else  {
210+             echo  "Cannot remove the test optimization <br> " ;
211+         }
212+     }
213+ }
0 commit comments