setRawAttributes([ 'id' => 150, 'name' => '公开课程', 'start_date' => '2026-08-01', 'end_date' => '2026-08-02', 'content' => '公开介绍', 'publicize_content' => '宣传介绍', 'status' => 1, 'course_status' => 20, 'sign_status' => 10, 'admin_id' => 9, 'department_id' => 10, 'teacher_id' => 11, 'show_mobile' => 1, ]); $teacher = new Teacher(); $teacher->setRawAttributes([ 'id' => 11, 'name' => '张老师', 'mobile' => '13800138000', 'remark' => '内部备注', ]); $form = new CourseForm(); $form->setRawAttributes([ 'id' => 1, 'name' => '姓名', 'field' => 'name', 'edit_input' => 'input', 'rule' => 'required', 'sort' => 1, 'help' => '请填写姓名', 'select_item' => null, 'need_fill' => 1, 'belong_user' => 1, 'admin_id' => 9, 'department_id' => 10, ]); $type = new CourseType(); $type->setRawAttributes(['id' => 3, 'name' => '管理类', 'wait_tip' => '内部提示']); $course->setRelation('teacher', $teacher); $course->setRelation('courseForms', new Collection([$form])); $course->setRelation('typeDetail', $type); $payload = (new PublicCourseResource($course))->resolve(); $this->assertSame(150, $payload['id']); $this->assertSame('公开课程', $payload['name']); $this->assertSame('张老师', $payload['teacher']['name']); $this->assertArrayNotHasKey('mobile', $payload['teacher']); $this->assertArrayNotHasKey('remark', $payload['teacher']); $this->assertArrayNotHasKey('admin_id', $payload); $this->assertArrayNotHasKey('department_id', $payload); $this->assertArrayNotHasKey('teacher_id', $payload); $this->assertArrayNotHasKey('wait_tip', $payload['type_detail']); $this->assertArrayNotHasKey('admin_id', $payload['course_forms'][0]); $this->assertArrayNotHasKey('department_id', $payload['course_forms'][0]); $this->assertArrayNotHasKey('deleted_at', $payload['course_forms'][0]); } public function test_public_resource_does_not_include_model_appends(): void { $course = new Course(); $course->setRawAttributes([ 'id' => 1, 'name' => '公开课程', 'status' => 1, 'course_status' => 20, 'sign_status' => 10, ]); $payload = (new PublicCourseResource($course))->resolve(); $this->assertArrayNotHasKey('teacher_detail', $payload); $this->assertArrayNotHasKey('show_mobile_text', $payload); $this->assertSame([], $payload['publicize']); $this->assertArrayNotHasKey('qrcode', $payload); } }