Add full_name to profile

This is needed for diaspora/diaspora#3648
This commit is contained in:
Benjamin Neff 2018-04-09 00:50:39 +02:00
parent 97888067e6
commit cce2c7fe31
No known key found for this signature in database
GPG key ID: 971464C3F1A90194
9 changed files with 23 additions and 0 deletions

View file

@ -30,6 +30,7 @@ only contain the base profile.
| Property | Type (Length) | Editable | Description |
| ------------------ | ---------------------------- |:--------:| -------------------------------------------------------------------------------------------------------- |
| `edited_at` | [Timestamp][timestamp] | ✔ | The timestamp when the profile was edited. |
| `full_name` | [Name][name] (70) | ✔ | The full name of the person. |
| `first_name` | [Name][name] (32) | ✔ | The first name of the person. |
| `last_name` | [Name][name] (32) | ✔ | The last name of the person. |
| `image_url` | [URL][url] (255) | ✔ | The URL to the big avatar (300x300) of the person. |
@ -50,6 +51,7 @@ only contain the base profile.
<profile>
<author>alice@example.org</author>
<edited_at>2018-01-23T01:19:56Z</edited_at>
<full_name>Alice Smith</full_name>
<first_name>Alice</first_name>
<last_name>Smith</last_name>
<image_url>https://example.org/images/thumb_large_a795f872c93309597345.jpg</image_url>

View file

@ -19,6 +19,10 @@ module DiasporaFederation
# @return [Time] edited time
property :edited_at, :timestamp, optional: true
# @!attribute [r] full_name
# @return [String] display name of the user
property :full_name, :string, optional: true
# @!attribute [r] first_name
# @deprecated We decided to only use one name field, these should be removed
# in later iterations (will affect older diaspora* installations).

View file

@ -247,6 +247,7 @@
"entity_data": {
"type": "object",
"properties": {
"full_name": { "type": ["string", "null"] },
"first_name": { "type": ["string", "null"] },
"last_name": { "type": ["string", "null"] },
"gender": { "type": ["string", "null"] },

View file

@ -56,6 +56,7 @@ module DiasporaFederation
Fabricator(:profile_entity, class_name: DiasporaFederation::Entities::Profile) do
author { Fabricate.sequence(:diaspora_id) }
edited_at { Time.now.utc }
full_name "my name"
first_name "my name"
last_name nil
image_url "/assets/user/default.png"

View file

@ -8,6 +8,7 @@ module DiasporaFederation
# The name must not contain a semicolon because of mentions.
# @{<full_name> ; <diaspora_id>}
rule :full_name, regular_expression: {regex: /\A[^;]{,70}\z/}
rule :first_name, regular_expression: {regex: /\A[^;]{,32}\z/}
rule :last_name, regular_expression: {regex: /\A[^;]{,32}\z/}

View file

@ -110,6 +110,7 @@ module DiasporaFederation
<author>#{data[:author]}</author>
<profile>
<author>#{data[:profile].author}</author>
<full_name>#{data[:profile].full_name}</full_name>
<first_name>#{data[:profile].first_name}</first_name>
<image_url>#{data[:profile].image_url}</image_url>
<image_url_medium>#{data[:profile].image_url}</image_url_medium>
@ -148,6 +149,7 @@ XML
<author>#{data[:author]}</author>
<profile>
<author>#{data[:profile].author}</author>
<full_name>#{data[:profile].full_name}</full_name>
<first_name>#{data[:profile].first_name}</first_name>
<image_url>#{data[:profile].image_url}</image_url>
<image_url_medium>#{data[:profile].image_url}</image_url_medium>
@ -185,6 +187,7 @@ XML
<author>#{data[:author]}</author>
<profile>
<author>#{data[:profile].author}</author>
<full_name>#{data[:profile].full_name}</full_name>
<first_name>#{data[:profile].first_name}</first_name>
<image_url>#{data[:profile].image_url}</image_url>
<image_url_medium>#{data[:profile].image_url}</image_url_medium>

View file

@ -10,6 +10,7 @@ module DiasporaFederation
<profile>
<author>#{data[:profile].author}</author>
<edited_at>#{data[:profile].edited_at.utc.iso8601}</edited_at>
<full_name>#{data[:profile].full_name}</full_name>
<first_name>#{data[:profile].first_name}</first_name>
<image_url>#{data[:profile].image_url}</image_url>
<image_url_medium>#{data[:profile].image_url}</image_url_medium>

View file

@ -6,6 +6,7 @@ module DiasporaFederation
<profile>
<author>#{data[:author]}</author>
<edited_at>#{data[:edited_at].utc.iso8601}</edited_at>
<full_name>#{data[:full_name]}</full_name>
<first_name>#{data[:first_name]}</first_name>
<image_url>#{data[:image_url]}</image_url>
<image_url_medium>#{data[:image_url]}</image_url_medium>
@ -27,6 +28,7 @@ XML
"entity_data": {
"author": "#{data[:author]}",
"edited_at": "#{data[:edited_at].iso8601}",
"full_name": "#{data[:full_name]}",
"first_name": "#{data[:first_name]}",
"image_url": "#{data[:image_url]}",
"image_url_medium": "#{data[:image_url]}",
@ -60,6 +62,7 @@ JSON
XML
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML(minimal_xml).root)
expect(parsed_instance.full_name).to be_nil
expect(parsed_instance.first_name).to be_nil
expect(parsed_instance.last_name).to be_nil
expect(parsed_instance.image_url).to be_nil

View file

@ -8,6 +8,13 @@ module DiasporaFederation
let(:property) { :author }
end
describe "#full_name" do
it_behaves_like "a name validator" do
let(:property) { :full_name }
let(:length) { 70 }
end
end
%i[first_name last_name].each do |prop|
describe "##{prop}" do
it_behaves_like "a name validator" do