diff options
Diffstat (limited to 'spec/lib/generators/gitlab')
4 files changed, 76 insertions, 6 deletions
diff --git a/spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb b/spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb index 25c4001a192..4e172dd32f0 100644 --- a/spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb +++ b/spec/lib/generators/gitlab/snowplow_event_definition_generator_spec.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true -require 'generator_helper' +require 'spec_helper' -RSpec.describe Gitlab::SnowplowEventDefinitionGenerator do +RSpec.describe Gitlab::SnowplowEventDefinitionGenerator, :silence_stdout do let(:ce_temp_dir) { Dir.mktmpdir } let(:ee_temp_dir) { Dir.mktmpdir } let(:generator_options) { { 'category' => 'Groups::EmailCampaignsController', 'action' => 'click' } } diff --git a/spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb b/spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb index 95a577e6334..e497551bc3f 100644 --- a/spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb +++ b/spec/lib/generators/gitlab/usage_metric_definition/redis_hll_generator_spec.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true -require 'generator_helper' +require 'spec_helper' -RSpec.describe Gitlab::UsageMetricDefinition::RedisHllGenerator do +RSpec.describe Gitlab::UsageMetricDefinition::RedisHllGenerator, :silence_stdout do include UsageDataHelpers let(:category) { 'test_category' } diff --git a/spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb b/spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb index 74aaf34e82c..05833cf4ec4 100644 --- a/spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb +++ b/spec/lib/generators/gitlab/usage_metric_definition_generator_spec.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true -require 'generator_helper' +require 'spec_helper' -RSpec.describe Gitlab::UsageMetricDefinitionGenerator do +RSpec.describe Gitlab::UsageMetricDefinitionGenerator, :silence_stdout do include UsageDataHelpers let(:key_path) { 'counts_weekly.test_metric' } diff --git a/spec/lib/generators/gitlab/usage_metric_generator_spec.rb b/spec/lib/generators/gitlab/usage_metric_generator_spec.rb new file mode 100644 index 00000000000..f38815acca6 --- /dev/null +++ b/spec/lib/generators/gitlab/usage_metric_generator_spec.rb @@ -0,0 +1,70 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::UsageMetricGenerator, :silence_stdout do + let(:ce_temp_dir) { Dir.mktmpdir } + let(:ee_temp_dir) { Dir.mktmpdir } + let(:spec_ce_temp_dir) { Dir.mktmpdir } + let(:spec_ee_temp_dir) { Dir.mktmpdir } + let(:args) { ['CountFoo'] } + let(:options) { { 'type' => 'redis_hll' } } + + before do + stub_const("#{described_class}::CE_DIR", ce_temp_dir) + stub_const("#{described_class}::EE_DIR", ee_temp_dir) + stub_const("#{described_class}::SPEC_CE_DIR", spec_ce_temp_dir) + stub_const("#{described_class}::SPEC_EE_DIR", spec_ee_temp_dir) + end + + after do + FileUtils.rm_rf([ce_temp_dir, ee_temp_dir, spec_ce_temp_dir, spec_ee_temp_dir]) + end + + def expect_generated_file(directory, file_name, content) + file_path = File.join(directory, file_name) + file = File.read(file_path) + + expect(file).to eq(content) + end + + describe 'Creating metric instrumentation files' do + let(:sample_metric_dir) { 'lib/generators/gitlab/usage_metric_generator' } + let(:sample_metric) { fixture_file(File.join(sample_metric_dir, 'sample_metric.rb')) } + let(:sample_spec) { fixture_file(File.join(sample_metric_dir, 'sample_metric_test.rb')) } + + it 'creates CE metric instrumentation files using the template' do + described_class.new(args, options).invoke_all + + expect_generated_file(ce_temp_dir, 'count_foo_metric.rb', sample_metric) + expect_generated_file(spec_ce_temp_dir, 'count_foo_metric_spec.rb', sample_spec) + end + + context 'with EE flag true' do + let(:options) { { 'type' => 'redis_hll', 'ee' => true } } + + it 'creates EE metric instrumentation files using the template' do + described_class.new(args, options).invoke_all + + expect_generated_file(ee_temp_dir, 'count_foo_metric.rb', sample_metric) + expect_generated_file(spec_ee_temp_dir, 'count_foo_metric_spec.rb', sample_spec) + end + end + + context 'with type option missing' do + let(:options) { {} } + + it 'raises an ArgumentError' do + expect { described_class.new(args, options).invoke_all }.to raise_error(ArgumentError, /Type is required/) + end + end + + context 'with type option value not included in approved superclasses' do + let(:options) { { 'type' => 'some_other_type' } } + + it 'raises an ArgumentError' do + expect { described_class.new(args, options).invoke_all }.to raise_error(ArgumentError, /Unknown type 'some_other_type'/) + end + end + end +end |