fixed tests

This commit is contained in:
Denis Duliçi 2021-04-18 01:39:36 +03:00
parent 231f45c262
commit 3f49792763
8 changed files with 386 additions and 20 deletions

View File

@ -4,10 +4,13 @@ namespace App\Exports\Common;
use App\Exports\Common\Sheets\Items as Base;
use App\Exports\Common\Sheets\ItemTaxes;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;
class Items implements WithMultipleSheets
{
use Exportable;
public $ids;
public function __construct($ids = null)

View File

@ -8,10 +8,13 @@ use App\Exports\Purchases\Sheets\BillItemTaxes;
use App\Exports\Purchases\Sheets\BillHistories;
use App\Exports\Purchases\Sheets\BillTotals;
use App\Exports\Purchases\Sheets\BillTransactions;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;
class Bills implements WithMultipleSheets
{
use Exportable;
public $ids;
public function __construct($ids = null)

View File

@ -8,10 +8,13 @@ use App\Exports\Sales\Sheets\InvoiceItemTaxes;
use App\Exports\Sales\Sheets\InvoiceHistories;
use App\Exports\Sales\Sheets\InvoiceTotals;
use App\Exports\Sales\Sheets\InvoiceTransactions;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;
class Invoices implements WithMultipleSheets
{
use Exportable;
public $ids;
public function __construct($ids = null)

View File

@ -441,9 +441,9 @@ class Company extends Eloquent
return $this->getMedia('company_logo')->last();
}
public function makeCurrent()
public function makeCurrent($force = false)
{
if ($this->isCurrent()) {
if (!$force && $this->isCurrent()) {
return $this;
}

View File

@ -99,6 +99,7 @@
"vendor/akaunting/laravel-module/src/Commands/InstallCommand.php",
"vendor/laravel/framework/src/Illuminate/Translation/MessageSelector.php",
"vendor/laravel/framework/src/Illuminate/View/Concerns/ManagesStacks.php",
"vendor/maatwebsite/excel/src/Fakes/ExcelFake.php",
"vendor/maatwebsite/excel/src/QueuedWriter.php",
"vendor/symfony/process/PhpExecutableFinder.php"
],

28
composer.lock generated
View File

@ -8,23 +8,23 @@
"packages": [
{
"name": "akaunting/laravel-firewall",
"version": "1.2.13",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/akaunting/laravel-firewall.git",
"reference": "e686eda1826f83dea2b403480274800c67181d4a"
"reference": "5803f8166b98491feafb2367c8232361e800fea9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/akaunting/laravel-firewall/zipball/e686eda1826f83dea2b403480274800c67181d4a",
"reference": "e686eda1826f83dea2b403480274800c67181d4a",
"url": "https://api.github.com/repos/akaunting/laravel-firewall/zipball/5803f8166b98491feafb2367c8232361e800fea9",
"reference": "5803f8166b98491feafb2367c8232361e800fea9",
"shasum": ""
},
"require": {
"guzzlehttp/guzzle": ">=6.0",
"jenssegers/agent": "2.6.*",
"laravel/framework": ">=5.4",
"php": ">=5.6.4"
"laravel/framework": ">=5.5",
"php": ">=7.0"
},
"require-dev": {
"orchestra/testbench": ">=3.4",
@ -69,9 +69,9 @@
],
"support": {
"issues": "https://github.com/akaunting/laravel-firewall/issues",
"source": "https://github.com/akaunting/laravel-firewall/tree/1.2.13"
"source": "https://github.com/akaunting/laravel-firewall/tree/1.3.0"
},
"time": "2021-03-12T19:05:08+00:00"
"time": "2021-04-17T08:14:42+00:00"
},
{
"name": "akaunting/laravel-language",
@ -6818,16 +6818,16 @@
},
{
"name": "nunomaduro/larastan",
"version": "v0.7.3",
"version": "v0.7.4",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/larastan.git",
"reference": "9c515d46851dca5a99fc82c0a69392c362b7affd"
"reference": "0ceef2a39b45be9d7f7dd96192a1721ba5112278"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nunomaduro/larastan/zipball/9c515d46851dca5a99fc82c0a69392c362b7affd",
"reference": "9c515d46851dca5a99fc82c0a69392c362b7affd",
"url": "https://api.github.com/repos/nunomaduro/larastan/zipball/0ceef2a39b45be9d7f7dd96192a1721ba5112278",
"reference": "0ceef2a39b45be9d7f7dd96192a1721ba5112278",
"shasum": ""
},
"require": {
@ -6891,7 +6891,7 @@
],
"support": {
"issues": "https://github.com/nunomaduro/larastan/issues",
"source": "https://github.com/nunomaduro/larastan/tree/v0.7.3"
"source": "https://github.com/nunomaduro/larastan/tree/v0.7.4"
},
"funding": [
{
@ -6911,7 +6911,7 @@
"type": "patreon"
}
],
"time": "2021-04-12T11:01:46+00:00"
"time": "2021-04-16T08:25:31+00:00"
},
{
"name": "omnipay/common",

View File

@ -50,13 +50,11 @@ class TestCompany extends Seeder
'schedule.send_invoice_reminder' => '1',
'schedule.send_bill_reminder' => '1',
'wizard.completed' => '1',
'email.protocol' => 'array',
],
]));
$company->makeCurrent();
setting()->set(['email.protocol' => 'array']);
setting()->save();
$company->makeCurrent(true);
$this->command->info('Test company created.');
}

