You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
213 lines
7.4 KiB
213 lines
7.4 KiB
|
11 months ago
|
<?php
|
||
|
|
|
||
|
|
namespace Tests\Unit\Models;
|
||
|
|
|
||
|
|
use Tests\TestCase;
|
||
|
|
use App\Models\Visit;
|
||
|
|
use App\Models\Upload;
|
||
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||
|
|
|
||
|
|
class VisitModelTest extends TestCase
|
||
|
|
{
|
||
|
|
use RefreshDatabase;
|
||
|
|
|
||
|
|
protected $visit;
|
||
|
|
|
||
|
|
protected function setUp(): void
|
||
|
|
{
|
||
|
|
parent::setUp();
|
||
|
|
$this->visit = new Visit();
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_has_correct_table_name()
|
||
|
|
{
|
||
|
|
$this->assertEquals('visits', $this->visit->getTable());
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_has_correct_casts()
|
||
|
|
{
|
||
|
|
$casts = $this->visit->getCasts();
|
||
|
|
|
||
|
|
$this->assertArrayHasKey('follw_people', $casts);
|
||
|
|
$this->assertArrayHasKey('cars', $casts);
|
||
|
|
$this->assertArrayHasKey('file', $casts);
|
||
|
|
$this->assertArrayHasKey('vehicle_images', $casts);
|
||
|
|
$this->assertArrayHasKey('meal_preferences', $casts);
|
||
|
|
$this->assertArrayHasKey('date', $casts);
|
||
|
|
$this->assertArrayHasKey('start_date', $casts);
|
||
|
|
$this->assertArrayHasKey('end_date', $casts);
|
||
|
|
$this->assertArrayHasKey('work_start_time', $casts);
|
||
|
|
$this->assertArrayHasKey('work_end_time', $casts);
|
||
|
|
$this->assertArrayHasKey('credent', $casts);
|
||
|
|
$this->assertArrayHasKey('long_time', $casts);
|
||
|
|
$this->assertArrayHasKey('audit_status', $casts);
|
||
|
|
$this->assertArrayHasKey('need_meal', $casts);
|
||
|
|
|
||
|
|
$this->assertEquals('array', $casts['follw_people']);
|
||
|
|
$this->assertEquals('array', $casts['cars']);
|
||
|
|
$this->assertEquals('array', $casts['file']);
|
||
|
|
$this->assertEquals('array', $casts['vehicle_images']);
|
||
|
|
$this->assertEquals('array', $casts['meal_preferences']);
|
||
|
|
$this->assertEquals('date', $casts['date']);
|
||
|
|
$this->assertEquals('date', $casts['start_date']);
|
||
|
|
$this->assertEquals('date', $casts['end_date']);
|
||
|
|
$this->assertEquals('date', $casts['work_start_time']);
|
||
|
|
$this->assertEquals('date', $casts['work_end_time']);
|
||
|
|
$this->assertEquals('boolean', $casts['credent']);
|
||
|
|
$this->assertEquals('boolean', $casts['long_time']);
|
||
|
|
$this->assertEquals('integer', $casts['audit_status']);
|
||
|
|
$this->assertEquals('boolean', $casts['need_meal']);
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_has_correct_type_constants()
|
||
|
|
{
|
||
|
|
$this->assertEquals(1, Visit::TYPE_VISITOR);
|
||
|
|
$this->assertEquals(2, Visit::TYPE_VISITOR_CAR);
|
||
|
|
$this->assertEquals(3, Visit::TYPE_LOGISTICS_CAR);
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_has_correct_audit_status_constants()
|
||
|
|
{
|
||
|
|
$this->assertEquals(-1, Visit::AUDIT_STATUS_PENDING_STUDY);
|
||
|
|
$this->assertEquals(0, Visit::AUDIT_STATUS_PENDING);
|
||
|
|
$this->assertEquals(1, Visit::AUDIT_STATUS_APPROVED);
|
||
|
|
$this->assertEquals(2, Visit::AUDIT_STATUS_REJECTED);
|
||
|
|
$this->assertEquals(3, Visit::AUDIT_STATUS_ENTERED);
|
||
|
|
$this->assertEquals(4, Visit::AUDIT_STATUS_LEFT);
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_has_correct_credent_constants()
|
||
|
|
{
|
||
|
|
$this->assertEquals(1, Visit::CREDENT_ID_CARD);
|
||
|
|
$this->assertEquals(2, Visit::CREDENT_PASSPORT);
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_has_correct_meal_type_constants()
|
||
|
|
{
|
||
|
|
$this->assertEquals(1, Visit::MEAL_TYPE_BREAKFAST);
|
||
|
|
$this->assertEquals(2, Visit::MEAL_TYPE_LUNCH);
|
||
|
|
$this->assertEquals(3, Visit::MEAL_TYPE_DINNER);
|
||
|
|
$this->assertEquals(4, Visit::MEAL_TYPE_ALL_DAY);
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_returns_correct_type_text()
|
||
|
|
{
|
||
|
|
$visit = new Visit(['type' => Visit::TYPE_VISITOR]);
|
||
|
|
$this->assertEquals('访客', $visit->type_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['type' => Visit::TYPE_VISITOR_CAR]);
|
||
|
|
$this->assertEquals('访客车辆', $visit->type_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['type' => Visit::TYPE_LOGISTICS_CAR]);
|
||
|
|
$this->assertEquals('物流车辆', $visit->type_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['type' => 999]);
|
||
|
|
$this->assertEquals('未知', $visit->type_text);
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_returns_correct_audit_status_text()
|
||
|
|
{
|
||
|
|
$visit = new Visit(['audit_status' => Visit::AUDIT_STATUS_PENDING_STUDY]);
|
||
|
|
$this->assertEquals('待学习', $visit->audit_status_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['audit_status' => Visit::AUDIT_STATUS_PENDING]);
|
||
|
|
$this->assertEquals('待审核', $visit->audit_status_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['audit_status' => Visit::AUDIT_STATUS_APPROVED]);
|
||
|
|
$this->assertEquals('通过(待进厂)', $visit->audit_status_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['audit_status' => Visit::AUDIT_STATUS_REJECTED]);
|
||
|
|
$this->assertEquals('驳回', $visit->audit_status_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['audit_status' => Visit::AUDIT_STATUS_ENTERED]);
|
||
|
|
$this->assertEquals('已进厂', $visit->audit_status_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['audit_status' => Visit::AUDIT_STATUS_LEFT]);
|
||
|
|
$this->assertEquals('已离厂', $visit->audit_status_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['audit_status' => 999]);
|
||
|
|
$this->assertEquals('未知', $visit->audit_status_text);
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_returns_correct_credent_text()
|
||
|
|
{
|
||
|
|
$visit = new Visit(['credent' => Visit::CREDENT_ID_CARD]);
|
||
|
|
$this->assertEquals('身份证', $visit->credent_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['credent' => Visit::CREDENT_PASSPORT]);
|
||
|
|
$this->assertEquals('护照', $visit->credent_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['credent' => 999]);
|
||
|
|
$this->assertEquals('未知', $visit->credent_text);
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_returns_correct_meal_type_text()
|
||
|
|
{
|
||
|
|
$visit = new Visit(['meal_type' => Visit::MEAL_TYPE_BREAKFAST]);
|
||
|
|
$this->assertEquals('早餐', $visit->meal_type_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['meal_type' => Visit::MEAL_TYPE_LUNCH]);
|
||
|
|
$this->assertEquals('午餐', $visit->meal_type_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['meal_type' => Visit::MEAL_TYPE_DINNER]);
|
||
|
|
$this->assertEquals('晚餐', $visit->meal_type_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['meal_type' => Visit::MEAL_TYPE_ALL_DAY]);
|
||
|
|
$this->assertEquals('全天', $visit->meal_type_text);
|
||
|
|
|
||
|
|
$visit = new Visit(['meal_type' => 999]);
|
||
|
|
$this->assertEquals('未知', $visit->meal_type_text);
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_returns_empty_collection_when_no_files()
|
||
|
|
{
|
||
|
|
$visit = new Visit();
|
||
|
|
$visit->setRawAttributes(['file' => null]);
|
||
|
|
$this->assertTrue($visit->files->isEmpty());
|
||
|
|
|
||
|
|
$visit = new Visit();
|
||
|
|
$visit->setRawAttributes(['file' => '[]']);
|
||
|
|
$this->assertTrue($visit->files->isEmpty());
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_returns_empty_collection_when_no_vehicle_images()
|
||
|
|
{
|
||
|
|
$visit = new Visit();
|
||
|
|
$visit->setRawAttributes(['vehicle_images' => null]);
|
||
|
|
$this->assertTrue($visit->vehicle_images->isEmpty());
|
||
|
|
|
||
|
|
$visit = new Visit();
|
||
|
|
$visit->setRawAttributes(['vehicle_images' => '[]']);
|
||
|
|
$this->assertTrue($visit->vehicle_images->isEmpty());
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_can_get_files_relationship()
|
||
|
|
{
|
||
|
|
$this->markTestSkipped('需要数据库连接,在功能测试中验证');
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_can_get_vehicle_images_relationship()
|
||
|
|
{
|
||
|
|
$this->markTestSkipped('需要数据库连接,在功能测试中验证');
|
||
|
|
}
|
||
|
|
|
||
|
|
/** @test */
|
||
|
|
public function it_can_get_accept_admin_sign_relationship()
|
||
|
|
{
|
||
|
|
$this->markTestSkipped('需要数据库连接,在功能测试中验证');
|
||
|
|
}
|
||
|
|
}
|