Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 18:44:42 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 18:44:42 +0300
commit4555e1b21c365ed8303ffb7a3325d773c9b8bf31 (patch)
tree5423a1c7516cffe36384133ade12572cf709398d /spec/lib/gitlab/class_attributes_spec.rb
parente570267f2f6b326480d284e0164a6464ba4081bc (diff)
Add latest changes from gitlab-org/gitlab@13-12-stable-eev13.12.0-rc42
Diffstat (limited to 'spec/lib/gitlab/class_attributes_spec.rb')
-rw-r--r--spec/lib/gitlab/class_attributes_spec.rb62
1 files changed, 44 insertions, 18 deletions
diff --git a/spec/lib/gitlab/class_attributes_spec.rb b/spec/lib/gitlab/class_attributes_spec.rb
index f8766f20495..ac2a18a1860 100644
--- a/spec/lib/gitlab/class_attributes_spec.rb
+++ b/spec/lib/gitlab/class_attributes_spec.rb
@@ -6,36 +6,62 @@ RSpec.describe Gitlab::ClassAttributes do
Class.new do
include Gitlab::ClassAttributes
- def self.get_attribute(name)
- get_class_attribute(name)
+ class << self
+ attr_reader :counter_1, :counter_2
+
+ # get_class_attribute and set_class_attribute are protected,
+ # hence those methods are for testing purpose
+ def get_attribute(name)
+ get_class_attribute(name)
+ end
+
+ def set_attribute(name, value)
+ set_class_attribute(name, value)
+ end
+ end
+
+ after_set_class_attribute do
+ @counter_1 ||= 0
+ @counter_1 += 1
end
- def self.set_attribute(name, value)
- class_attributes[name] = value
+ after_set_class_attribute do
+ @counter_2 ||= 0
+ @counter_2 += 2
end
end
end
let(:subclass) { Class.new(klass) }
- describe ".get_class_attribute" do
- it "returns values set on the class" do
- klass.set_attribute(:foo, :bar)
+ it "returns values set on the class" do
+ klass.set_attribute(:foo, :bar)
- expect(klass.get_attribute(:foo)).to eq(:bar)
- end
+ expect(klass.get_attribute(:foo)).to eq(:bar)
+ end
- it "returns values set on a superclass" do
- klass.set_attribute(:foo, :bar)
+ it "returns values set on a superclass" do
+ klass.set_attribute(:foo, :bar)
- expect(subclass.get_attribute(:foo)).to eq(:bar)
- end
+ expect(subclass.get_attribute(:foo)).to eq(:bar)
+ end
- it "returns values from the subclass over attributes from a superclass" do
- klass.set_attribute(:foo, :baz)
- subclass.set_attribute(:foo, :bar)
+ it "returns values from the subclass over attributes from a superclass" do
+ klass.set_attribute(:foo, :baz)
+ subclass.set_attribute(:foo, :bar)
- expect(subclass.get_attribute(:foo)).to eq(:bar)
- end
+ expect(klass.get_attribute(:foo)).to eq(:baz)
+ expect(subclass.get_attribute(:foo)).to eq(:bar)
+ end
+
+ it "triggers after hooks after set class values" do
+ expect(klass.counter_1).to be(nil)
+ expect(klass.counter_2).to be(nil)
+
+ klass.set_attribute(:foo, :bar)
+ klass.set_attribute(:foo, :bar)
+
+ expect(klass.counter_1).to eq(2)
+ expect(klass.counter_2).to eq(4)
end
end