Skip to content
代码片段 群组 项目
未验证 提交 ef9bb070 编辑于 作者: Hitesh Raghuvanshi's avatar Hitesh Raghuvanshi 提交者: GitLab
浏览文件

Merge branch '433179_add_params_to_member_approvals' into 'master'

No related branches found
No related tags found
无相关合并请求
...@@ -17,6 +17,7 @@ class MemberApproval < ApplicationRecord ...@@ -17,6 +17,7 @@ class MemberApproval < ApplicationRecord
validates :new_access_level, presence: true validates :new_access_level, presence: true
validates :user, presence: true validates :user, presence: true
validates :member_namespace, presence: true validates :member_namespace, presence: true
validates :metadata, json_schema: { filename: "members_approval_request_metadata" }
end end
end end
......
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"expires_at": {
"type": "string",
"oneOf": [
{
"format": "date"
},
{
"pattern": "^$"
}
]
},
"member_role_id": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
}
# frozen_string_literal: true
class AddMetadataToMemberApprovals < Gitlab::Database::Migration[2.2]
milestone '17.1'
enable_lock_retries!
def change
add_column :member_approvals, :metadata, :jsonb, default: {}, null: false
end
end
cd61987ea28b86a0c4280c8e0c743ecef2e1c6a45842281b4c7814ebe6e87057
\ No newline at end of file
...@@ -11247,7 +11247,8 @@ CREATE TABLE member_approvals ( ...@@ -11247,7 +11247,8 @@ CREATE TABLE member_approvals (
old_access_level integer, old_access_level integer,
status smallint DEFAULT 0 NOT NULL, status smallint DEFAULT 0 NOT NULL,
user_id bigint NOT NULL, user_id bigint NOT NULL,
member_role_id bigint member_role_id bigint,
metadata jsonb DEFAULT '{}'::jsonb NOT NULL
); );
   
CREATE SEQUENCE member_approvals_id_seq CREATE SEQUENCE member_approvals_id_seq
...@@ -15,5 +15,91 @@ ...@@ -15,5 +15,91 @@
it { is_expected.to validate_presence_of(:new_access_level) } it { is_expected.to validate_presence_of(:new_access_level) }
it { is_expected.to validate_presence_of(:user) } it { is_expected.to validate_presence_of(:user) }
it { is_expected.to validate_presence_of(:member_namespace) } it { is_expected.to validate_presence_of(:member_namespace) }
context 'with metadata' do
subject { build(:member_approval, metadata: attribute_mapping) }
context 'with valid JSON schemas' do
let(:attribute_mapping) do
{
expires_at: expiry,
member_role_id: nil
}
end
context 'with empty metadata' do
let(:attribute_mapping) { {} }
it { is_expected.to be_valid }
end
context 'with valid expiry' do
let(:expiry) { "1970-01-01" }
it { is_expected.to be_valid }
end
context 'with empty expiry' do
let(:expiry) { "" }
it { is_expected.to be_valid }
end
context 'with not null member_role_id' do
let(:attribute_mapping) do
{
member_role_id: 3
}
end
it { is_expected.to be_valid }
end
context 'when property has extra attributes' do
let(:attribute_mapping) do
{ access_level: 20 }
end
it { is_expected.to be_valid }
end
end
context 'with invalid JSON schemas' do
shared_examples 'is invalid record' do
it do
expect(subject).to be_invalid
expect(subject.errors.messages[:metadata]).to eq(['must be a valid json schema'])
end
end
context 'when property is not an object' do
let(:attribute_mapping) do
"That is not a valid schema"
end
it_behaves_like 'is invalid record'
end
context 'with invalid expiry' do
let(:attribute_mapping) do
{
expires_at: "1242"
}
end
it_behaves_like 'is invalid record'
end
context 'with member_role_id' do
let(:attribute_mapping) do
{
member_role_id: "some role"
}
end
it_behaves_like 'is invalid record'
end
end
end
end end
end end
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册