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

<?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('需要数据库连接,在功能测试中验证');
}
}