From a1dbbb07b4965279ae6140aabd252a5f02712448 Mon Sep 17 00:00:00 2001 From: riggraz Date: Wed, 18 Sep 2019 21:12:52 +0200 Subject: [PATCH] Random color assigned to new post statuses --- app/models/post_status.rb | 9 ++++++++- spec/models/post_status_spec.rb | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/models/post_status.rb b/app/models/post_status.rb index c94c3dfe..cbb421a7 100644 --- a/app/models/post_status.rb +++ b/app/models/post_status.rb @@ -1,5 +1,5 @@ class PostStatus < ApplicationRecord - after_initialize :set_order_to_last + after_initialize :set_random_color, :set_order_to_last validates :name, presence: true, uniqueness: true validates :color, format: { with: /\A#(?:[0-9a-fA-F]{3}){1,2}\z/ } @@ -12,6 +12,13 @@ class PostStatus < ApplicationRecord end end + def set_random_color + return unless new_record? + return unless color.nil? + + self.color = '#' + Random.bytes(3).unpack1('H*') + end + def set_order_to_last return unless new_record? return unless order.nil? diff --git a/spec/models/post_status_spec.rb b/spec/models/post_status_spec.rb index 764494dc..609b6263 100644 --- a/spec/models/post_status_spec.rb +++ b/spec/models/post_status_spec.rb @@ -62,6 +62,12 @@ RSpec.describe PostStatus, type: :model do expect(roadmap.second).to eq(post_status2) end + it 'automatically sets a random color if not specified' do + post_status1 = PostStatus.new + + expect(post_status1.color).to match(/\A#(?:[0-9a-fA-F]{3}){1,2}\z/) + end + it 'automatically sets order to last order if not specified' do order = 10 post_status1 = FactoryBot.create(:post_status, order: order)