1 use Test::More tests => 40;
 
   8 use Support::TestSetup;
 
  12 use_ok 'SL::DB::TimeRecording';
 
  14 use SL::Dev::ALL qw(:ALL);
 
  16 Support::TestSetup::login();
 
  19 my ($s1, $e1, $s2, $e2);
 
  22   foreach (qw(TimeRecording Customer)) {
 
  23     "SL::DB::Manager::${_}"->delete_all(all => 1);
 
  25   SL::DB::Manager::Employee->delete_all(where => [ '!login' => 'unittests' ]);
 
  28 ########################################
 
  30 $s1 = DateTime->now_local;
 
  35 @time_recordings = ();
 
  36 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1);
 
  38 ok( $time_recordings[0]->is_time_in_wrong_order, 'same start and end detected' );
 
  39 ok( !$time_recordings[0]->is_time_overlapping, 'not overlapping if only one time recording entry in db' );
 
  42 $time_recordings[0]->end_time(undef);
 
  43 ok( !$time_recordings[0]->is_time_in_wrong_order, 'order ok if no end' );
 
  45 ########################################
 
  46 # ------------s1-----e1-----
 
  47 # --s2---e2-----------------
 
  49 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
  50 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 15, minute => 0);
 
  51 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
  52 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 11, minute => 0);
 
  56 @time_recordings = ();
 
  57 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
  58 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2)->save;
 
  60 ok( !$time_recordings[0]->is_time_overlapping, 'not overlapping: completely before 1' );
 
  61 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: completely before 2' );
 
  64 # -------s1-----e1----------
 
  65 # --s2---e2-----------------
 
  67 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
  68 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 15, minute => 0);
 
  69 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
  70 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
  74 @time_recordings = ();
 
  75 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
  76 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2)->save;
 
  78 ok( !$time_recordings[0]->is_time_overlapping, 'not overlapping: before 1' );
 
  79 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: before 2' );
 
  81 # ---s1-----e1--------------
 
  82 # ---------------s2---e2----
 
  84 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
  85 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
  86 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 13, minute => 0);
 
  87 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
  91 @time_recordings = ();
 
  92 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
  93 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2)->save;
 
  95 ok( !$time_recordings[0]->is_time_overlapping, 'not overlapping: completely after 1' );
 
  96 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: completely after 2' );
 
  98 # ---s1-----e1--------------
 
  99 # ----------s2---e2---------
 
 100 # -> does not overlap
 
 101 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 102 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 103 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 104 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 108 @time_recordings = ();
 
 109 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 110 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2)->save;
 
 112 ok( !$time_recordings[0]->is_time_overlapping, 'not overlapping: after 1' );
 
 113 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: after 2' );
 
 115 # -------s1-----e1----------
 
 116 # ---s2-----e2--------------
 
 118 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 119 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 15, minute => 0);
 
 120 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour =>  9, minute => 0);
 
 121 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 125 @time_recordings = ();
 
 126 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 127 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 129 ok( $time_recordings[1]->is_time_overlapping, 'overlapping: start before, end inbetween' );
 
 131 # -------s1-----e1----------
 
 132 # -----------s2-----e2------
 
 134 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 135 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 15, minute => 0);
 
 136 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 137 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 17, minute => 0);
 
 141 @time_recordings = ();
 
 142 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 143 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 145 ok( $time_recordings[1]->is_time_overlapping, 'overlapping: start inbetween, end after' );
 
 147 # ---s1---------e1----------
 
 148 # ------s2---e2-------------
 
 150 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 151 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 17, minute => 0);
 
 152 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 153 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 15, minute => 0);
 
 157 @time_recordings = ();
 
 158 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 159 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 161 ok( $time_recordings[1]->is_time_overlapping, 'overlapping: completely inbetween' );
 
 164 # ------s1---e1-------------
 
 165 # ---s2---------e2----------
 
 167 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 168 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 169 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 170 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 17, minute => 0);
 
 174 @time_recordings = ();
 
 175 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 176 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 178 ok( $time_recordings[1]->is_time_overlapping, 'overlapping: completely oudside' );
 
 181 # ---s1---e1----------------
 
 182 # ---s2---------e2----------
 
 184 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 185 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 186 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 187 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 17, minute => 0);
 
 191 @time_recordings = ();
 
 192 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 193 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 195 ok( $time_recordings[1]->is_time_overlapping, 'overlapping: same start, end outside' );
 
 197 # ---s1------e1-------------
 
 198 # ------s2---e2-------------
 
 200 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 201 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 202 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 203 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 207 @time_recordings = ();
 
 208 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 209 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 211 ok( $time_recordings[1]->is_time_overlapping, 'overlapping: start after, same end' );
 
 213 # ---s1------e1-------------
 
 214 # ------s2------------------
 
 217 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 218 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 219 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 224 @time_recordings = ();
 
 225 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 226 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 228 ok( $time_recordings[1]->is_time_overlapping, 'overlapping: start inbetween, no end' );
 
 230 # ---s1------e1-------------
 
 231 # ---s2---------------------
 
 234 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 235 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 236 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 241 @time_recordings = ();
 
 242 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 243 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 245 ok( $time_recordings[1]->is_time_overlapping, 'overlapping: same start, no end' );
 
 247 # -------s1------e1---------
 
 248 # ---s2---------------------
 
 250 # -> does not overlap
 
 251 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 252 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 253 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 258 @time_recordings = ();
 
 259 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 260 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 262 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: start before, no end' );
 
 264 # -------s1------e1---------
 
 265 # -------------------s2-----
 
 267 # -> does not overlap
 
 268 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 269 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 270 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 16, minute => 0);
 
 275 @time_recordings = ();
 
 276 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 277 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 279 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: start after, no end' );
 
 281 # -------s1------e1---------
 
 282 # ---------------s2---------
 
 284 # -> does not overlap
 
 286 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 287 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 288 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 293 @time_recordings = ();
 
 294 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 295 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 297 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: same start as other end, no end' );
 
 299 # -------s1------e1---------
 
 300 # -----------e2-------------
 
 303 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 304 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 17, minute => 0);
 
 306 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 310 @time_recordings = ();
 
 311 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 312 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 314 ok( $time_recordings[1]->is_time_overlapping, 'overlapping: no start, end inbetween' );
 
 316 # -------s1------e1---------
 
 317 # ---------------e2---------
 
 320 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 321 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 17, minute => 0);
 
 323 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 17, minute => 0);
 
 327 @time_recordings = ();
 
 328 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 329 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 331 ok( $time_recordings[1]->is_time_overlapping, 'overlapping: no start, same end' );
 
 333 # -------s1------e1---------
 
 334 # --e2----------------------
 
 336 # -> does not overlap
 
 337 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 338 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 17, minute => 0);
 
 340 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 344 @time_recordings = ();
 
 345 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 346 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 348 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: no start, end before' );
 
 350 # -------s1------e1---------
 
 351 # -------------------e2-----
 
 353 # -> does not overlap
 
 354 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 355 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 15, minute => 0);
 
 357 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 17, minute => 0);
 
 361 @time_recordings = ();
 
 362 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 363 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 365 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: no start, end after' );
 
 367 # -------s1------e1---------
 
 368 # -------e2-----------------
 
 370 # -> does not overlap
 
 371 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 372 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 15, minute => 0);
 
 374 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 378 @time_recordings = ();
 
 379 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 380 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 382 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: no start, same end as other start' );
 
 384 # ----s1--------------------
 
 385 # ----s2-----e2-------------
 
 388 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 390 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 391 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 395 @time_recordings = ();
 
 396 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 397 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 399 ok( $time_recordings[1]->is_time_overlapping, 'overlapping: no end in db, same start' );
 
 401 # --------s1----------------
 
 402 # ----s2-----e2-------------
 
 404 # -> does not overlap
 
 405 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 407 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 408 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 412 @time_recordings = ();
 
 413 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 414 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 416 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: no end in db, enclosing' );
 
 418 # ---s1---------------------
 
 419 # ---------s2-----e2--------
 
 421 # -> does not overlap
 
 422 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 424 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 425 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 429 @time_recordings = ();
 
 430 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 431 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 433 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: no end in db, completely after' );
 
 435 # ---------s1---------------
 
 436 # --------------------------
 
 438 # -> does not overlap
 
 439 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 446 @time_recordings = ();
 
 447 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 448 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 450 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: no end in db, no times in object' );
 
 452 # ---------s1---------------
 
 453 # -----s2-------------------
 
 455 # -> does not overlap
 
 456 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 458 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 463 @time_recordings = ();
 
 464 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 465 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 467 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: no end in db, start before, no end in object' );
 
 469 # ---------s1---------------
 
 470 # -------------s2-----------
 
 472 # -> does not overlap
 
 473 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 475 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 480 @time_recordings = ();
 
 481 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 482 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 484 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: no end in db, start after, no end in object' );
 
 486 # ---------s1---------------
 
 487 # ---------s2---------------
 
 490 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 492 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 497 @time_recordings = ();
 
 498 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 499 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 501 ok( $time_recordings[1]->is_time_overlapping, 'overlapping: no end in db, same start' );
 
 503 # ---------s1---------------
 
 504 # ---e2---------------------
 
 506 # -> does not overlap
 
 507 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 510 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 514 @time_recordings = ();
 
 515 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 516 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 518 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: no end in db, no start in object, end before' );
 
 520 # ---------s1---------------
 
 521 # ---------------e2---------
 
 523 # -> does not overlap
 
 524 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 527 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 531 @time_recordings = ();
 
 532 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 533 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 535 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: no end in db, no start in object, end after' );
 
 537 # ---------s1---------------
 
 538 # ---------e2---------------
 
 540 # -> does not overlap
 
 541 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 544 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 12, minute => 0);
 
 548 @time_recordings = ();
 
 549 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 550 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 552 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping: no end in db, no start in object, same end' );
 
 554 ########################################
 
 555 # not overlapping if different staff_member
 
 556 $s1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 10, minute => 0);
 
 557 $e1 = DateTime->new(year => 2020, month => 11, day => 15, hour => 15, minute => 0);
 
 558 $s2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 11, minute => 0);
 
 559 $e2 = DateTime->new(year => 2020, month => 11, day => 15, hour => 14, minute => 0);
 
 563 @time_recordings = ();
 
 564 push @time_recordings, new_time_recording(start_time => $s1, end_time => $e1)->save;
 
 565 push @time_recordings, new_time_recording(start_time => $s2, end_time => $e2);
 
 567 ok( $time_recordings[1]->is_time_overlapping, 'overlapping if same staff member' );
 
 568 $time_recordings[1]->update_attributes(staff_member => SL::DB::Employee->new(
 
 569                                          'login' => 'testuser',
 
 570                                          'name'  => 'Test User',
 
 572 ok( !$time_recordings[1]->is_time_overlapping, 'not overlapping if different staff member' );
 
 579 # set emacs to perl mode