public function testOnlyGetsPageableResourcesWhereUserIsAdmin() { $pageNum = 10; $pageSize = 100; $existingFilter = new SqlFilterEquals('a', 'b'); $groups = array(new UserGroup(1, 'g1', null, RoleLevel::SCHEDULE_ADMIN), new UserGroup(2, 'g2', null, RoleLevel::RESOURCE_ADMIN)); $scheduleAdminGroupIds = array(1); $resourceAdminGroupIds = array(2); $this->userRepository->expects($this->once())->method('LoadGroups')->with($this->equalTo($this->fakeUser->UserId), $this->equalTo(array(RoleLevel::SCHEDULE_ADMIN, RoleLevel::RESOURCE_ADMIN)))->will($this->returnValue($groups)); $repo = new ResourceAdminResourceRepository($this->userRepository, $this->fakeUser); $repo->GetList($pageNum, $pageSize, null, null, $existingFilter); $additionalFilter = new SqlFilterIn(new SqlFilterColumn(TableNames::SCHEDULES_ALIAS, ColumnNames::SCHEDULE_ADMIN_GROUP_ID), $scheduleAdminGroupIds); $expectedFilter = $existingFilter->_And($additionalFilter->_Or(new SqlFilterIn(ColumnNames::RESOURCE_ADMIN_GROUP_ID, $resourceAdminGroupIds))); $expectedCommand = new FilterCommand(new GetAllResourcesCommand(), $expectedFilter); $lastCommand = $this->db->_LastCommand; $this->assertEquals($expectedCommand->GetQuery(), $lastCommand->GetQuery()); }
public function testGetGroupReservations() { $command = new GetFullGroupReservationListCommand(array(1, 2)); $filterCommand = new FilterCommand($command, new SqlFilterEquals(ColumnNames::ACCESSORY_NAME, 'something just to make sure filter does not break subquery')); $countCommand = new CountCommand($filterCommand); $containsSubQuery = $this->stringContains("INNER JOIN (SELECT user_id FROM user_groups WHERE group_id IN (@groupid)) ss on ss.user_id = owner_id WHERE ", false); $containsFilter = $this->stringContains("AND (accessory_name = @accessory_name)", false); $query = $filterCommand->GetQuery(); $countQuery = $countCommand->GetQuery(); $this->assertThat($query, $containsSubQuery, $query); $this->assertThat($query, $containsFilter, $query); $this->assertThat($countQuery, $containsSubQuery, $countQuery); $this->assertThat($countQuery, $containsFilter, $countQuery); }