/** * @group fetch_visibility_level */ public function test_fetch_visibility_level() { $u = $this->factory->user->create(); $g = $this->factory->xprofile_group->create(); $f = $this->factory->xprofile_field->create(array('field_group_id' => $g)); $f_obj = new BP_XProfile_Field($f); $fields = array(0 => new stdClass()); $fields[0]->id = $f; $fields[0]->name = $f_obj->name; $fields[0]->description = $f_obj->description; $fields[0]->type = $f_obj->type; $fields[0]->group_id = $f_obj->group_id; $fields[0]->is_required = $f_obj->is_required; $fields[0]->data = new stdClass(); $fields[0]->data->value = 'foo'; $fields[0]->data->id = 123; // custom visibility enabled, but no fallback bp_xprofile_update_meta($f, 'field', 'default_visibility', 'adminsonly'); bp_xprofile_update_meta($f, 'field', 'allow_custom_visibility', 'enabled'); $found = BP_XProfile_Group::fetch_visibility_level($u, $fields); $expected = $fields; $expected[0]->visibility_level = 'adminsonly'; $this->assertSame($expected, $found); // custom visibility enabled, with user-provided value bp_xprofile_update_meta($f, 'field', 'default_visibility', 'adminsonly'); bp_xprofile_update_meta($f, 'field', 'allow_custom_visibility', 'enabled'); xprofile_set_field_visibility_level($f, $u, 'public'); $found = BP_XProfile_Group::fetch_visibility_level($u, $fields); $expected = $fields; $expected[0]->visibility_level = 'public'; $this->assertSame($expected, $found); // custom visibility disabled bp_xprofile_update_meta($f, 'field', 'default_visibility', 'adminsonly'); bp_xprofile_update_meta($f, 'field', 'allow_custom_visibility', 'disabled'); xprofile_set_field_visibility_level($f, $u, 'public'); $found = BP_XProfile_Group::fetch_visibility_level($u, $fields); $expected = $fields; $expected[0]->visibility_level = 'adminsonly'; $this->assertSame($expected, $found); }