Sha256: e4efeda73669fc979a782097c445fe0f188b54a34092c65c8b8f96013a6bf0b9

Contents?: true

Size: 1.45 KB

Versions: 22

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

require 'json'

module GitlabQuality
  module TestTooling
    module Report
      module Concerns
        module FindSetDri
          def set_dri_via_group(product_group, test)
            parse_json_with_sets
            fetch_stage_sets(test)

            return @sets.sample['username'] if @stage_sets.empty?

            fetch_group_sets(product_group)

            if @group_sets.empty?
              @stage_sets.sample['username']
            else
              @group_sets.sample['username']
            end
          end

          private

          def parse_json_with_sets
            response = Support::HttpRequest.make_http_request(
              url: 'https://gitlab-org.gitlab.io/gitlab-roulette/roulette.json'
            )
            @sets = JSON.parse(response.body).select { |user| user['role'].include?('software-engineer-in-test') }
          end

          def fetch_stage_sets(test)
            @stage_sets = @sets.select do |user|
              user['role'].include?(test.stage.split("_").map(&:capitalize).join(" "))
            end
          end

          def fetch_group_sets(product_group)
            @group_sets = @stage_sets.select do |user|
              user['role'].include?(product_group.split("_").map do |word|
                                      word == 'and' ? word : word.capitalize
                                    end.join(" "))
            end
          end
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
gitlab_quality-test_tooling-0.9.3 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.9.2 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.9.1 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.9.0 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.8.3 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.8.2 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.8.1 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.8.0 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.7.0 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.6.2 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.6.1 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.6.0 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.5.1 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.5.0 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.4.3 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.4.2 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.4.1 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.4.0 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.3.0 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb
gitlab_quality-test_tooling-0.2.2 lib/gitlab_quality/test_tooling/report/concerns/find_set_dri.rb