@@ -7,7 +7,6 @@ import app from '../../index';
7
7
import models from '../../models' ;
8
8
import { AccommodationController } from '../../controllers' ;
9
9
10
-
11
10
const accommodationRoute = '/api/v1/accommodations' ;
12
11
13
12
const signinRoute = '/api/v1/users/signin' ;
@@ -419,4 +418,240 @@ describe('Test for Accommodation Endpoints', () => {
419
418
} ) ;
420
419
} ) ;
421
420
} ) ;
421
+
422
+ describe ( 'Like an Accommodation facility' , ( ) => {
423
+ it ( 'should successfully like an existing accommodation' , async ( ) => {
424
+ const user = await request
425
+ . post ( signinRoute )
426
+ . send ( login ) ;
427
+ const token = `Bearer ${ user . body . data . token } ` ;
428
+
429
+ const res = await request
430
+ . post ( `${ accommodationRoute } /2b770fbc-76e6-4b5a-afab-882759fd1f06/like` )
431
+ . set ( 'Authorization' , token ) ;
432
+
433
+ expect ( res ) . to . have . status ( 200 ) ;
434
+ expect ( res . body ) . to . have . property ( 'status' ) ;
435
+ expect ( res . body ) . to . have . property ( 'message' ) ;
436
+ } ) ;
437
+ it ( 'fakes server error when liking an accommodation facility' , async ( ) => {
438
+ const req = {
439
+ params : {
440
+ accommodationId : '2b770fbc-76e6-4b5a-afab-882759fd1f06'
441
+ } ,
442
+ user : {
443
+ userId : 'a4nk945ad'
444
+ }
445
+ } ;
446
+ const res = {
447
+ status : ( ) => { } ,
448
+ json : ( ) => { } ,
449
+ } ;
450
+ sinon . stub ( res , 'status' ) . returnsThis ( ) ;
451
+ sinon . stub ( models . Reaction , 'findOne' ) . throws ( ) ;
452
+
453
+ await AccommodationController . likeAccommodation ( req , res ) ;
454
+ expect ( res . status ) . to . have . been . calledWith ( 500 ) ;
455
+ } ) ;
456
+ it ( 'fakes a successful like of an accommodation' , async ( ) => {
457
+ const req = {
458
+ params : {
459
+ accommodationId : '2b770fbc-76e6-4b5a-afab-882759fd1f06'
460
+ } ,
461
+ user : {
462
+ userId : 'a4nk945ad'
463
+ }
464
+ } ;
465
+ const res = {
466
+ status : ( ) => { } ,
467
+ json : ( ) => { } ,
468
+ } ;
469
+ const result = {
470
+ count : 3
471
+ } ;
472
+ sinon . stub ( res , 'status' ) . returnsThis ( ) ;
473
+ sinon . stub ( models . Reaction , 'findOne' ) . returns ( null ) ;
474
+ sinon . stub ( models . Reaction , 'create' ) . returns ( true ) ;
475
+ sinon . stub ( models . Reaction , 'findAndCountAll' ) . returns ( result ) ;
476
+
477
+ await AccommodationController . likeAccommodation ( req , res ) ;
478
+ expect ( res . status ) . to . have . been . calledWith ( 200 ) ;
479
+ } ) ;
480
+ it ( 'fakes a successful removal of like from accommodation' , async ( ) => {
481
+ const req = {
482
+ params : {
483
+ accommodationId : '2b770fbc-76e6-4b5a-afab-882759fd1f06'
484
+ } ,
485
+ user : {
486
+ userId : 'a4nk945ad'
487
+ }
488
+ } ;
489
+ const res = {
490
+ status : ( ) => { } ,
491
+ json : ( ) => { } ,
492
+ } ;
493
+ const result = {
494
+ reaction : true ,
495
+ userId : 'a4nk945ad' ,
496
+ accommodationId : 'id789ash7sa'
497
+ } ;
498
+ const countResult = {
499
+ count : 3
500
+ } ;
501
+ sinon . stub ( res , 'status' ) . returnsThis ( ) ;
502
+ sinon . stub ( models . Reaction , 'findOne' ) . returns ( result ) ;
503
+ sinon . stub ( models . Reaction , 'destroy' ) . returns ( true ) ;
504
+ sinon . stub ( models . Reaction , 'findAndCountAll' ) . returns ( countResult ) ;
505
+
506
+ await AccommodationController . likeAccommodation ( req , res ) ;
507
+ expect ( res . status ) . to . have . been . calledWith ( 200 ) ;
508
+ } ) ;
509
+ it ( 'fakes a successful liking of accommodation when it was unliked previouly' , async ( ) => {
510
+ const req = {
511
+ params : {
512
+ accommodationId : '2b770fbc-76e6-4b5a-afab-882759fd1f06'
513
+ } ,
514
+ user : {
515
+ userId : 'a4nk945ad'
516
+ }
517
+ } ;
518
+ const res = {
519
+ status : ( ) => { } ,
520
+ json : ( ) => { } ,
521
+ } ;
522
+ const result = {
523
+ reaction : false ,
524
+ userId : 'a4nk945ad' ,
525
+ accommodationId : 'id789ash7sa'
526
+ } ;
527
+ const countResult = {
528
+ count : 3
529
+ } ;
530
+ sinon . stub ( res , 'status' ) . returnsThis ( ) ;
531
+ sinon . stub ( models . Reaction , 'findOne' ) . returns ( result ) ;
532
+ sinon . stub ( models . Reaction , 'update' ) . returns ( true ) ;
533
+ sinon . stub ( models . Reaction , 'findAndCountAll' ) . returns ( countResult ) ;
534
+
535
+ await AccommodationController . likeAccommodation ( req , res ) ;
536
+ expect ( res . status ) . to . have . been . calledWith ( 200 ) ;
537
+ } ) ;
538
+ } ) ;
539
+
540
+ describe ( 'Unlike an Accommodation facility' , ( ) => {
541
+ it ( 'should successfully unlike an existing accommodation' , async ( ) => {
542
+ const user = await request
543
+ . post ( signinRoute )
544
+ . send ( login ) ;
545
+ const token = `Bearer ${ user . body . data . token } ` ;
546
+
547
+ const res = await request
548
+ . post ( `${ accommodationRoute } /2b770fbc-76e6-4b5a-afab-882759fd1f06/unlike` )
549
+ . set ( 'Authorization' , token ) ;
550
+
551
+ expect ( res ) . to . have . status ( 200 ) ;
552
+ expect ( res . body ) . to . have . property ( 'status' ) ;
553
+ expect ( res . body ) . to . have . property ( 'message' ) ;
554
+ } ) ;
555
+ it ( 'fakes server error when unliking an accommodation facility' , async ( ) => {
556
+ const req = {
557
+ params : {
558
+ accommodationId : '2b770fbc-76e6-4b5a-afab-882759fd1f06'
559
+ } ,
560
+ user : {
561
+ userId : 'a4nk945ad'
562
+ }
563
+ } ;
564
+ const res = {
565
+ status : ( ) => { } ,
566
+ json : ( ) => { } ,
567
+ } ;
568
+ sinon . stub ( res , 'status' ) . returnsThis ( ) ;
569
+ sinon . stub ( models . Reaction , 'findOne' ) . throws ( ) ;
570
+
571
+ await AccommodationController . dislikeAccommodation ( req , res ) ;
572
+ expect ( res . status ) . to . have . been . calledWith ( 500 ) ;
573
+ } ) ;
574
+ it ( 'fakes a successful dislike of an accommodation' , async ( ) => {
575
+ const req = {
576
+ params : {
577
+ accommodationId : '2b770fbc-76e6-4b5a-afab-882759fd1f06'
578
+ } ,
579
+ user : {
580
+ userId : 'a4nk945ad'
581
+ }
582
+ } ;
583
+ const res = {
584
+ status : ( ) => { } ,
585
+ json : ( ) => { } ,
586
+ } ;
587
+ const result = {
588
+ count : 3
589
+ } ;
590
+ sinon . stub ( res , 'status' ) . returnsThis ( ) ;
591
+ sinon . stub ( models . Reaction , 'findOne' ) . returns ( null ) ;
592
+ sinon . stub ( models . Reaction , 'create' ) . returns ( true ) ;
593
+ sinon . stub ( models . Reaction , 'findAndCountAll' ) . returns ( result ) ;
594
+
595
+ await AccommodationController . dislikeAccommodation ( req , res ) ;
596
+ expect ( res . status ) . to . have . been . calledWith ( 200 ) ;
597
+ } ) ;
598
+ it ( 'fakes a successful removal of unlike from accommodation' , async ( ) => {
599
+ const req = {
600
+ params : {
601
+ accommodationId : '2b770fbc-76e6-4b5a-afab-882759fd1f06'
602
+ } ,
603
+ user : {
604
+ userId : 'a4nk945ad'
605
+ }
606
+ } ;
607
+ const res = {
608
+ status : ( ) => { } ,
609
+ json : ( ) => { } ,
610
+ } ;
611
+ const result = {
612
+ reaction : false ,
613
+ userId : 'a4nk945ad' ,
614
+ accommodationId : 'id789ash7sa'
615
+ } ;
616
+ const countResult = {
617
+ count : 3
618
+ } ;
619
+ sinon . stub ( res , 'status' ) . returnsThis ( ) ;
620
+ sinon . stub ( models . Reaction , 'findOne' ) . returns ( result ) ;
621
+ sinon . stub ( models . Reaction , 'destroy' ) . returns ( true ) ;
622
+ sinon . stub ( models . Reaction , 'findAndCountAll' ) . returns ( countResult ) ;
623
+
624
+ await AccommodationController . dislikeAccommodation ( req , res ) ;
625
+ expect ( res . status ) . to . have . been . calledWith ( 200 ) ;
626
+ } ) ;
627
+ it ( 'fakes a successful unliking of accommodation when it was liked previouly' , async ( ) => {
628
+ const req = {
629
+ params : {
630
+ accommodationId : '2b770fbc-76e6-4b5a-afab-882759fd1f06'
631
+ } ,
632
+ user : {
633
+ userId : 'a4nk945ad'
634
+ }
635
+ } ;
636
+ const res = {
637
+ status : ( ) => { } ,
638
+ json : ( ) => { } ,
639
+ } ;
640
+ const result = {
641
+ reaction : true ,
642
+ userId : 'a4nk945ad' ,
643
+ accommodationId : 'id789ash7sa'
644
+ } ;
645
+ const countResult = {
646
+ count : 3
647
+ } ;
648
+ sinon . stub ( res , 'status' ) . returnsThis ( ) ;
649
+ sinon . stub ( models . Reaction , 'findOne' ) . returns ( result ) ;
650
+ sinon . stub ( models . Reaction , 'update' ) . returns ( true ) ;
651
+ sinon . stub ( models . Reaction , 'findAndCountAll' ) . returns ( countResult ) ;
652
+
653
+ await AccommodationController . dislikeAccommodation ( req , res ) ;
654
+ expect ( res . status ) . to . have . been . calledWith ( 200 ) ;
655
+ } ) ;
656
+ } ) ;
422
657
} ) ;
0 commit comments