| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- <?php
- namespace Tests\Services\OwnerPriceLogisticService;
- use App\Logistic;
- use App\Owner;
- use App\OwnerPriceLogistic;
- use App\OwnerPriceLogisticDetail;
- use App\Services\OwnerPriceLogisticService;
- use App\Unit;
- use Illuminate\Support\Str;
- use Tests\TestCase;
- class OwnerPriceLogisticServiceTest extends TestCase
- {
- /** @var OwnerPriceLogisticService */
- public $service;
- public $data;
- protected function setUp(): void
- {
- parent::setUp();
- $this->service = app(OwnerPriceLogisticService::class);
- $units = factory(Unit::class,2)->create();
- $this->data["units"] = $units->toArray();
- $this->data["details"] = [];
- $this->data["owners"] = [];
- $this->data["logistics"] = [];
- $this->data["models"] = factory(OwnerPriceLogistic::class,3)->create([
- "unit_id" => $units[0]->id,
- "other_unit_id" => $units[1]->id,
- ])->toArray();
- }
- /**
- * @group customer
- */
- public function testPaginate()
- {
- $models = $this->service->paginate();
- $this->assertGreaterThanOrEqual(3,count($models));
- $this->assertLessThanOrEqual(50,count($models));
- }
- /**
- * @group customer
- */
- public function create()
- {
- $model = $this->service->create([
- "name" => md5(Str::random(7)),
- "unit_range" => "0-5,5-10,10-15,15-20",
- "unit_id" => $this->data["units"][0]["id"],
- "other_unit_range" => "0-5,5-10,10-15,15-20,30-",
- "other_unit_id" => $this->data["units"][1]["id"],
- "pick_up_price" => mt_rand(2,230) / 3,
- "fuel_price" => mt_rand(2,230) / 3,
- "service_price" => mt_rand(2,230) / 3,
- ]);
- $this->assertNotNull($model);
- $this->data["models"][] = $model->toArray();
- }
- /**
- * @group customer
- */
- public function testFind()
- {
- $model = $this->service->find($this->data["models"][0]["id"]);
- $this->assertNotNull($model);
- }
- /**
- * @group customer
- */
- public function testUpdate()
- {
- $result = $this->service->update(["id"=>$this->data["models"][0]["id"]],[
- "fuel_price" => 2.222,
- ]);
- $this->assertEquals(1,$result);
- }
- /**
- * @group customer
- */
- public function testUpdateDetail()
- {
- $province = \App\Province::query()->first();
- $city = \App\City::query()->where("province_id",$province->id)->first();
- $detail = factory(OwnerPriceLogisticDetail::class)->create([
- "owner_price_logistic_id" => $this->data["models"][0]["id"], //物流计费
- "unit_id" => 1, //单位ID
- "range" => "0-5", //区间
- "province_id" => $province->id, //省份ID
- "city_id" => $city->id,
- ]);
- $this->assertNotNull($detail);
- $this->data["details"][] = $detail->toArray();
- $result = $this->service->updateDetail(["id"=>$detail->id],["range"=>"30-"]);
- $this->assertEquals(1,$result);
- }
- /**
- * @group customer
- */
- public function testIsExistDetail()
- {
- $detail = factory(OwnerPriceLogisticDetail::class)->create([
- "owner_price_logistic_id" => $this->data["models"][0]["id"], //物流计费
- "unit_id" => 1, //单位ID
- ]);
- $this->data["details"][] = $detail->toArray();
- $result = $this->service->isExistDetail(["unit_id"=>1,"owner_price_logistic_id"=> $this->data["models"][0]["id"]]);
- $this->assertGreaterThan(0,$result);
- }
- /**
- * @group customer
- */
- public function testCreateDetail()
- {
- $detail = $this->service->createDetail([
- "owner_price_logistic_id" => 1,
- "unit_id" => 1,
- "range" => "0-5",
- "province_id" => 1,
- "city_id" => 1,
- "unit_price" => mt_rand(1,36) / 3,
- "delivery_fee" => mt_rand(1,136) / 3,
- "initial_fee" => mt_rand(1,136) / 3,
- "initial_amount" => mt_rand(1,136) / 3,
- "rate" => mt_rand(1,136) / 3,
- ]);
- $this->assertNotNull($detail);
- $this->data["details"][] = $detail->toArray();
- }
- /**
- * @group customer
- */
- public function testDestroyDetail()
- {
- $detail = factory(OwnerPriceLogisticDetail::class)->create([
- "owner_price_logistic_id" => $this->data["models"][0]["id"], //物流计费
- "unit_id" => 1, //单位ID
- ]);
- $this->data["details"][] = $detail->toArray();
- $result = $this->service->destroyDetail($detail->id);
- $this->assertEquals(1,$result);
- }
- /**
- * @group customer
- */
- public function testCheckRange()
- {
- $result = $this->service->checkRange("0-5,5-10,10-15,15-30,30-");
- $this->assertEquals(true,$result);
- $result = $this->service->checkRange("0-5,5-10,10-15,15-30");
- $this->assertEquals(false,$result);
- $result = $this->service->checkRange("0-5,5-10,10-15,16-30,30-");
- $this->assertEquals(false,$result);
- $result = $this->service->checkRange("0-55-10,10-15,16-30,30-");
- $this->assertEquals(false,$result);
- }
- /**
- * @group customer
- */
- public function testMatching()
- {
- /** @var OwnerPriceLogistic $model */
- $model = factory(OwnerPriceLogistic::class)->create([
- "name" => md5(date('Ymd')).Str::random(4), //名称
- "unit_range" => "0-5,5-10,10-15,15-20", //单价一区间
- "unit_id" => 1, //单位一ID
- "other_unit_range" => "0-5,5-10,10-15,15-20,30-", //单位二区间
- "other_unit_id" => 2, //单位二ID
- "pick_up_price" => 1.5, //提货费
- "fuel_price" => 2.5, //燃油附加费
- "service_price" => 3.5, //信息服务费
- ]);
- $this->data["models"][] = $model->toArray();
- $owner = factory(Owner::class)->create([
- "user_owner_group_id" => 1
- ]);
- $this->data["owners"][] = $owner->toArray();
- $logistic = factory(Logistic::class)->create();
- $this->data["logistics"][] = $owner->toArray();
- $model->owners()->sync([$owner->id]);
- $model->logistics()->sync([$logistic->id]);
- $detail = factory(OwnerPriceLogisticDetail::class)->create([
- "owner_price_logistic_id" => $model->id, //物流计费
- "unit_id" => 1, //单位ID
- "range" => "10-30", //区间
- "province_id" => 1, //省份ID
- "city_id" => 1, //城市ID
- "unit_price" => 32.6, //单价
- "delivery_fee" => 123, //送货费
- "initial_fee" => 500, //起始计费
- "initial_amount" => 6, //起始计数
- "rate" => 0, //费率
- ]);//7.5
- $this->data["details"][] = $detail->toArray();
- $result = $this->service->matching(20,$owner->id,$logistic->id,1,1,1);
- $this->assertEquals([782.5,null],$result);
- $result = $this->service->matching(31,$owner->id,$logistic->id,1,1,1);
- $this->assertEquals([null,null],$result);
- }
- public function tearDown(): void
- {
- Unit::destroy(array_column($this->data["units"],"id"));
- foreach ($this->data["models"] as $model){
- /** @var OwnerPriceLogistic $item */
- $item = OwnerPriceLogistic::query()->find($model["id"]);
- $item->owners()->sync([]);
- $item->logistics()->sync([]);
- }
- OwnerPriceLogistic::destroy(array_column($this->data["models"],"id"));
- OwnerPriceLogisticDetail::destroy(array_column($this->data["details"],"id"));
- Owner::destroy(array_column($this->data["owners"],"id"));
- Logistic::destroy(array_column($this->data["logistics"],"id"));
- parent::tearDown();
- }
- }
|