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:
Diffstat (limited to 'spec/rubocop/cop/gitlab/strong_memoize_attr_spec.rb')
-rw-r--r--spec/rubocop/cop/gitlab/strong_memoize_attr_spec.rb75
1 files changed, 75 insertions, 0 deletions
diff --git a/spec/rubocop/cop/gitlab/strong_memoize_attr_spec.rb b/spec/rubocop/cop/gitlab/strong_memoize_attr_spec.rb
new file mode 100644
index 00000000000..0ed699f4e8c
--- /dev/null
+++ b/spec/rubocop/cop/gitlab/strong_memoize_attr_spec.rb
@@ -0,0 +1,75 @@
+# frozen_string_literal: true
+
+require 'rubocop_spec_helper'
+require_relative '../../../../rubocop/cop/gitlab/strong_memoize_attr'
+
+RSpec.describe RuboCop::Cop::Gitlab::StrongMemoizeAttr do
+ context 'when strong_memoize() is the entire body of a method' do
+ context 'when the memoization name is the same as the method name' do
+ it 'registers an offense and autocorrects' do
+ expect_offense(<<~RUBY)
+ class Foo
+ def memoized_method
+ strong_memoize(:memoized_method) do
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Use `strong_memoize_attr`, instead of using `strong_memoize` directly
+ 'This is a memoized method'
+ end
+ end
+ end
+ RUBY
+
+ expect_correction(<<~RUBY)
+ class Foo
+ def memoized_method
+ 'This is a memoized method'
+ end
+ strong_memoize_attr :memoized_method
+ end
+ RUBY
+ end
+ end
+
+ context 'when the memoization name is different from the method name' do
+ it 'registers an offense and autocorrects' do
+ expect_offense(<<~RUBY)
+ class Foo
+ def enabled?
+ strong_memoize(:enabled) do
+ ^^^^^^^^^^^^^^^^^^^^^^^^ Use `strong_memoize_attr`, instead of using `strong_memoize` directly
+ true
+ end
+ end
+ end
+ RUBY
+
+ expect_correction(<<~RUBY)
+ class Foo
+ def enabled?
+ true
+ end
+ strong_memoize_attr :enabled?, :enabled
+ end
+ RUBY
+ end
+ end
+ end
+
+ context 'when strong_memoize() is not the entire body of the method' do
+ it 'registers an offense and does not autocorrect' do
+ expect_offense(<<~RUBY)
+ class Foo
+ def memoized_method
+ msg = 'This is a memoized method'
+
+ strong_memoize(:memoized_method) do
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Use `strong_memoize_attr`, instead of using `strong_memoize` directly
+ msg
+ end
+ end
+ end
+ RUBY
+
+ expect_no_corrections
+ end
+ end
+end