Вход Регистрация
Файл: system/vendor/illuminate/support/Testing/Fakes/QueueFake.php
Строк: 350
<?php

namespace IlluminateSupportTestingFakes;

use 
BadMethodCallException;
use 
IlluminateContractsQueueQueue;
use 
IlluminateQueueQueueManager;
use 
PHPUnitFrameworkAssert as PHPUnit;

class 
QueueFake extends QueueManager implements Queue
{
    
/**
     * All of the jobs that have been pushed.
     *
     * @var array
     */
    
protected $jobs = [];

    
/**
     * Assert if a job was pushed based on a truth-test callback.
     *
     * @param  string  $job
     * @param  callable|int|null  $callback
     * @return void
     */
    
public function assertPushed($job$callback null)
    {
        if (
is_numeric($callback)) {
            return 
$this->assertPushedTimes($job$callback);
        }

        
PHPUnit::assertTrue(
            
$this->pushed($job$callback)->count() > 0,
            
"The expected [{$job}] job was not pushed."
        
);
    }

    
/**
     * Assert if a job was pushed a number of times.
     *
     * @param  string  $job
     * @param  int  $times
     * @return void
     */
    
protected function assertPushedTimes($job$times 1)
    {
        
PHPUnit::assertTrue(
            (
$count $this->pushed($job)->count()) === $times,
            
"The expected [{$job}] job was pushed {$count} times instead of {$times} times."
        
);
    }

    
/**
     * Assert if a job was pushed based on a truth-test callback.
     *
     * @param  string  $queue
     * @param  string  $job
     * @param  callable|null  $callback
     * @return void
     */
    
public function assertPushedOn($queue$job$callback null)
    {
        return 
$this->assertPushed($job, function ($job$pushedQueue) use ($callback$queue) {
            if (
$pushedQueue !== $queue) {
                return 
false;
            }

            return 
$callback $callback(...func_get_args()) : true;
        });
    }

    
/**
     * Assert if a job was pushed with chained jobs based on a truth-test callback.
     *
     * @param  string  $job
     * @param  array  $expectedChain
     * @param  callable|null  $callback
     * @return void
     */
    
public function assertPushedWithChain($job$expectedChain = [], $callback null)
    {
        
PHPUnit::assertTrue(
            
$this->pushed($job$callback)->isNotEmpty(),
            
"The expected [{$job}] job was not pushed."
        
);

        
PHPUnit::assertTrue(
            
collect($expectedChain)->isNotEmpty(),
            
'The expected chain can not be empty.'
        
);

        
$this->isChainOfObjects($expectedChain)
                ? 
$this->assertPushedWithChainOfObjects($job$expectedChain$callback)
                : 
$this->assertPushedWithChainOfClasses($job$expectedChain$callback);
    }

    
/**
     * Assert if a job was pushed with an empty chain based on a truth-test callback.
     *
     * @param  string  $job
     * @param  callable|null  $callback
     * @return void
     */
    
public function assertPushedWithoutChain($job$callback null)
    {
        
PHPUnit::assertTrue(
            
$this->pushed($job$callback)->isNotEmpty(),
            
"The expected [{$job}] job was not pushed."
        
);

        
$this->assertPushedWithChainOfClasses($job, [], $callback);
    }

    
/**
     * Assert if a job was pushed with chained jobs based on a truth-test callback.
     *
     * @param  string  $job
     * @param  array  $expectedChain
     * @param  callable|null  $callback
     * @return void
     */
    
protected function assertPushedWithChainOfObjects($job$expectedChain$callback)
    {
        
$chain collect($expectedChain)->map(function ($job) {
            return 
serialize($job);
        })->
all();

        
PHPUnit::assertTrue(
            
$this->pushed($job$callback)->filter(function ($job) use ($chain) {
                return 
$job->chained == $chain;
            })->
isNotEmpty(),
            
'The expected chain was not pushed.'
        
);
    }

    
/**
     * Assert if a job was pushed with chained jobs based on a truth-test callback.
     *
     * @param  string  $job
     * @param  array  $expectedChain
     * @param  callable|null  $callback
     * @return void
     */
    
protected function assertPushedWithChainOfClasses($job$expectedChain$callback)
    {
        
$matching $this->pushed($job$callback)->map->chained->map(function ($chain) {
            return 
collect($chain)->map(function ($job) {
                return 
get_class(unserialize($job));
            });
        })->
filter(function ($chain) use ($expectedChain) {
            return 
$chain->all() === $expectedChain;
        });

        
PHPUnit::assertTrue(
            
$matching->isNotEmpty(), 'The expected chain was not pushed.'
        
);
    }

    
/**
     * Determine if the given chain is entirely composed of objects.
     *
     * @param  array  $chain
     * @return bool
     */
    
protected function isChainOfObjects($chain)
    {
        return ! 
collect($chain)->contains(function ($job) {
            return ! 
is_object($job);
        });
    }

    
/**
     * Determine if a job was pushed based on a truth-test callback.
     *
     * @param  string  $job
     * @param  callable|null  $callback
     * @return void
     */
    
public function assertNotPushed($job$callback null)
    {
        
PHPUnit::assertTrue(
            
$this->pushed($job$callback)->count() === 0,
            
"The unexpected [{$job}] job was pushed."
        
);
    }

    
/**
     * Assert that no jobs were pushed.
     *
     * @return void
     */
    
public function assertNothingPushed()
    {
        
PHPUnit::assertEmpty($this->jobs'Jobs were pushed unexpectedly.');
    }

    
/**
     * Get all of the jobs matching a truth-test callback.
     *
     * @param  string  $job
     * @param  callable|null  $callback
     * @return IlluminateSupportCollection
     */
    
public function pushed($job$callback null)
    {
        if (! 
$this->hasPushed($job)) {
            return 
collect();
        }

        
$callback $callback ?: function () {
            return 
true;
        };

        return 
collect($this->jobs[$job])->filter(function ($data) use ($callback) {
            return 
$callback($data['job'], $data['queue']);
        })->
pluck('job');
    }

    
/**
     * Determine if there are any stored jobs for a given class.
     *
     * @param  string  $job
     * @return bool
     */
    
public function hasPushed($job)
    {
        return isset(
$this->jobs[$job]) && ! empty($this->jobs[$job]);
    }

    
/**
     * Resolve a queue connection instance.
     *
     * @param  mixed  $value
     * @return IlluminateContractsQueueQueue
     */
    
public function connection($value null)
    {
        return 
$this;
    }

    
/**
     * Get the size of the queue.
     *
     * @param  string|null  $queue
     * @return int
     */
    
public function size($queue null)
    {
        return 
collect($this->jobs)->flatten(1)->filter(function ($job) use ($queue) {
            return 
$job['queue'] === $queue;
        })->
count();
    }

    
/**
     * Push a new job onto the queue.
     *
     * @param  string  $job
     * @param  mixed  $data
     * @param  string|null  $queue
     * @return mixed
     */
    
public function push($job$data ''$queue null)
    {
        
$this->jobs[is_object($job) ? get_class($job) : $job][] = [
            
'job' => $job,
            
'queue' => $queue,
        ];
    }

    
/**
     * Push a raw payload onto the queue.
     *
     * @param  string  $payload
     * @param  string|null  $queue
     * @param  array  $options
     * @return mixed
     */
    
public function pushRaw($payload$queue null, array $options = [])
    {
        
//
    
}

    
/**
     * Push a new job onto the queue after a delay.
     *
     * @param  DateTimeInterface|DateInterval|int  $delay
     * @param  string  $job
     * @param  mixed  $data
     * @param  string|null  $queue
     * @return mixed
     */
    
public function later($delay$job$data ''$queue null)
    {
        return 
$this->push($job$data$queue);
    }

    
/**
     * Push a new job onto the queue.
     *
     * @param  string  $queue
     * @param  string  $job
     * @param  mixed  $data
     * @return mixed
     */
    
public function pushOn($queue$job$data '')
    {
        return 
$this->push($job$data$queue);
    }

    
/**
     * Push a new job onto the queue after a delay.
     *
     * @param  string  $queue
     * @param  DateTimeInterface|DateInterval|int  $delay
     * @param  string  $job
     * @param  mixed  $data
     * @return mixed
     */
    
public function laterOn($queue$delay$job$data '')
    {
        return 
$this->push($job$data$queue);
    }

    
/**
     * Pop the next job off of the queue.
     *
     * @param  string|null  $queue
     * @return IlluminateContractsQueueJob|null
     */
    
public function pop($queue null)
    {
        
//
    
}

    
/**
     * Push an array of jobs onto the queue.
     *
     * @param  array  $jobs
     * @param  mixed  $data
     * @param  string|null  $queue
     * @return mixed
     */
    
public function bulk($jobs$data ''$queue null)
    {
        foreach (
$jobs as $job) {
            
$this->push($job$data$queue);
        }
    }

    
/**
     * Get the jobs that have been pushed.
     *
     * @return array
     */
    
public function pushedJobs()
    {
        return 
$this->jobs;
    }

    
/**
     * Get the connection name for the queue.
     *
     * @return string
     */
    
public function getConnectionName()
    {
        
//
    
}

    
/**
     * Set the connection name for the queue.
     *
     * @param  string  $name
     * @return $this
     */
    
public function setConnectionName($name)
    {
        return 
$this;
    }

    
/**
     * Override the QueueManager to prevent circular dependency.
     *
     * @param  string  $method
     * @param  array  $parameters
     * @return mixed
     *
     * @throws BadMethodCallException
     */
    
public function __call($method$parameters)
    {
        throw new 
BadMethodCallException(sprintf(
            
'Call to undefined method %s::%s()', static::class, $method
        
));
    }
}
Онлайн: 0
Реклама