Skip to content

FactoryBot/CreateList: Prefer 1.times.map conflicts with Lint/UselessTimes #78

@taryneast

Description

@taryneast

The first line of this spec-code :

         [ create(:event_delivery, invoice: invoice, flat_rate: false, carer: carer) ] +
            create_list(:event_delivery, 2, invoice: invoice, flat_rate: true, carer: carer)

Triggered an offense of the form: FactoryBot/CreateList: Prefer 1.times.map.
and was listed as correctable.

However when correcting it, it triggered a different rubocop as follows:

Inspecting 1 file
W

Offenses:

<filename here>:270:11: C: [Corrected] FactoryBot/CreateList: Prefer 1.times.map.
          [create(:event_delivery, invoice: invoice, flat_rate: false, carer: carer)] +
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<filename here>:270:11: W: Lint/UselessTimes: Useless call to 1.times detected.
          1.times.map { create(:event_delivery, invoice: invoice, flat_rate: false, carer: carer) } +
          ^^^^^^^

1 file inspected, 2 offenses detected, 1 offense corrected

It seems that 1.times.map is not the right solution to this, but instead it should be:

         create_list(:event_delivery, 1, invoice: invoice, flat_rate: false, carer: carer) +
            create_list(:event_delivery, 2, invoice: invoice, flat_rate: true, carer: carer)

Which seems to make both cops happy.
Any chance we could update the cop to do this instead?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions