Dalphi/dalphi

View on GitHub
spec/models/service_spec.rb

Summary

Maintainability
C
7 hrs
Test Coverage

Block has too many lines. [258/25]
Open

RSpec.describe Service, type: :model do
  before(:each) do
    @iterate_service = FactoryGirl.build(:iterate_service)
    @ml_service = FactoryGirl.build(:machine_learning_service)
    @merge_service = FactoryGirl.build(:merge_service)
Severity: Minor
Found in spec/models/service_spec.rb by rubocop

This cop checks if the length of a block exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable. The cop can be configured to ignore blocks passed to certain methods.

Block has too many lines. [66/25]
Open

  describe 'url' do
    it 'may not be nil' do
      @merge_service.url = nil
      expect(@merge_service).to be_invalid
    end
Severity: Minor
Found in spec/models/service_spec.rb by rubocop

This cop checks if the length of a block exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable. The cop can be configured to ignore blocks passed to certain methods.

File service_spec.rb has 264 lines of code (exceeds 250 allowed). Consider refactoring.
Open

require 'rails_helper'

RSpec.configure do |c|
  c.include ServiceHelper
end
Severity: Minor
Found in spec/models/service_spec.rb - About 2 hrs to fix

    Block has too many lines. [43/25]
    Open

      describe 'problem_id' do
        it 'may not be nil' do
          @merge_service.problem_id = nil
          expect(@merge_service).to be_invalid
        end
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    This cop checks if the length of a block exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable. The cop can be configured to ignore blocks passed to certain methods.

    Block has too many lines. [41/25]
    Open

      describe 'interface types' do
        it { should have_and_belong_to_many(:interface_types) }
    
        it 'can be empty for machine learning services' do
          @ml_service.interface_types.clear
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    This cop checks if the length of a block exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable. The cop can be configured to ignore blocks passed to certain methods.

    Block has too many lines. [28/25]
    Open

      describe 'role' do
        it 'may not be nil' do
          @merge_service.role = nil
          expect(@merge_service).to be_invalid
        end
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    This cop checks if the length of a block exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable. The cop can be configured to ignore blocks passed to certain methods.

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

      describe 'version' do
        it 'should not be nil' do
          @merge_service.version = nil
          expect(@merge_service).to be_invalid
        end
    Severity: Major
    Found in spec/models/service_spec.rb and 1 other location - About 1 hr to fix
    spec/models/interface_type_spec.rb on lines 89..117

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 70.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 4 locations. Consider refactoring.
    Open

      describe 'title' do
        it 'should not be nil' do
          @merge_service.title = nil
          expect(@merge_service).to be_invalid
        end
    Severity: Major
    Found in spec/models/service_spec.rb and 3 other locations - About 1 hr to fix
    spec/models/project_spec.rb on lines 12..30
    spec/models/project_spec.rb on lines 34..52
    spec/models/service_spec.rb on lines 58..76

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 48.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 4 locations. Consider refactoring.
    Open

      describe 'description' do
        it 'can be nil' do
          @merge_service.description = nil
          expect(@merge_service).to be_valid
        end
    Severity: Major
    Found in spec/models/service_spec.rb and 3 other locations - About 1 hr to fix
    spec/models/project_spec.rb on lines 12..30
    spec/models/project_spec.rb on lines 34..52
    spec/models/service_spec.rb on lines 216..234

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 48.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

        it 'cannot have one or more elements for machine learning service' do
          interface_type_1 = FactoryGirl.create(:interface_type, name: 'fancy_interface')
          @ml_service.interface_types << interface_type_1
          expect(@ml_service).to be_invalid
    
    
    Severity: Minor
    Found in spec/models/service_spec.rb and 1 other location - About 35 mins to fix
    spec/models/service_spec.rb on lines 294..302

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 34.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

        it 'cannot have one or more elements for merge service' do
          interface_type_1 = FactoryGirl.create(:interface_type, name: 'fancy_interface')
          @merge_service.interface_types << interface_type_1
          expect(@merge_service).to be_invalid
    
    
    Severity: Minor
    Found in spec/models/service_spec.rb and 1 other location - About 35 mins to fix
    spec/models/service_spec.rb on lines 278..286

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 34.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Line is too long. [87/80]
    Open

                                                                 name: 'regular_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Unnecessary spacing detected.
    Open

          @ml_service.interface_types  << interface_type_2
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    This cop checks for extra/unnecessary whitespace.

    Example:

    # good if AllowForAlignment is true
    name      = "RuboCop"
    # Some comment and an empty line
    
    website  += "/bbatsov/rubocop" unless cond
    puts        "rubocop"          if     debug
    
    # bad for any configuration
    set_app("RuboCop")
    website  = "https://github.com/bbatsov/rubocop"

    Extra blank line detected.
    Open

    
          interface_type_2 = FactoryGirl.create(:interface_type, name: 'regular_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    This cops checks for two or more consecutive blank lines.

    Example:

    # bad - It has two empty lines.
    some_method
    # one empty line
    # two empty lines
    some_method
    
    # good
    some_method
    # one empty line
    some_method

    Line is too long. [91/80]
    Open

        it 'can consist of a combination of letters, numbers, dots, hyphens and underscores' do
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Use normalcase for variable numbers.
    Open

          interface_type_1 = FactoryGirl.create(:interface_type, name: 'fancy_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    This cop makes sure that all numbered variables use the configured style, snakecase, normalcase or noninteger, for their numbering.

    Example: EnforcedStyle: snake_case

    # bad
    
    variable1 = 1
    
    # good
    
    variable_1 = 1

    Example: EnforcedStyle: normalcase (default)

    # bad
    
    variable_1 = 1
    
    # good
    
    variable1 = 1

    Example: EnforcedStyle: non_integer

    # bad
    
    variable1 = 1
    
    variable_1 = 1
    
    # good
    
    variableone = 1
    
    variable_one = 1

    Line is too long. [89/80]
    Open

            @merge_service.problem_id = (0...15).map { alphabet[rand(alphabet.length)] }.join
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Pass &:to_a as an argument to map instead of a block.
    Open

          alphabet = [('a'..'z'), ('A'..'Z'), (0..9)].map { |i| i.to_a }.flatten.concat(['_', '-', '.'])
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Use symbols as procs when possible.

    Example:

    # bad
    something.map { |s| s.upcase }
    
    # good
    something.map(&:upcase)

    Use normalcase for variable numbers.
    Open

          interface_type_2 = FactoryGirl.create(:interface_type, name: 'regular_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    This cop makes sure that all numbered variables use the configured style, snakecase, normalcase or noninteger, for their numbering.

    Example: EnforcedStyle: snake_case

    # bad
    
    variable1 = 1
    
    # good
    
    variable_1 = 1

    Example: EnforcedStyle: normalcase (default)

    # bad
    
    variable_1 = 1
    
    # good
    
    variable1 = 1

    Example: EnforcedStyle: non_integer

    # bad
    
    variable1 = 1
    
    variable_1 = 1
    
    # good
    
    variableone = 1
    
    variable_one = 1

    Operator << should be surrounded by a single space.
    Open

          @ml_service.interface_types  << interface_type_2
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Checks that operators have space around them, except for ** which should not have surrounding space.

    Example:

    # bad
    total = 3*4
    "apple"+"juice"
    my_number = 38/4
    a ** b
    
    # good
    total = 3 * 4
    "apple" + "juice"
    my_number = 38 / 4
    a**b

    Line is too long. [85/80]
    Open

          interface_type_1 = FactoryGirl.create(:interface_type, name: 'fancy_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Line is too long. [100/80]
    Open

          alphabet = [('a'..'z'), ('A'..'Z'), (0..9)].map { |i| i.to_a }.flatten.concat(['_', '-', '.'])
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Line is too long. [87/80]
    Open

          interface_type_2 = FactoryGirl.create(:interface_type, name: 'regular_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Use normalcase for variable numbers.
    Open

          interface_type_1 = FactoryGirl.create(:interface_type, name: 'fancy_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    This cop makes sure that all numbered variables use the configured style, snakecase, normalcase or noninteger, for their numbering.

    Example: EnforcedStyle: snake_case

    # bad
    
    variable1 = 1
    
    # good
    
    variable_1 = 1

    Example: EnforcedStyle: normalcase (default)

    # bad
    
    variable_1 = 1
    
    # good
    
    variable1 = 1

    Example: EnforcedStyle: non_integer

    # bad
    
    variable1 = 1
    
    variable_1 = 1
    
    # good
    
    variableone = 1
    
    variable_one = 1

    Line is too long. [85/80]
    Open

                                                                 name: 'fancy_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Align the parameters of a method call if they span more than one line.
    Open

                                                                name: 'fancy_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Here we check if the parameters on a multi-line method call or definition are aligned.

    Example: EnforcedStyle: withfirstparameter (default)

    # good
    
    foo :bar,
        :baz
    
    # bad
    
    foo :bar,
      :baz

    Example: EnforcedStyle: withfixedindentation

    # good
    
    foo :bar,
      :baz
    
    # bad
    
    foo :bar,
        :baz

    Use Integer#times for a simple loop which iterates a fixed number of times.
    Open

          (0..10).each do
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    This cop checks for loops which iterate a constant number of times, using a Range literal and #each. This can be done more readably using Integer#times.

    This check only applies if the block takes no parameters.

    Example:

    # bad
    (1..5).each { }
    
    # good
    5.times { }

    Example:

    # bad
    (0...10).each {}
    
    # good
    10.times {}

    Line is too long. [84/80]
    Open

                                                                name: 'fancy_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Line is too long. [81/80]
    Open

        it 'should be unique, so that two services with the same URL cannot exist' do
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Use normalcase for variable numbers.
    Open

          interface_type_2 = FactoryGirl.create(:interface_type, name: 'regular_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    This cop makes sure that all numbered variables use the configured style, snakecase, normalcase or noninteger, for their numbering.

    Example: EnforcedStyle: snake_case

    # bad
    
    variable1 = 1
    
    # good
    
    variable_1 = 1

    Example: EnforcedStyle: normalcase (default)

    # bad
    
    variable_1 = 1
    
    # good
    
    variable1 = 1

    Example: EnforcedStyle: non_integer

    # bad
    
    variable1 = 1
    
    variable_1 = 1
    
    # good
    
    variableone = 1
    
    variable_one = 1

    Extra blank line detected.
    Open

    
          interface_type_2 = FactoryGirl.create(:interface_type, name: 'regular_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    This cops checks for two or more consecutive blank lines.

    Example:

    # bad - It has two empty lines.
    some_method
    # one empty line
    # two empty lines
    some_method
    
    # good
    some_method
    # one empty line
    some_method

    Line is too long. [87/80]
    Open

          interface_type_2 = FactoryGirl.create(:interface_type, name: 'regular_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    Line is too long. [85/80]
    Open

          interface_type_1 = FactoryGirl.create(:interface_type, name: 'fancy_interface')
    Severity: Minor
    Found in spec/models/service_spec.rb by rubocop

    There are no issues that match your filters.

    Category
    Status