Selaa lähdekoodia

test pour event nouveau comment sur element followed.

bastien 13 vuotta sitten
vanhempi
commit
253dcea6e4
1 muutettua tiedostoa jossa 357 lisäystä ja 0 poistoa
  1. 357 0
      src/Muzich/CoreBundle/Tests/Controller/EventTest.php

+ 357 - 0
src/Muzich/CoreBundle/Tests/Controller/EventTest.php Näytä tiedosto

@@ -4,6 +4,7 @@ namespace Muzich\CoreBundle\Tests\Controller;
4 4
 
5 5
 use Muzich\CoreBundle\lib\FunctionalTest;
6 6
 use Muzich\CoreBundle\Entity\Event;
7
+use Muzich\CoreBundle\Managers\CommentsManager;
7 8
 
8 9
 class EventTest extends FunctionalTest
9 10
 {
@@ -299,4 +300,360 @@ class EventTest extends FunctionalTest
299 300
     // donc a coder (tests) mais pas urgent a l'isntant.
300 301
   }
301 302
   
303
+  /**
304
+   * Ce test teste le déclenchement d'événement qui s'effctue lorsque un 
305
+   * nouveau commentaire est écrit sur un élément que l'on a choisis de "suivre"
306
+   * 
307
+   */
308
+  public function testNewCommentEventOnOtherElement()
309
+  {
310
+    $this->client = self::createClient();
311
+    $this->connectUser('paul', 'toor');
312
+    
313
+    $paul = $this->getUser();
314
+    
315
+    // Actuellement il n'y a aucun event d'ouvert pour paul (fixtures)
316
+    $result = $this->getDoctrine()->getEntityManager()
317
+      ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
318
+        WHERE e.user = :uid'
319
+      )
320
+      ->setParameter('uid', $paul->getId())
321
+      ->getArrayResult()
322
+    ;
323
+    $this->assertEquals(count($result), 0);
324
+    
325
+    $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
326
+      ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
327
+    ;
328
+    
329
+    // paul écrit un commentaire sur un des elements a bux
330
+    $this->crawler = $this->client->request(
331
+      'POST', 
332
+      $this->generateUrl('ajax_add_comment', array(
333
+        'element_id' => $element->getId(),
334
+        'token'      => $paul->getPersonalHash()
335
+      )), 
336
+      array(
337
+          'comment' => "Je choisis en commentant de suivre l'élément",
338
+          'follow'  => true
339
+      ), 
340
+      array(), 
341
+      array('HTTP_X-Requested-With' => 'XMLHttpRequest')
342
+    );
343
+    
344
+    $this->isResponseSuccess();
345
+    
346
+    $response = json_decode($this->client->getResponse()->getContent(), true);
347
+    $this->assertEquals($response['status'], 'success');
348
+    
349
+    // On vérifie que paul fait bien partis des suiveurs
350
+    $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
351
+      ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
352
+    ;
353
+    
354
+    $cm = new CommentsManager($element->getComments());
355
+    $this->assertTrue($cm->userFollow($paul->getId()));
356
+        
357
+    // joelle va egallement suivre cet élément
358
+    $this->disconnectUser();
359
+    
360
+    $this->connectUser('joelle', 'toor');
361
+    
362
+    $joelle = $this->getUser();
363
+    
364
+    // Actuellement il n'y a aucun event d'ouvert pour joelle (fixtures)
365
+    $result = $this->getDoctrine()->getEntityManager()
366
+      ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
367
+        WHERE e.user = :uid'
368
+      )
369
+      ->setParameter('uid', $joelle->getId())
370
+      ->getArrayResult()
371
+    ;
372
+    $this->assertEquals(count($result), 0);
373
+    
374
+    $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
375
+      ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
376
+    ;
377
+    
378
+    // joelle écrit un commentaire sur un des elements a bux
379
+    $this->crawler = $this->client->request(
380
+      'POST', 
381
+      $this->generateUrl('ajax_add_comment', array(
382
+        'element_id' => $element->getId(),
383
+        'token'      => $joelle->getPersonalHash()
384
+      )), 
385
+      array(
386
+          'comment' => "Je choisis en commentant de suivre l'élément (joelle)",
387
+          'follow'  => true
388
+      ), 
389
+      array(), 
390
+      array('HTTP_X-Requested-With' => 'XMLHttpRequest')
391
+    );
392
+    
393
+    $this->isResponseSuccess();
394
+    
395
+    $response = json_decode($this->client->getResponse()->getContent(), true);
396
+    $this->assertEquals($response['status'], 'success');
397
+    
398
+    // On vérifie que jioelle fait bien partis des suiveurs
399
+    $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
400
+      ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
401
+    ;
402
+    
403
+    $cm = new CommentsManager($element->getComments());
404
+    $this->assertTrue($cm->userFollow($joelle->getId()));
405
+    
406
+    // bux va aller commenter son élément
407
+    $this->disconnectUser();
408
+    
409
+    $this->connectUser('bux', 'toor');
410
+    
411
+    $bux = $this->getUser();
412
+    
413
+    // Actuellement il n'y a aucun event d'ouvert pour bux (fixtures)
414
+    $result = $this->getDoctrine()->getEntityManager()
415
+      ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
416
+        WHERE e.user = :uid'
417
+      )
418
+      ->setParameter('uid', $joelle->getId())
419
+      ->getArrayResult()
420
+    ;
421
+    $this->assertEquals(count($result), 0);
422
+    
423
+    $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
424
+      ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
425
+    ;
426
+    
427
+    // bux écrit un commentaire sur un des elements a bux
428
+    $this->crawler = $this->client->request(
429
+      'POST', 
430
+      $this->generateUrl('ajax_add_comment', array(
431
+        'element_id' => $element->getId(),
432
+        'token'      => $bux->getPersonalHash()
433
+      )), 
434
+      array(
435
+          'comment' => "Voila le com qui declenche les événemetns chez paul et joelle"
436
+      ), 
437
+      array(), 
438
+      array('HTTP_X-Requested-With' => 'XMLHttpRequest')
439
+    );
440
+    
441
+    $this->isResponseSuccess();
442
+    
443
+    $response = json_decode($this->client->getResponse()->getContent(), true);
444
+    $this->assertEquals($response['status'], 'success');
445
+    
446
+    // Paul et Joelle on maintenant des events
447
+    $result = $this->getDoctrine()->getEntityManager()
448
+      ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
449
+        WHERE e.user = :uid AND e.type = :type'
450
+      )
451
+      ->setParameters(array(
452
+        'uid' => $paul->getId(),
453
+        'type' => Event::TYPE_COMMENT_ADDED_ELEMENT
454
+      ))
455
+      ->getArrayResult()
456
+    ;
457
+    $this->assertEquals(count($result), 1);
458
+    $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
459
+    // 
460
+    $this->assertEquals($result[0]['count'], 1);
461
+    $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
462
+    
463
+    $result = $this->getDoctrine()->getEntityManager()
464
+      ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
465
+        WHERE e.user = :uid AND e.type = :type'
466
+      )
467
+      ->setParameters(array(
468
+        'uid' => $joelle->getId(),
469
+        'type' => Event::TYPE_COMMENT_ADDED_ELEMENT
470
+      ))
471
+      ->getArrayResult()
472
+    ;
473
+    $this->assertEquals(count($result), 1);
474
+    $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
475
+    // 
476
+    $this->assertEquals($result[0]['count'], 1);
477
+    $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
478
+    
479
+    // bux va envoyer un deuxième commentaire
480
+    $this->crawler = $this->client->request(
481
+      'POST', 
482
+      $this->generateUrl('ajax_add_comment', array(
483
+        'element_id' => $element->getId(),
484
+        'token'      => $bux->getPersonalHash()
485
+      )), 
486
+      array(
487
+          'comment' => "un nouveau com"
488
+      ), 
489
+      array(), 
490
+      array('HTTP_X-Requested-With' => 'XMLHttpRequest')
491
+    );
492
+    
493
+    $this->isResponseSuccess();
494
+    
495
+    $response = json_decode($this->client->getResponse()->getContent(), true);
496
+    $this->assertEquals($response['status'], 'success');
497
+    
498
+    // Pas de mouvement coté événements
499
+    $result_paul = $this->getDoctrine()->getEntityManager()
500
+      ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
501
+        WHERE e.user = :uid AND e.type = :type'
502
+      )
503
+      ->setParameters(array(
504
+        'uid' => $paul->getId(),
505
+        'type' => Event::TYPE_COMMENT_ADDED_ELEMENT
506
+      ))
507
+      ->getArrayResult()
508
+    ;
509
+    $this->assertEquals(count($result), 1);
510
+    $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
511
+    // 
512
+    $this->assertEquals($result[0]['count'], 1);
513
+    $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
514
+    
515
+    $result_jo = $this->getDoctrine()->getEntityManager()
516
+      ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
517
+        WHERE e.user = :uid AND e.type = :type'
518
+      )
519
+      ->setParameters(array(
520
+        'uid' => $joelle->getId(),
521
+        'type' => Event::TYPE_COMMENT_ADDED_ELEMENT
522
+      ))
523
+      ->getArrayResult()
524
+    ;
525
+    $this->assertEquals(count($result), 1);
526
+    $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
527
+    // 
528
+    $this->assertEquals($result[0]['count'], 1);
529
+    $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
530
+    
531
+    // Paul va aller consulter son event
532
+    $this->disconnectUser();
533
+    $this->connectUser('paul', 'toor');
534
+    
535
+    $url = $this->generateUrl('event_view_elements', array('event_id' => $result_paul[0]['id']));
536
+    // il le consulte
537
+    $this->crawler = $this->client->request('GET', $url);
538
+    $this->isResponseRedirection();
539
+    $this->followRedirection();
540
+    $this->isResponseSuccess();
541
+        
542
+    // L'objet Event ne doit plus être en base maintenant qu'il a été vu
543
+    $result = $this->getDoctrine()->getEntityManager()
544
+      ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
545
+        WHERE e.user = :uid'
546
+      )
547
+      ->setParameter('uid', $paul->getId())
548
+      ->getArrayResult()
549
+    ;
550
+    $this->assertEquals(count($result), 0);
551
+    
552
+    // paul désactive le fait qu'il veut être avertis
553
+    $this->crawler = $this->client->request(
554
+      'POST', 
555
+      $this->generateUrl('ajax_add_comment', array(
556
+        'element_id' => $element->getId(),
557
+        'token'      => $paul->getPersonalHash()
558
+      )), 
559
+      array(
560
+          'comment' => "ze veux plus",
561
+          'follow'  => false
562
+      ), 
563
+      array(), 
564
+      array('HTTP_X-Requested-With' => 'XMLHttpRequest')
565
+    );
566
+    
567
+    $this->isResponseSuccess();
568
+    
569
+    $response = json_decode($this->client->getResponse()->getContent(), true);
570
+    $this->assertEquals($response['status'], 'success');
571
+    
572
+    // On vérifie que paul fait bien partis des suiveurs
573
+    $element = $this->getDoctrine()->getRepository('MuzichCoreBundle:Element')
574
+      ->findOneByName('Ed Cox - La fanfare des teuffeurs (Hardcordian)')
575
+    ;
576
+    
577
+    $cm = new CommentsManager($element->getComments());
578
+    $this->assertFalse($cm->userFollow($paul->getId()));
579
+    
580
+    // au tour de joelle de consulter son event
581
+    $this->disconnectUser();
582
+    $this->connectUser('joelle', 'toor');
583
+    
584
+    $url = $this->generateUrl('event_view_elements', array('event_id' => $result_jo[0]['id']));
585
+    // il le consulte
586
+    $this->crawler = $this->client->request('GET', $url);
587
+    $this->isResponseRedirection();
588
+    $this->followRedirection();
589
+    $this->isResponseSuccess();
590
+        
591
+    // L'objet Event ne doit plus être en base maintenant qu'il a été vu
592
+    $result = $this->getDoctrine()->getEntityManager()
593
+      ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
594
+        WHERE e.user = :uid'
595
+      )
596
+      ->setParameter('uid', $joelle->getId())
597
+      ->getArrayResult()
598
+    ;
599
+    $this->assertEquals(count($result), 0);
600
+    
601
+    // joelle garde son follow sur cet élément
602
+    
603
+    // bux va de nouveau metre un commentaire
604
+    $this->disconnectUser();
605
+    
606
+    $this->connectUser('bux', 'toor');
607
+    
608
+    $bux = $this->getUser();
609
+            
610
+    // bux écrit un commentaire sur un des elements a bux
611
+    $this->crawler = $this->client->request(
612
+      'POST', 
613
+      $this->generateUrl('ajax_add_comment', array(
614
+        'element_id' => $element->getId(),
615
+        'token'      => $bux->getPersonalHash()
616
+      )), 
617
+      array(
618
+          'comment' => "ce com va declencher un event chez joelle mais pas chez paul"
619
+      ), 
620
+      array(), 
621
+      array('HTTP_X-Requested-With' => 'XMLHttpRequest')
622
+    );
623
+    
624
+    $this->isResponseSuccess();
625
+    
626
+    $response = json_decode($this->client->getResponse()->getContent(), true);
627
+    $this->assertEquals($response['status'], 'success');
628
+    
629
+    // Paul et Joelle on maintenant des events
630
+    $result = $this->getDoctrine()->getEntityManager()
631
+      ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
632
+        WHERE e.user = :uid AND e.type = :type'
633
+      )
634
+      ->setParameters(array(
635
+        'uid' => $paul->getId(),
636
+        'type' => Event::TYPE_COMMENT_ADDED_ELEMENT
637
+      ))
638
+      ->getArrayResult()
639
+    ;
640
+    $this->assertEquals(count($result), 0);
641
+    
642
+    $result = $this->getDoctrine()->getEntityManager()
643
+      ->createQuery('SELECT e FROM MuzichCoreBundle:Event e
644
+        WHERE e.user = :uid AND e.type = :type'
645
+      )
646
+      ->setParameters(array(
647
+        'uid' => $joelle->getId(),
648
+        'type' => Event::TYPE_COMMENT_ADDED_ELEMENT
649
+      ))
650
+      ->getArrayResult()
651
+    ;
652
+    $this->assertEquals(count($result), 1);
653
+    $this->assertEquals($result[0]['type'], Event::TYPE_COMMENT_ADDED_ELEMENT);
654
+    // 
655
+    $this->assertEquals($result[0]['count'], 1);
656
+    $this->assertEquals($result[0]['ids'], json_encode(array((string)$element->getId())));
657
+  }
658
+  
302 659
 }