getJson(route('api.axis-report')); $response->assertStatus(400) ->assertExactJson([ 'status' => 'error', 'message' => ' لطفا یک گزینه از فیلتر ها را انتخاب نمایید.' ]); } public function test_filtering_road_item_works_properly(): void { RoadItemsProject::factory() ->sequence( ["id" => 1, 'created_at' => '2022-05-03 12:25:00', 'info_id' => 1, 'start_way_id' => 1, 'end_way_id' => 2], ["id" => 2, 'created_at' => '2025-05-03 12:25:00', 'info_id' => 2, 'start_way_id' => 5, 'end_way_id' => 3], ["id" => 3, 'created_at' => '2022-05-03 12:25:00', 'info_id' => 5, 'start_way_id' => 9, 'end_way_id' => 4], ["id" => 4, 'created_at' => '2026-05-03 12:25:00', 'info_id' => 6, 'start_way_id' => 2, 'end_way_id' => 1], ["id" => 5, 'created_at' => '2022-05-03 12:25:00', 'info_id' => 1, 'start_way_id' => 6, 'end_way_id' => 6], ["id" => 6, 'created_at' => '2026-08-03 12:25:00', 'info_id' => 9, 'start_way_id' => 16, 'end_way_id' => 7], ["id" => 7, 'created_at' => '2022-05-03 12:25:00', 'info_id' => 2, 'start_way_id' => 35, 'end_way_id' => 9], ) ->count(7) ->create(); $this->mock(NominatimService::class, function (MockInterface $mock) { $mock->shouldReceive('getIDFromNominatim')->andReturn([1, 2, 3]); }); $response = $this->getJson(route('api.axis-report', [ 'date_to' => '2023-07-26', 'date_from' => '2021-07-26', 'daily_activity' => [1, 2], 'road_type' => 'test', 'slng' => '12', 'slat' => '12', 'dlng' => '13', 'dlat' => '13', 'type' => [1], // 'contract_status' => '', // 'project_type' => '', ])); $response->assertStatus(200) ->assertExactJson([ 'status' => 'success', 'data' => [ "roadObserved" => null, "roadPatrolProject" => null, "contractSubItems" => null, 'roadItemsProject' => [ [ "start_lat" => "0.0000000000", "start_lng" => "0.0000000000", "id" => 1 ] ] ] ]); } public function test_filtering_road_patrol_works_properly(): void { RoadPatrol::factory() ->sequence( ["id" => 1, 'created_at' => '2022-05-03 12:25:00', 'start_lat' => 1, 'start_way_id' => 1, 'end_way_id' => 2], ["id" => 2, 'created_at' => '2025-05-03 12:25:00', 'start_lat' => 2, 'start_way_id' => 5, 'end_way_id' => 3], ["id" => 3, 'created_at' => '2022-05-03 12:25:00', 'start_lat' => 5, 'start_way_id' => 9, 'end_way_id' => 4], ["id" => 4, 'created_at' => '2026-05-03 12:25:00', 'start_lat' => 6, 'start_way_id' => 2, 'end_way_id' => 1], ["id" => 5, 'created_at' => '2022-05-03 12:25:00', 'start_lat' => 1, 'start_way_id' => 6, 'end_way_id' => 6], ["id" => 6, 'created_at' => '2026-08-03 12:25:00', 'start_lat' => 9, 'start_way_id' => 16, 'end_way_id' => 7], ["id" => 7, 'created_at' => '2022-05-03 12:25:00', 'start_lat' => 2, 'start_way_id' => 35, 'end_way_id' => 9], ) ->count(7) ->create(); $this->mock(NominatimService::class, function (MockInterface $mock) { $mock->shouldReceive('getIDFromNominatim')->andReturn([1, 2, 3]); }); $response = $this->getJson(route('api.axis-report', [ 'date_to' => '2023-07-26', 'date_from' => '2021-07-26', // 'daily_activity' => [1, 2], 'road_type' => 'test', 'slng' => '12', 'slat' => '12', 'dlng' => '13', 'dlat' => '13', 'type' => [2], // 'contract_status' => '', // 'project_type' => '', ])); $response->assertStatus(200) ->assertExactJson([ 'status' => 'success', 'data' => [ "roadObserved" => null, "roadItemsProject" => null, "contractSubItems" => null, 'roadPatrolProject' => [ [ "start_lat" => 1, "start_lon" => 0, "id" => 1 ] ] ] ]); } public function test_filtering_road_observed_works_properly(): void { RoadObserved::factory() ->sequence( ["id" => 1, 'created_at' => '2022-05-03 12:25:00', 'handling_way_id' => 1, 'observed_way_id' => 1, 'fk_FeatureType' => 'test', 'rms_status' => 1], ["id" => 2, 'created_at' => '2025-05-03 12:25:00', 'handling_way_id' => 2, 'observed_way_id' => 5, 'fk_FeatureType' => 'fake'], ["id" => 3, 'created_at' => '2022-05-03 12:25:00', 'handling_way_id' => 5, 'observed_way_id' => 9, 'fk_FeatureType' => 'fake'], ["id" => 4, 'created_at' => '2026-05-03 12:25:00', 'handling_way_id' => 6, 'observed_way_id' => 2, 'fk_FeatureType' => 'fake'], ["id" => 5, 'created_at' => '2022-05-03 12:25:00', 'handling_way_id' => 1, 'observed_way_id' => 6, 'fk_FeatureType' => 'fake'], ["id" => 6, 'created_at' => '2026-08-03 12:25:00', 'handling_way_id' => 9, 'observed_way_id' => 16, 'fk_FeatureType' => 'fake'], ["id" => 7, 'created_at' => '2022-05-03 12:25:00', 'handling_way_id' => 2, 'observed_way_id' => 35, 'fk_FeatureType' => 'fake'], ) ->count(7) ->create(); $this->mock(NominatimService::class, function (MockInterface $mock) { $mock->shouldReceive('getIDFromNominatim')->andReturn([1, 2, 3]); }); $response = $this->getJson(route('api.axis-report', [ 'date_to' => '2023-07-26', 'date_from' => '2021-07-26', // 'daily_activity' => [1, 2], 'road_type' => ['test'], 'slng' => '12', 'slat' => '12', 'dlng' => '13', 'dlat' => '13', 'type' => [4], // 'contract_status' => '', // 'project_type' => '', ])); $response->assertStatus(200) ->assertExactJson([ 'status' => 'success', 'data' => [ "roadItemsProject" => null, "roadPatrolProject" => null, "contractSubItems" => null, 'roadObserved' => [ [ "start_lat" => null, "start_lng" => null, "id" => 1 ] ] ] ]); } public function test_filtering_contract_sub_items_works_properly(): void { $user = User::factory()->create(); LogList::factory()->create(['log_unique_code' => 1005]); LogList::factory()->create(['log_unique_code' => 1006]); LogList::factory()->create(['log_unique_code' => 1001]); $this->actingAs($user); ContractSubItems::factory() ->sequence( ["id" => 1, 'contract_date_from_parent_contract' => '2022-05-03 12:25:00', 'start_way_id' => 1, 'end_way_id' => 2], ["id" => 2, 'contract_date_from_parent_contract' => '2025-05-03 12:25:00', 'start_way_id' => 5, 'end_way_id' => 3], ["id" => 3, 'contract_date_from_parent_contract' => '2022-05-03 12:25:00', 'start_way_id' => 9, 'end_way_id' => 4], ["id" => 4, 'contract_date_from_parent_contract' => '2026-05-03 12:25:00', 'start_way_id' => 2, 'end_way_id' => 1], ["id" => 5, 'contract_date_from_parent_contract' => '2022-05-03 12:25:00', 'start_way_id' => 6, 'end_way_id' => 6], ["id" => 6, 'contract_date_from_parent_contract' => '2026-08-03 12:25:00', 'start_way_id' => 16, 'end_way_id' => 7], ["id" => 7, 'contract_date_from_parent_contract' => '2022-05-03 12:25:00', 'start_way_id' => 35, 'end_way_id' => 9], ) ->count(7) ->create(); $this->mock(NominatimService::class, function (MockInterface $mock) { $mock->shouldReceive('getIDFromNominatim')->andReturn([1, 2, 3]); }); $response = $this->getJson(route('api.axis-report', [ 'date_to' => '2023-07-26', 'date_from' => '2021-07-26', // 'daily_activity' => [1, 2], 'road_type' => ['test'], 'slng' => '12', 'slat' => '12', 'dlng' => '13', 'dlat' => '13', 'type' => [3], // 'contract_status' => '', // 'project_type' => '', ])); $response->assertStatus(200) ->assertExactJson([ 'status' => 'success', 'data' => [ "roadItemsProject" => null, "roadPatrolProject" => null, "roadObserved" => null, 'contractSubItems' => [ [ "start_lat" => null, "start_lng" => null, "id" => 1 ] ] ] ]); } }