View File

@ -0,0 +1,358 @@
<?php
namespace Maatwebsite\Excel\Fakes;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\PendingDispatch;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Queue;
use Maatwebsite\Excel\Exporter;
use Maatwebsite\Excel\Importer;
use Maatwebsite\Excel\Reader;
use PHPUnit\Framework\Assert;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\File\UploadedFile;
class ExcelFake implements Exporter, Importer
{
/**
* @var array
*/
protected $downloads = [];
/**
* @var array
*/
protected $stored = [];
/**
* @var array
*/
protected $queued = [];
/**
* @var array
*/
protected $imported = [];
/**
* @var bool
*/
protected $matchByRegex = false;
/**
* @var object|null
*/
protected $job;
/**
* {@inheritdoc}
*/
public function download($export, string $fileName, string $writerType = null, array $headers = [])
{
$this->downloads[$fileName] = $export;
return new BinaryFileResponse(__DIR__ . '/fake_file');
}
/**
* {@inheritdoc}
*/
public function store($export, string $filePath, string $disk = null, string $writerType = null, $diskOptions = [])
{
if ($export instanceof ShouldQueue) {
// @todo removed to fix explicit queue exports
//return $this->queue($export, $filePath, $disk, $writerType);
}
$this->stored[$disk ?? 'default'][$filePath] = $export;
return true;
}
/**
* {@inheritdoc}
*/
public function queue($export, string $filePath, string $disk = null, string $writerType = null, $diskOptions = [])
{
Queue::fake();
$this->stored[$disk ?? 'default'][$filePath] = $export;
$this->queued[$disk ?? 'default'][$filePath] = $export;
$this->job = new class {
use Queueable;
public function handle()
{
//
}
};
Queue::push($this->job);
return new PendingDispatch($this->job);
}
/**
* @param object $export
* @param string $writerType
*
* @return string
*/
public function raw($export, string $writerType)
{
return 'RAW-CONTENTS';
}
/**
* @param object $import
* @param string|UploadedFile $file
* @param string|null $disk
* @param string|null $readerType
*
* @return Reader|PendingDispatch
*/
public function import($import, $file, string $disk = null, string $readerType = null)
{
if ($import instanceof ShouldQueue) {
// @todo removed to fix explicit queue imports
//return $this->queueImport($import, $file, $disk, $readerType);
}
$filePath = ($file instanceof UploadedFile) ? $file->getClientOriginalName() : $file;
$this->imported[$disk ?? 'default'][$filePath] = $import;
return $this;
}
/**
* @param object $import
* @param string|UploadedFile $file
* @param string|null $disk
* @param string|null $readerType
*
* @return array
*/
public function toArray($import, $file, string $disk = null, string $readerType = null): array
{
$filePath = ($file instanceof UploadedFile) ? $file->getFilename() : $file;
$this->imported[$disk ?? 'default'][$filePath] = $import;
return [];
}
/**
* @param object $import
* @param string|UploadedFile $file
* @param string|null $disk
* @param string|null $readerType
*
* @return Collection
*/
public function toCollection($import, $file, string $disk = null, string $readerType = null): Collection
{
$filePath = ($file instanceof UploadedFile) ? $file->getFilename() : $file;
$this->imported[$disk ?? 'default'][$filePath] = $import;
return new Collection();
}
/**
* @param ShouldQueue $import
* @param string|UploadedFile $file
* @param string|null $disk
* @param string $readerType
*
* @return PendingDispatch
*/
public function queueImport(ShouldQueue $import, $file, string $disk = null, string $readerType = null)
{
Queue::fake();
$filePath = ($file instanceof UploadedFile) ? $file->getFilename() : $file;
$this->queued[$disk ?? 'default'][$filePath] = $import;
$this->imported[$disk ?? 'default'][$filePath] = $import;
return new PendingDispatch(new class {
use Queueable;
public function handle()
{
//
}
});
}
/**
* When asserting downloaded, stored, queued or imported, use regular expression
* to look for a matching file path.
*
* @return void
*/
public function matchByRegex()
{
$this->matchByRegex = true;
}
/**
* When asserting downloaded, stored, queued or imported, use regular string
* comparison for matching file path.
*
* @return void
*/
public function doNotMatchByRegex()
{
$this->matchByRegex = false;
}
/**
* @param string $fileName
* @param callable|null $callback
*/
public function assertDownloaded(string $fileName, $callback = null)
{
$fileName = $this->assertArrayHasKey($fileName, $this->downloads, sprintf('%s is not downloaded', $fileName));
$callback = $callback ?: function () {
return true;
};
Assert::assertTrue(
$callback($this->downloads[$fileName]),
"The file [{$fileName}] was not downloaded with the expected data."
);
}
/**
* @param string $filePath
* @param string|callable|null $disk
* @param callable|null $callback
*/
public function assertStored(string $filePath, $disk = null, $callback = null)
{
if (is_callable($disk)) {
$callback = $disk;
$disk = null;
}
$disk = $disk ?? 'default';
$storedOnDisk = $this->stored[$disk] ?? [];
$filePath = $this->assertArrayHasKey(
$filePath,
$storedOnDisk,
sprintf('%s is not stored on disk %s', $filePath, $disk)
);
$callback = $callback ?: function () {
return true;
};
Assert::assertTrue(
$callback($storedOnDisk[$filePath]),
"The file [{$filePath}] was not stored with the expected data."
);
}
/**
* @param string $filePath
* @param string|callable|null $disk
* @param callable|null $callback
*/
public function assertQueued(string $filePath, $disk = null, $callback = null)
{
if (is_callable($disk)) {
$callback = $disk;
$disk = null;
}
$disk = $disk ?? 'default';
$queuedForDisk = $this->queued[$disk] ?? [];
$filePath = $this->assertArrayHasKey(
$filePath,
$queuedForDisk,
sprintf('%s is not queued for export on disk %s', $filePath, $disk)
);
$callback = $callback ?: function () {
return true;
};
Assert::assertTrue(
$callback($queuedForDisk[$filePath]),
"The file [{$filePath}] was not stored with the expected data."
);
}
public function assertQueuedWithChain($chain): void
{
Queue::assertPushedWithChain(get_class($this->job), $chain);
}
/**
* @param string $filePath
* @param string|callable|null $disk
* @param callable|null $callback
*/
public function assertImported(string $filePath, $disk = null, $callback = null)
{
if (is_callable($disk)) {
$callback = $disk;
$disk = null;
}
$disk = $disk ?? 'default';
$importedOnDisk = $this->imported[$disk] ?? [];
$filePath = $this->assertArrayHasKey(
$filePath,
$importedOnDisk,
sprintf('%s is not stored on disk %s', $filePath, $disk)
);
$callback = $callback ?: function () {
return true;
};
Assert::assertTrue(
$callback($importedOnDisk[$filePath]),
"The file [{$filePath}] was not imported with the expected data."
);
}
/**
* Asserts that an array has a specified key and returns the key if successful.
* @see matchByRegex for more information about file path matching
*
* @param string $key
* @param array $array
* @param string $message
*
* @return string
*
* @throws ExpectationFailedException
* @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
* @throws Exception
*/
protected function assertArrayHasKey(string $key, array $disk, string $message = ''): string
{
if ($this->matchByRegex) {
$files = array_keys($disk);
$results = preg_grep($key, $files);
Assert::assertGreaterThan(0, count($results), $message);
Assert::assertEquals(1, count($results), "More than one result matches the file name expression '$key'.");
return $results[0];
}
Assert::assertArrayHasKey($key, $disk, $message);
return $key;
}
}