gitlab-org--gitlab-foss/app/finders
Douwe Maan 3f6f2bbe14 Merge branch 'create-todo-on-failing-build' into 'master'
Create a todo on failing MR build

Implements #14067. I worked on this with @DouweM (any mistakes are mine).

When a build fails for a commit, create a todo for the author of the merge request that commit is the HEAD of. If the commit isn't the HEAD commit of any MR, don't do anything. If there already is a todo for that user and MR, don't do anything.

Current limitations:
- This isn't configurable by project.
- The author of a merge request might not be the person who pushed the breaking commit.
- I haven't tested this with a working CI setup, just with the unit tests below and by modifying my DB directly.


See merge request !3177
2016-05-19 21:18:22 +00:00
..
contributed_projects_finder.rb Tweaks, refactoring, and specs 2016-03-20 21:04:07 +01:00
group_projects_finder.rb Add specs and add visibility level to admin groups 2016-03-21 19:11:24 -03:00
groups_finder.rb Tweaks, refactoring, and specs 2016-03-20 21:04:07 +01:00
issuable_finder.rb Make upcoming milestone work across projects 2016-05-16 10:25:24 +01:00
issues_finder.rb Restrict access to confidential issues 2016-03-17 20:55:38 -03:00
joined_groups_finder.rb Address feedback 2016-03-22 00:09:20 +01:00
merge_requests_finder.rb
milestones_finder.rb
notes_finder.rb Extract LegacyDiffNote out of Note 2016-05-13 17:31:43 -05:00
personal_projects_finder.rb Tweaks, refactoring, and specs 2016-03-20 21:04:07 +01:00
pipelines_finder.rb Improve pipelines design 2016-05-10 02:26:13 +03:00
projects_finder.rb Tweaks, refactoring, and specs 2016-03-20 21:04:07 +01:00
README.md
snippets_finder.rb Prevent private snippets in public/internal projects from being leaked via API 2016-04-25 12:02:06 -07:00
todos_finder.rb Create a todo on failing MR build 2016-05-17 10:17:45 +01:00
trending_projects_finder.rb
union_finder.rb Tweaks, refactoring, and specs 2016-03-20 21:04:07 +01:00

Finders

This type of classes responsible for collection items based on different conditions. To prevent lookup methods in models like this:

class Project
  def issues_for_user_filtered_by(user, filter)
    # A lot of logic not related to project model itself
  end
end

issues = project.issues_for_user_filtered_by(user, params)

Better use this:

issues = IssuesFinder.new(project, user, filter).execute

It will help keep models thiner.