create(); $response = $this->actingAs($user)->postJson(route('v3.road_items.store')); $response->assertForbidden(); } public function test_user_cannot_access_authentication_store(): void { // $roadItem = RoadItemsProject::factory()->create(); $response =$this->postJson(route('v3.road_items.store')); $response->assertStatus(401); } public function test_required_fields(): void { $user = User::factory() ->has(Permission::factory([ 'name' => 'create-road-item' ])) ->create(); $response = $this->actingAs($user)->postJson(route('v3.road_items.store')); $response->assertUnprocessable() ->assertInvalid([ 'start_point' => __('validation.required', ['attribute' => 'start point']), 'item_id' => __('validation.required', ['attribute' => 'item id']), 'sub_item_id' => __('validation.required', ['attribute' => 'sub item id']), 'amount' => __('validation.required', ['attribute' => 'amount']), 'activity_date' => __('validation.required', ['attribute' => 'تاریخ فعالیت']), 'activity_time' => __('validation.required', ['attribute' => 'ساعت فعالیت']), 'machines_id' => __('validation.required', ['attribute' => 'machines id']), 'rahdaran_id' => __('validation.required', ['attribute' => 'rahdaran id']), ]); } public function test_integer_fields(): void { $user = User::factory() ->has(Permission::factory([ 'name' => 'create-road-item' ])) ->create(); $data = [ 'item_id' => $this->faker->name, 'sub_item_id' => $this->faker->name, 'observed_item_id' => $this->faker->name, ]; $response = $this->actingAs($user)->postJson(route('v3.road_items.store'), $data); $response->assertUnprocessable() ->assertInvalid([ 'item_id' => __('validation.integer', ['attribute' => 'item id']), 'sub_item_id' => __('validation.integer', ['attribute' => 'sub item id']), 'observed_item_id' => __('validation.integer', ['attribute' => 'observed item id']), ]); } public function test_amount_should_be_numeric(): void { $user = User::factory() ->has(Permission::factory([ 'name' => 'create-road-item' ])) ->create(); $response = $this->actingAs($user)->postJson(route('v3.road_items.store'), [ 'amount' => $this->faker->name ]); $response->assertUnprocessable() ->assertInvalid([ 'amount' => __('validation.numeric', ['attribute' => 'amount']) ]); } public function test_exists_fields(): void { $user = User::factory() ->has(Permission::factory([ 'name' => 'create-road-item' ])) ->create(); $data = [ 'machines_id' => [$this->faker->numberBetween(10000, 99999)], 'rahdaran_id' => [$this->faker->numberBetween(10000, 99999)], 'observed_item_id' => $this->faker->numberBetween(10000, 99999), ]; $response = $this->actingAs($user)->postJson(route('v3.road_items.store'), $data); $response->assertUnprocessable() ->assertInvalid([ 'machines_id.0', 'rahdaran_id.0', 'observed_item_id', ]); } public function test_image_fields(): void { $user = User::factory() ->has(Permission::factory([ 'name' => 'create-road-item'])) ->create(); $data = [ 'before_image' =>$this->faker->name, 'after_image' =>$this->faker->name, ]; $response = $this->actingAs($user)->postJson(route('v3.road_items.store'), $data); $response->assertUnprocessable() ->assertInvalid([ 'before_image' => __('validation.image', ['attribute' => 'before image']), 'after_image' => __('validation.image', ['attribute' => 'after image']), ]); } public function test_image_should_be_less_than_4096kb(): void { $user = User::factory() ->has(Permission::factory([ 'name' => 'create-road-item' ])) ->create(); $data = [ 'before_image' => UploadedFile::fake()->create('image.jpg', 5096), 'after_image' => UploadedFile::fake()->create('image.jpg', 5096), ]; $response = $this->actingAs($user)->postJson(route('v3.road_items.store'), $data); $response->assertUnprocessable() ->assertInvalid([ 'before_image' => __('validation.max.file', ['attribute' => 'before image', 'max' => 4096]), 'after_image' => __('validation.max.file', ['attribute' => 'after image', 'max' => 4096]), ]); } public function test_date_format_fields(): void { $user = User::factory() ->has(Permission::factory([ 'name' => 'create-road-item'])) ->create(); $data = [ 'activity_date' => $this->faker->date('d-m-Y-H-i-s'), 'activity_time'=> $this->faker->date('d-m-Y-H-i-s'), ]; $response = $this->actingAs($user)->postJson(route('v3.road_items.store'), $data); $response->assertUnprocessable() ->assertInvalid([ 'activity_date' => __('validation.date_format', ['attribute' => 'تاریخ فعالیت', 'format' => 'Y-m-d']), 'activity_time' => __('validation.date_format', ['attribute' => 'ساعت فعالیت', 'format' => 'H:i']), ]); } // // public function test_province_user_is_prohibited_to_access(): void // { // $edarateOstani = EdarateOstani::factory()->create(); // $cmmsMachine = CMMSMachine::factory()->create(); // $rahdar = Rahdaran::factory()->create(); // // $user = User::factory() // ->has(Permission::factory([ // 'name' => 'create-road-item' // ])) // ->create([ // 'edarate_ostani_id' => $edarateOstani->id // ]); // // $data = [ // 'start_point' => '12,12', // 'item_id' => $this->faker->numberBetween(1, 10), // 'sub_item_id' => $this->faker->numberBetween(1, 10), // 'amount' => $this->faker->numberBetween(1, 10), // 'activity_date' => $this->faker->date(), // 'activity_time' => $this->faker->date('H:i'), // 'before_image' => UploadedFile::fake()->create('image.jpg', 10), // 'after_image' => UploadedFile::fake()->create('image.jpg', 10), // 'cmms_machine_id' => $cmmsMachine->id, // 'rahdar_id' => $rahdar->id, // ]; // // $response = $this->actingAs($user)->postJson(route('v3.road_items.store'), $data); // // $response->assertStatus(400) // ->assertExactJson([ // 'message' => 'امکان ثبت فعالیت برای ادارات استانی و ستادی وجود ندارد!' // ]); // } // // public function test_user_should_have_edarate_shahri_id(): void // { // $city = City::factory()->create(); // $cmmsMachine = CMMSMachine::factory()->create(); // $rahdar = Rahdaran::factory()->create(); // // $user = User::factory() // ->has(Permission::factory([ // 'name' => 'create-road-item' // ])) // ->create([ // 'city_id' => $city->id // ]); // // $data = [ // 'start_point' => '12,12', // 'item_id' => $this->faker->numberBetween(1, 10), // 'sub_item_id' => $this->faker->numberBetween(1, 10), // 'amount' => $this->faker->numberBetween(1, 10), // 'activity_date' => $this->faker->date(), // 'activity_time' => $this->faker->date('H:i'), // 'before_image' => UploadedFile::fake()->create('image.jpg', 10), // 'after_image' => UploadedFile::fake()->create('image.jpg', 10), // 'cmms_machine_id' => $cmmsMachine->id, // 'rahdar_id' => $rahdar->id, // ]; // // $response = $this->actingAs($user)->postJson(route('v3.road_items.store'), $data); // // $response->assertStatus(400) // ->assertExactJson([ // 'message' => 'اداره شهری برای شما در سامانه ثبت نشده است!' // ]); // } // // public function test_end_point_required_when_info_item_needs_end_point(): void // { // $city = City::factory()->create(); // $edarateShari = EdarateShahri::factory()->create(); // $cmmsMachine = CMMSMachine::factory()->create(); // $rahdar = Rahdaran::factory()->create(); // // $user = User::factory() // ->has(Permission::factory([ // 'name' => 'create-road-item' // ])) // ->create([ // 'city_id' => $city->id, // 'edarate_shahri_id' => $edarateShari->id // ]); // // $data = [ // 'start_point' => '12,12', // 'item_id' => $this->faker->numberBetween(1, 10), // 'sub_item_id' => $this->faker->numberBetween(1, 10), // 'amount' => $this->faker->numberBetween(1, 10), // 'activity_date' => $this->faker->date(), // 'activity_time' => $this->faker->date('H:i'), // 'before_image' => UploadedFile::fake()->create('image.jpg', 10), // 'after_image' => UploadedFile::fake()->create('image.jpg', 10), // 'cmms_machine_id' => $cmmsMachine->id, // 'rahdar_id' => $rahdar->id, // ]; // // InfoItem::factory()->create([ // 'item' => $data['item_id'], // 'sub_item' => $data['sub_item_id'], // 'needs_end_point' => 1 // ]); // // $response = $this->actingAs($user)->postJson(route('v3.road_items.store'), $data); // // $response->assertUnprocessable() // ->assertInvalid([ // 'end_point' => __('validation.required', ['attribute' => 'end_point']) // ]); // } // // public function test_before_image_required_when_info_item_needs_image(): void // { // $city = City::factory()->create(); // $edarateShari = EdarateShahri::factory()->create(); // $cmmsMachine = CMMSMachine::factory()->create(); // $rahdar = Rahdaran::factory()->create(); // // $user = User::factory() // ->has(Permission::factory([ // 'name' => 'create-road-item' // ])) // ->create([ // 'city_id' => $city->id, // 'edarate_shahri_id' => $edarateShari->id // ]); // // $data = [ // 'start_point' => '12,12', // 'item_id' => $this->faker->numberBetween(1, 10), // 'sub_item_id' => $this->faker->numberBetween(1, 10), // 'amount' => $this->faker->numberBetween(1, 10), // 'activity_date' => $this->faker->date(), // 'activity_time' => $this->faker->date('H:i'), // 'cmms_machine_id' => $cmmsMachine->id, // 'rahdar_id' => $rahdar->id, // ]; // // InfoItem::factory()->create([ // 'item' => $data['item_id'], // 'sub_item' => $data['sub_item_id'], // 'needs_image' => 1 // ]); // // $response = $this->actingAs($user)->postJson(route('v3.road_items.store'), $data); // // $response->assertUnprocessable() // ->assertInvalid([ // 'before_image' => __('validation.required', ['attribute' => 'before_image']) // ]); // } // // public function test_after_image_required_when_info_item_needs_image(): void // { // $city = City::factory()->create(); // $edarateShari = EdarateShahri::factory()->create(); // $cmmsMachine = CMMSMachine::factory()->create(); // $rahdar = Rahdaran::factory()->create(); // // $user = User::factory() // ->has(Permission::factory([ // 'name' => 'create-road-item' // ])) // ->create([ // 'city_id' => $city->id, // 'edarate_shahri_id' => $edarateShari->id // ]); // // $data = [ // 'start_point' => '12,12', // 'item_id' => $this->faker->numberBetween(1, 10), // 'sub_item_id' => $this->faker->numberBetween(1, 10), // 'amount' => $this->faker->numberBetween(1, 10), // 'activity_date' => $this->faker->date(), // 'activity_time' => $this->faker->date('H:i'), // 'cmms_machine_id' => $cmmsMachine->id, // 'rahdar_id' => $rahdar->id, // ]; // // InfoItem::factory()->create([ // 'item' => $data['item_id'], // 'sub_item' => $data['sub_item_id'], // 'needs_image' => 1 // ]); // // $response = $this->actingAs($user)->postJson(route('v3.road_items.store'), $data); // // $response->assertUnprocessable() // ->assertInvalid([ // 'after_image' => __('validation.required', ['attribute' => 'after_image']) // ]); // } // // public function test_can_store_a_new_road_item_project(): void // { // $city = City::factory()->create(); // $province = Province::factory()->create(); // $edarateShari = EdarateShahri::factory()->create(); // $cmmsMachine = CMMSMachine::factory()->create(); // $rahdar = Rahdaran::factory()->create(); // // LogList::factory()->create([ // 'log_unique_code' => 1154 // ]); // UserActivityLog::factory()->create(); // // $user = User::factory() // ->has(Permission::factory([ // 'name' => 'create-road-item' // ])) // ->create([ // 'city_id' => $city->id, // 'province_id' => $province->id, // 'edarate_shahri_id' => $edarateShari->id // ]); // // Storage::fake('public'); // // $this->mock(NominatimService::class, function (MockInterface $mock) { // $mock->shouldReceive('get_way_id_from_nominatim') // ->once() // ->andReturn(0); // }); // // $data = [ // 'start_point' => '12,12', // 'item_id' => $this->faker->numberBetween(1, 10), // 'sub_item_id' => $this->faker->numberBetween(1, 10), // 'amount' => $this->faker->numberBetween(1, 10), // 'activity_date' => $this->faker->date(), // 'activity_time' => $this->faker->date('H:i'), // 'before_image' => UploadedFile::fake()->create('image.jpg', 10), // 'after_image' => UploadedFile::fake()->create('image.jpg', 10), // 'cmms_machine_id' => $cmmsMachine->id, // 'rahdar_id' => $rahdar->id, // ]; // // $infoItem = InfoItem::factory()->create([ // 'item' => $data['item_id'], // 'sub_item' => $data['sub_item_id'], // 'needs_image' => 1 // ]); // // $response = $this->actingAs($user)->postJson(route('v3.road_items.store'), $data); // // $response->assertOk() // ->assertExactJson([ // 'message' => __('messages.successful') // ]); // // $this->assertDatabaseHas('road_items_projects', [ // 'start_lat' => 12, // 'start_lng' => 12, // 'item' => $data['item_id'], // 'sub_item' => $data['sub_item_id'], // 'province_id' => $province->id, // 'city_id' => $city->id, // 'user_name' => $user->name, // 'start_way_id' => 0, // 'info_id' => $infoItem->id, // 'status' => 0, // 'status_fa' => 'در حال بررسی', // 'edarat_id' => $user->edarate_shahri_id, // 'cmms_machine_id' => $cmmsMachine->id, // 'cmms_machine_code' => $cmmsMachine->machine_code, // 'rahdar_id' => $rahdar->id, // 'rahdar_code' => $rahdar->code // ]); // // $this->assertDatabaseHas('user_activity_logs', [ // 'user_id' => $user->id, // 'username' => $user->username, // 'log_unique_code' => 1154, // ]); // }