shuba_ivan

testnotifications

Sep 6th, 2016
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.50 KB | None | 0 0
  1.  
  2.     /**
  3.      * @group test
  4.      */
  5.     public function testAllFilterAndCretedNotificationAction()
  6.     {
  7.         $this->loadFixtures([
  8.             [Entity\Project::class, 1],
  9.             [Entity\Users::class, 7],
  10.             [Entity\Developer::class, 4],
  11.             [Entity\Skill::class, 6],
  12.             [Entity\Teams::class, 2]
  13.         ]);
  14.  
  15.         $users = $this->getEntityManager()->getRepository(Entity\Users::class)->findAll();
  16.         $this->user = $users[0];
  17.         $this->user->setRoles([Entity\Users::ROLE_ADMIN]);
  18.  
  19.         /** @var Entity\Project[] $projects */
  20.         $projects = $this->projectRepository->findAll();
  21.         $this->assertCount(1, $projects);
  22.         $project = $projects[0];
  23.  
  24.         /** @var Entity\Users[] $users */
  25.         $users = $this->usersRepository->findAll();
  26.         $this->assertCount(7, $users);
  27.  
  28.         /** @var Entity\Developer[] $developers */
  29.         $developers = $this->developerRepository->findAll();
  30.         $this->assertCount(4, $developers);
  31.  
  32.         /** @var Entity\Skill[] $skills */
  33.         $skills = $this->skillRepository->findAll();
  34.         $this->assertCount(6, $skills);
  35.  
  36.         /** @var Entity\Teams[] $teams */
  37.         $teams = $this->teamRepository->findAll();
  38.         $this->assertCount(2, $teams);
  39.  
  40.         /** @var Entity\CodeProjectNotifications[] $notifications */
  41.         $notifications = $this->notificationRepository->findAll();
  42.         $this->assertCount(0, $notifications);
  43.  
  44.         $requestArraySkillIds1 = [];
  45.         $requestArraySkillIds2 = [];
  46.         $setArraySkills1 = [];
  47.         $setArraySkills2 = [];
  48.         foreach ($skills as $key=>$skill) {
  49.             if ($key%2 == 0) {
  50.                 $requestArraySkillIds1 [] = $skill->getId();
  51.                 $setArraySkills1 [] = $skill;
  52.             } else {
  53.                 $requestArraySkillIds2 [] = $skill->getId();
  54.                 $setArraySkills2 [] = $skill;
  55.             }
  56.         }
  57.  
  58.         $user1 = $users[1]->setDeveloper($developers[0]);
  59.         $developer1 = $developers[0]->setUser($users[1]);
  60.         $user1->setRoles([Entity\Users::ROLE_FREELANCER]);
  61.         $developer1->setSkillRelations($setArraySkills1);
  62.  
  63.         $manager1 = $users[2]->setTeams($teams[0]);
  64.         $teams[0]->addUser($users[2]);
  65.         $manager1->setRoles([Entity\Users::ROLE_COMPANY]);
  66.  
  67.         $user2 = $users[3]->setDeveloper($developers[1]);
  68.         $developer2 = $developers[1]->setUser($users[3]);
  69.         $user2->setRoles([Entity\Users::ROLE_DEVELOPER]);
  70.         $developer2->setSkillRelations($setArraySkills2);
  71.  
  72.         $teams[0]->addDeveloper($developer2);
  73.         $developer2->setTeams($teams[0]);
  74.  
  75.         $manager2 = $users[4]->setTeams($teams[1]);
  76.         $teams[1]->addUser($users[4]);
  77.         $manager2->setRoles([Entity\Users::ROLE_COMPANY]);
  78.  
  79.         $user3 = $users[5]->setDeveloper($developers[2]);
  80.         $developer3 = $developers[2]->setUser($users[5]);
  81.         $user3->setRoles([Entity\Users::ROLE_DEVELOPER]);
  82.         $developer3->setSkillRelations($setArraySkills2);
  83.  
  84.         $teams[1]->addDeveloper($developer3);
  85.         $developer3->setTeams($teams[1]);
  86.  
  87.         $user4 = $users[6]->setDeveloper($developers[3]);
  88.         $developer4 = $developers[3]->setUser($users[6]);
  89.         $user4->setRoles([Entity\Users::ROLE_FREELANCER]);
  90.         $developer4->setSkillRelations($setArraySkills2);
  91.  
  92.         $this->getEntityManager()->persist($this->user);
  93.         $this->getEntityManager()->flush();
  94.         $this->getEntityManager()->clear();
  95.         $expected['array_id_manager'][] = $manager1->getId();
  96.         $expected['array_id_manager'][] = $manager2->getId();
  97.         $expected['array_id_developer'][] = $user4->getId();
  98.  
  99.         $this->request(
  100.             'post',
  101.             $this->generateUrl('post_notifications_array_id_entity', [], UrlGeneratorInterface::RELATIVE_PATH),
  102.             [],
  103.             [
  104.                 'api_user_id' => $this->user->getId(),
  105.                 'api_user_token' => $this->user->getSecurityToken(),
  106.                 'skills' => $requestArraySkillIds2,
  107.                 'project_id' => $project->getId()
  108.             ]
  109.         );
  110.  
  111.         $this->assertEquals(200, $this->getResponseStatus());
  112.         $data = json_decode($this->getResponseContent(), true);
  113.         $this->validateResponseData($expected, $data, 'array_id_manager');
  114.         $this->validateResponseData($expected, $data, 'array_id_developer');
  115.  
  116.         $expectedDevelopers = [$user4];
  117.         $path = $this->generateUrl('post_notifications_developer', [], UrlGeneratorInterface::ABSOLUTE_PATH);
  118.         $this->request(
  119.             'post',
  120.             $path,
  121.             [],
  122.             [
  123.                 'api_user_id' => $this->user->getId(),
  124.                 'api_user_token' => $this->user->getSecurityToken(),
  125.                 'skills' => $requestArraySkillIds2,
  126.                 'project_id' => $project->getId()
  127.             ]
  128.         );
  129.  
  130.         $this->assertEquals(200, $this->getResponseStatus());
  131.         /** @var Entity\Users[] $dataDeveloper */
  132.         $dataDeveloper = json_decode($this->getResponseContent(), true);
  133.         $this->validateData($expectedDevelopers, $dataDeveloper, 'developer');
  134.  
  135.         $this->checkRoute(['post'], $this->generateUrl('post_notifications_developer', [], UrlGeneratorInterface::RELATIVE_PATH), [], [
  136.             'api_user_token' => $this->user->getSecurityToken(),
  137.             'api_user_id' => $this->user->getId(),
  138.         ]);
  139.         $this->invalidAuthChecking($this->user, 'post', $this->generateUrl('post_notifications_developer', [], UrlGeneratorInterface::RELATIVE_PATH), [], [
  140.             'project_id' => $project->getId(),
  141.         ]);
  142.  
  143.         $expectedManagers = [$manager1, $manager2];
  144.         $path = $this->generateUrl('post_notifications_manager', [], UrlGeneratorInterface::ABSOLUTE_PATH);
  145.         $this->request(
  146.             'post',
  147.             $path,
  148.             [],
  149.             [
  150.                 'api_user_id' => $this->user->getId(),
  151.                 'api_user_token' => $this->user->getSecurityToken(),
  152.                 'skills' => $requestArraySkillIds2,
  153.                 'project_id' => $project->getId()
  154.             ]
  155.         );
  156.  
  157.         $this->assertEquals(200, $this->getResponseStatus());
  158.         /** @var Entity\Users[] $dataDeveloper */
  159.         $dataManager = json_decode($this->getResponseContent(), true);
  160.         $this->validateData($expectedManagers, $dataManager, 'manager');
  161.        
  162.         $this->checkRoute(['post'], $this->generateUrl('post_notifications_manager', [], UrlGeneratorInterface::RELATIVE_PATH), [], [
  163.             'api_user_token' => $this->user->getSecurityToken(),
  164.             'api_user_id' => $this->user->getId(),
  165.         ]);
  166.         $this->invalidAuthChecking($this->user, 'post', $this->generateUrl('post_notifications_manager', [], UrlGeneratorInterface::RELATIVE_PATH), [], [
  167.             'project_id' => $project->getId(),
  168.         ]);
  169.  
  170.  
  171.         $dataNotificationPost['array_id_developer'] = $data['array_id_developer'];
  172.         $dataNotificationPost['array_id_manager'] = $data['array_id_manager'];
  173.         $dataNotificationPost['notification']['skills'] = $data['notification']['skills'];
  174.         $dataNotificationPost['notification']['project_id'] = $data['notification']['project_id'];
  175.         $dataNotificationPost['notification']['count_developer'] = $data['count_developer'];
  176.         $dataNotificationPost['notification']['count_manager'] = $data['count_manager'];
  177.         $dataNotificationPost['api_user_id'] = $data['notification']['api_user_id'];
  178.         $dataNotificationPost['api_user_token'] = $data['notification']['api_user_token'];
  179.         $authorUser = $this->usersRepository->findOneBy([
  180.             'id' => $users[0]->getId()
  181.         ]);
  182.         $expectedCodeProjectNotifications = (new Entity\CodeProjectNotifications())
  183.             ->setProjectId($project)
  184.             ->setUserId($authorUser)
  185.             ->setParameters($dataNotificationPost['notification'])
  186.             ->setDeveloperId($dataNotificationPost['array_id_developer'])
  187.             ->setMatchesId([])
  188.             ->setManagerId($dataNotificationPost['array_id_manager']);
  189.  
  190.         $this->getEntityManager()->persist($expectedCodeProjectNotifications);
  191.         $this->getEntityManager()->flush();
  192.         $this->getEntityManager()->clear();
  193.  
  194.         $path = $this->generateUrl('post_create_project_entity_notifications', [], UrlGeneratorInterface::ABSOLUTE_PATH);
  195.         $this->request(
  196.             'post',
  197.             $path,
  198.             [],
  199.             $dataNotificationPost
  200.         );
Advertisement
Add Comment
Please, Sign In to add comment