Commit 7e5eab83 authored by Rémy Coutable's avatar Rémy Coutable

Merge remote-tracking branch 'origin/master' into ce-to-ee-2017-05-17

Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parents 524fa33a 97f17efa
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
}, },
"rules": { "rules": {
"filenames/match-regex": [2, "^[a-z0-9_]+$"], "filenames/match-regex": [2, "^[a-z0-9_]+$"],
"import/no-commonjs": "error",
"no-multiple-empty-lines": ["error", { "max": 1 }], "no-multiple-empty-lines": ["error", { "max": 1 }],
"promise/catch-or-return": "error" "promise/catch-or-return": "error"
} }
......
Please view this file on the master branch, on stable branches it's out of date. Please view this file on the master branch, on stable branches it's out of date.
## 9.2.0 (2017-05-22)
- Stop using sidekiq cron for push mirrors. !1616
- Inline RSS button with Export Issues button for mobile. !1637
- Highlight Contribution Analytics tab under groups when active, remove sub-nav items. !1677
- Uses etag polling for deployboards. !1713
- Support more elasticsearch versions. !1716
- Support advanced search queries using elasticsearch. !1770
- Remove superfluous wording on push rules. !1811
- Geo - Fix signing out from secondary node when "Remember me" option is checked. !1903
- Add global wiki search using Elasticsearch.
- Remove warning about protecting Service Desk email from form.
- Geo: Resync repositories that have been updated recently.
- Respect project features when searching alternative branches with elasticsearch enabled.
- Backfill projects where the last attempt to backfill failed.
- Fix MR approvals sentence when all approvers need to approve the MR.
- Fix for XSS in project mirror errors caused by Hamlit filter usage.
- Feature availability check using feature list AND license addons.
- Disable mirror workers for Geo secondaries.
## 9.1.4 (2017-05-12) ## 9.1.4 (2017-05-12)
- Remove warning about protecting Service Desk email from form. - Remove warning about protecting Service Desk email from form.
......
...@@ -2,6 +2,208 @@ ...@@ -2,6 +2,208 @@
documentation](doc/development/changelog.md) for instructions on adding your own documentation](doc/development/changelog.md) for instructions on adding your own
entry. entry.
## 9.2.0 (2017-05-22)
- API: Filter merge requests by milestone and labels. (10924)
- Reset New branch button when issue state changes. !5962 (winniehell)
- Frontend prevent authored votes. !6260 (Barthc)
- Change issues list in MR to natural sorting. !7110 (Jeff Stubler)
- Add animations to all the dropdowns. !8419
- Add update time to project lists. !8514 (Jeff Stubler)
- Remove view fragment caching for project READMEs. !8838
- API: Add parameters to allow filtering project pipelines. !9367 (dosuken123)
- Database SSL support for backup script. !9715 (Guillaume Simon)
- Fix UI inconsistency different files view (find file button missing). !9847 (TM Lee)
- Display slash commands outcome when previewing Markdown. !10054 (Rares Sfirlogea)
- Resolve "Add more tests for spec/controllers/projects/builds_controller_spec.rb". !10244 (dosuken123)
- Add keyboard edit shotcut for wiki. !10245 (George Andrinopoulos)
- Update issue board cards design. !10353
- Redirect old links after renaming a user/group/project. !10370
- Add system note on description change of issue/merge request. !10392 (blackst0ne)
- Improve validation of namespace & project paths. !10413
- Add board_move slash command. !10433 (Alex Sanford)
- Update all instances of the old loading icon. !10490 (Andrew Torres)
- Implement protected manual actions. !10494
- Implement search by extern_uid in Users API. !10509 (Robin Bobbitt)
- add support for .vue templates. !10517
- Only add newlines between multiple uploads. !10545
- Added balsamiq file viewer. !10564
- Remove unnecessary test helpers includes. !10567 (Jacopo Beschi @jacopo-beschi)
- Add tooltip to header of Done board. !10574 (Andy Brown)
- Fix redundant cache expiration in Repository. !10575 (blackst0ne)
- Add hashie-forbidden_attributes gem. !10579 (Andy Brown)
- Add spec for schema.rb. !10580 (blackst0ne)
- Keep webpack-dev-server process functional across branch changes. !10581
- Turns true value and false value database methods from instance to class methods. !10583
- Improve text on todo list when the todo action comes from yourself. !10594 (Jacopo Beschi @jacopo-beschi)
- Replace rake cache:clear:db with an automatic mechanism. !10597
- Remove heading and trailing spaces from label's color and title. !10603 (blackst0ne)
- Add webpack_bundle_tag helper to improve non-localhost GDK configurations. !10604
- Added quick-update (fade-in) animation to newly rendered notes. !10623
- Fix rendering emoji inside a string. !10647 (blackst0ne)
- Dockerfiles templates are imported from gitlab.com/gitlab-org/Dockerfile. !10663
- Add support for i18n on Cycle Analytics page. !10669
- Allow OAuth clients to push code. !10677
- Add configurable timeout for git fetch and clone operations. !10697
- Move labels of search results from bottom to title. !10705 (dr)
- Added build failures summary page for pipelines. !10719
- Expand/collapse button -> Change to make it look like a toggle. !10720 (Jacopo Beschi @jacopo-beschi)
- Decrease ABC threshold to 57.08. !10724 (Rydkin Maxim)
- Removed target blank from the metrics action inside the environments list. !10726
- Remove Repository#version method and tests. !10734
- Refactor Admin::GroupsController#members_update method and add some specs. !10735
- Refactor code that creates project/group members. !10735
- Add Slack slash command api to services documentation and rearrange order and cases. !10757 (TM Lee)
- Disable test settings on chat notification services when repository is empty. !10759
- Add support for instantly updating comments. !10760
- Show checkmark on current assignee in assignee dropdown. !10767
- Remove pipeline controls for last deployment from Environment monitoring page. !10769
- Pipeline view updates in near real time. !10777
- Fetch pipeline status in batch from redis. !10785
- Add username to activity atom feed. !10802 (winniehell)
- Support Markdown previews for personal snippets. !10810
- Implement ability to edit hooks. !10816 (Alexander Randa)
- Allow admins to sudo to blocked users via the API. !10842
- Don't display the is_admin flag in most API responses. !10846
- Refactor add_users method for project and group. !10850
- Pipeline schedules got a new and improved UI. !10853
- Fix updating merge_when_build_succeeds via merge API endpoint. !10873
- Add index on ci_builds.user_id. !10874 (blackst0ne)
- Improves test settings for chat notification services for empty projects. !10886
- Change Git commit command in Existing folder to git commit -m. !10900 (TM Lee)
- Show group name on flash container when group is created from Admin area. !10905
- Make markdown tables thinner. !10909 (blackst0ne)
- Ensure namespace owner is Master of project upon creation. !10910
- Updated CI status favicons to include the tanuki. !10923
- Decrease Cyclomatic Complexity threshold to 16. !10928 (Rydkin Maxim)
- Replace header merge request icon. !10932 (blackst0ne)
- Fix error on CI/CD Settings page related to invalid pipeline trigger. !10948 (dosuken123)
- rickettm Add repo parameter to gitaly:install and workhorse:install rake tasks. !10979 (M. Ricketts)
- Generate and handle a gl_repository param to pass around components. !10992
- Prevent 500 errors caused by testing the Prometheus service. !10994
- Disable navigation to Project-level pages configuration when Pages disabled. !11008
- Fix caching large snippet HTML content on MySQL databases. !11024
- Hide external environment URL button on terminal page if URL is not defined. !11029
- Always show the latest pipeline information in the commit box. !11038
- Fix misaligned buttons in wiki pages. !11043
- Colorize labels in search field. !11047
- Sort the network graph both by commit date and topographically. !11057
- Remove carriage returns from commit messages. !11077
- Add tooltips to user contribution graph key. !11138
- Add German translation for Cycle Analytics. !11161
- Fix skipped manual actions problem when processing the pipeline. !11164
- Fix cross referencing for private and internal projects. !11243
- Add state to MR widget that prevent merges when branch changes after page load. !11316
- Fixes the 500 when accessing customized appearance logos. !11479 (Alexis Reigel)
- Implement Users::BuildService. !30349 (George Andrinopoulos)
- Display comments for personal snippets.
- Support comments for personal snippets.
- Support uploaders for personal snippets comments.
- Handle incoming emails from aliases correctly.
- Re-rewrites pipeline graph in vue to support realtime data updates.
- Add issues/:iid/closed_by api endpoint. (mhasbini)
- Disallow merge requests from fork when source project have disabled merge requests. (mhasbini)
- Improved UX on project members settings view.
- Clear emoji search in awards menu after picking emoji.
- Cleanup markdown spacing.
- Separate CE params on Grape API.
- Allow to create new branch and empty WIP merge request from issue page.
- Prevent people from creating branches if they don't have persmission to push.
- Redesign auth 422 page.
- 29595 Update callout design.
- Detect already enabled DeployKeys in EnableDeployKeyService.
- Add transparent top-border to the hover state of done todos.
- Refactor all CI vue badges to use the same vue component.
- Update note edits in real-time.
- Add button to delete filters from filtered search bar.
- Added profile name to user dropdown.
- Display GitLab Pages status in Admin Dashboard.
- Fix label creation from issuable for subgroup projects.
- Vertically align mini pipeline stage container.
- prevent nav tabs from wrapping to new line.
- Fix environments vue architecture to match documentation.
- Enforce project features when searching blobs and wikis.
- fix inline diff copy in firefox.
- Note Ghost user and refer to user deletion documentation.
- Expose project statistics on single requests via the API.
- Job dropdown of pipeline mini graph updates in realtime when its opened.
- Add default margin-top to user request table on project members page.
- Add tooltips to note action buttons.
- Remove `#` being added on commit sha in MR widget.
- Remove spinner from loading comment.
- Fixes an issue preventing screen readers from reading some icons.
- Add metrics events for incoming emails.
- Load milestone tabs asynchronously to increase initial load performance.
- [BB Importer] Save the error trace and the whole raw document to debug problems easier.
- Fixed branches dropdown rendering branch names as HTML.
- Make Asciidoc & other markup go through pipeline to prevent XSS.
- Validate URLs in markdown using URI to detect the host correctly.
- Side-by-side view in commits correcly expands full window width.
- Deploy keys load are loaded async.
- Fixed spacing of discussion submit buttons.
- Add hostname to usage ping.
- Allow usage ping to be disabled completely in gitlab.yml.
- Add artifact file page that uses the blob viewer.
- Add breadcrumb, build header and pipelines submenu to artifacts browser.
- Show Raw button as Download for binary files.
- Add Source/Rendered switch to blobs for SVG, Markdown, Asciidoc and other text files that can be rendered.
- Catch all URI errors in ExternalLinkFilter.
- Allow commenting on older versions of the diff and comparisons between diff versions.
- Paste a copied MR source branch name as code when pasted into a GFM form.
- Fix commenting on an existing discussion on an unchanged line that is no longer in the diff.
- Link to outdated diff in older MR version from outdated diff discussion.
- Bump Sidekiq to 5.0.0.
- Use blob viewers for snippets.
- Add download button to project snippets.
- Display video blobs in-line like images.
- Gracefully handle failures for incoming emails which do not match on the To header, and have no References header.
- Added title to award emoji buttons.
- Fixed alignment of empty task list items.
- Removed the target=_blank from the monitoring component to prevent opening a new tab.
- Fix new admin integrations not taking effect on existing projects.
- Prevent further repository corruption when resolving conflicts from a fork where both the fork and upstream projects require housekeeping.
- Add missing project attributes to Import/Export.
- Remove N+1 queries in processing MR references.
- Fixed wrong method call on notify_post_receive. (Luigi Leoni)
- Fixed search terms not correctly highlighting.
- Refactored the anchor tag to remove the trailing space in the target branch.
- Prevent user profile tabs to display raw json when going back and forward in browser history.
- Add index to webhooks type column.
- Change line-height on build-header so elements don't overlap. (Dino Maric)
- Fix dead link to GDK on the README page. (Dino Maric)
- Fixued preview shortcut focusing wrong preview tab.
- Issue assignees are now removed without loading unnecessary data into memory.
- Refactor backup/restore docs.
- Fixed group issues assignee dropdown loading all users.
- Fix for XSS in project import view caused by Hamlit filter usage.
- Fixed avatar not display on issue boards when Gravatar is disabled.
- Fixed create new label form in issue boards sidebar.
- Add realtime descriptions to issue show pages.
- Issue API change: assignee_id parameter and assignee object in a response have been deprecated.
- Fixed bug where merge request JSON would be displayed.
- Fixed Prometheus monitoring graphs not showing empty states in certain scenarios.
- Removed the milestone references from the milestone views.
- Show sizes correctly in merge requests when diffs overflow.
- Fix notify_only_default_branch check for Slack service.
- Make the `gitlab:gitlab_shell:check` task check that the repositories storage path are owned by the `root` group.
- Optimise pipelines.json endpoint.
- Pass docsUrl to pipeline schedules callout component.
- Fixed alignment of CI icon in issues related branches.
- Set the issuable sidebar to remain closed for mobile devices.
- Sanitize submodule URLs before linking to them in the file tree view.
- Upgrade Sidekiq to 4.2.10.
- Cache Routable#full_path in RequestStore to reduce duplicate route loads.
- Refactor snippets finder & dont return internal snippets for external users.
- Fix snippets visibility for show action - external users can not see internal snippets.
- Store retried in database for CI Builds.
- repository browser: handle submodule urls that don't end with .git. (David Turner)
- Fixed tags sort from defaulting to empty.
- Do not show private groups on subgroups page if user doesn't have access to.
- Make MR link in build sidebar bold.
- Unassign all Issues and Merge Requests when member leaves a team.
- Fix preemptive scroll bar on user activity calendar.
- Pipeline chat notifications convert seconds to minutes and hours.
## 9.1.4 (2017-05-12) ## 9.1.4 (2017-05-12)
- Fix error on CI/CD Settings page related to invalid pipeline trigger. !10948 (dosuken123) - Fix error on CI/CD Settings page related to invalid pipeline trigger. !10948 (dosuken123)
......
...@@ -6,27 +6,27 @@ import Vue from 'vue'; ...@@ -6,27 +6,27 @@ import Vue from 'vue';
import VueResource from 'vue-resource'; import VueResource from 'vue-resource';
import FilteredSearchBoards from './filtered_search_boards'; import FilteredSearchBoards from './filtered_search_boards';
import eventHub from './eventhub'; import eventHub from './eventhub';
import './models/issue';
import './models/label';
import './models/list';
import './models/milestone';
import './models/assignee';
import './stores/boards_store';
import './stores/modal_store';
import './services/board_service';
import './mixins/modal_mixins';
import './mixins/sortable_default_options';
import './filters/due_date_filters';
import './components/board';
import './components/board_sidebar';
import './components/new_list_dropdown';
import './components/modal/index';
import '../vue_shared/vue_resource_interceptor';
import './components/boards_selector';
import collapseIcon from './icons/fullscreen_collapse.svg'; import collapseIcon from './icons/fullscreen_collapse.svg';
import expandIcon from './icons/fullscreen_expand.svg'; import expandIcon from './icons/fullscreen_expand.svg';
require('./models/issue');
require('./models/label');
require('./models/list');
require('./models/milestone');
require('./models/assignee');
require('./stores/boards_store');
require('./stores/modal_store');
require('./services/board_service');
require('./mixins/modal_mixins');
require('./mixins/sortable_default_options');
require('./filters/due_date_filters');
require('./components/board');
require('./components/boards_selector');
require('./components/board_sidebar');
require('./components/new_list_dropdown');
require('./components/modal/index');
require('../vue_shared/vue_resource_interceptor');
Vue.use(VueResource); Vue.use(VueResource);
$(() => { $(() => {
......
...@@ -3,9 +3,7 @@ ...@@ -3,9 +3,7 @@
import Vue from 'vue'; import Vue from 'vue';
import boardList from './board_list'; import boardList from './board_list';
import boardBlankState from './board_blank_state'; import boardBlankState from './board_blank_state';
import './board_delete';
require('./board_delete');
require('./board_list');
const Store = gl.issueBoards.BoardsStore; const Store = gl.issueBoards.BoardsStore;
......
require('./issue_card_inner'); import './issue_card_inner';
const Store = gl.issueBoards.BoardsStore; const Store = gl.issueBoards.BoardsStore;
......
/* global BoardService */ /* global BoardService */
import Vue from 'vue'; import Vue from 'vue';
import boardMilestoneSelect from './milestone_select';
const boardMilestoneSelect = require('./milestone_select'); import extraMilestones from '../mixins/extra_milestones';
const extraMilestones = require('../mixins/extra_milestones');
(() => { (() => {
window.gl = window.gl || {}; window.gl = window.gl || {};
......
...@@ -7,11 +7,9 @@ ...@@ -7,11 +7,9 @@
import Vue from 'vue'; import Vue from 'vue';
import eventHub from '../../sidebar/event_hub'; import eventHub from '../../sidebar/event_hub';
import AssigneeTitle from '../../sidebar/components/assignees/assignee_title'; import AssigneeTitle from '../../sidebar/components/assignees/assignee_title';
import Assignees from '../../sidebar/components/assignees/assignees'; import Assignees from '../../sidebar/components/assignees/assignees';
import './sidebar/remove_issue';
require('./sidebar/remove_issue');
const Store = gl.issueBoards.BoardsStore; const Store = gl.issueBoards.BoardsStore;
......
import Vue from 'vue'; import Vue from 'vue';
import './board_new_form';
require('./board_new_form');
(() => { (() => {
window.gl = window.gl || {}; window.gl = window.gl || {};
......
/* global BoardService */ /* global BoardService */
const extraMilestones = require('../mixins/extra_milestones'); import extraMilestones from '../mixins/extra_milestones';
module.exports = { export default {
props: { props: {
board: { board: {
type: Object, type: Object,
......
...@@ -2,8 +2,7 @@ ...@@ -2,8 +2,7 @@
/* global Flash */ /* global Flash */
import Vue from 'vue'; import Vue from 'vue';
import './lists_dropdown';
require('./lists_dropdown');
const ModalStore = gl.issueBoards.ModalStore; const ModalStore = gl.issueBoards.ModalStore;
......
import Vue from 'vue'; import Vue from 'vue';
import modalFilters from './filters'; import modalFilters from './filters';
import './tabs';
require('./tabs');
const ModalStore = gl.issueBoards.ModalStore; const ModalStore = gl.issueBoards.ModalStore;
......
...@@ -2,12 +2,19 @@ ...@@ -2,12 +2,19 @@
import Vue from 'vue'; import Vue from 'vue';
import queryData from '../../utils/query_data'; import queryData from '../../utils/query_data';
<<<<<<< HEAD
import loadingIcon from '../../../vue_shared/components/loading_icon.vue'; import loadingIcon from '../../../vue_shared/components/loading_icon.vue';
require('./header'); require('./header');
require('./list'); require('./list');
require('./footer'); require('./footer');
require('./empty_state'); require('./empty_state');
=======
import './header';
import './list';
import './footer';
import './empty_state';
>>>>>>> origin/master
const ModalStore = gl.issueBoards.ModalStore; const ModalStore = gl.issueBoards.ModalStore;
......
module.exports = [ export default [
{ {
id: null, id: null,
title: 'Any Milestone', title: 'Any Milestone',
......
/* eslint-disable class-methods-use-this, object-shorthand, no-unused-vars, no-use-before-define, no-new, max-len, no-restricted-syntax, guard-for-in, no-continue */ /* eslint-disable class-methods-use-this, object-shorthand, no-unused-vars, no-use-before-define, no-new, max-len, no-restricted-syntax, guard-for-in, no-continue */
require('./lib/utils/common_utils'); import './lib/utils/common_utils';
const gfmRules = { const gfmRules = {
// The filters referenced in lib/banzai/pipeline/gfm_pipeline.rb convert // The filters referenced in lib/banzai/pipeline/gfm_pipeline.rb convert
......
...@@ -4,18 +4,16 @@ import Vue from 'vue'; ...@@ -4,18 +4,16 @@ import Vue from 'vue';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import Translate from '../vue_shared/translate'; import Translate from '../vue_shared/translate';
import LimitWarningComponent from './components/limit_warning_component'; import LimitWarningComponent from './components/limit_warning_component';
import './components/stage_code_component';
require('./components/stage_code_component'); import './components/stage_issue_component';
require('./components/stage_issue_component'); import './components/stage_plan_component';
require('./components/stage_plan_component'); import './components/stage_production_component';
require('./components/stage_production_component'); import './components/stage_review_component';
require('./components/stage_review_component'); import './components/stage_staging_component';
require('./components/stage_staging_component'); import './components/stage_test_component';
require('./components/stage_test_component'); import './components/total_time_component';
require('./components/total_time_component'); import './cycle_analytics_service';
require('./cycle_analytics_service'); import './cycle_analytics_store';
require('./cycle_analytics_store');
require('./default_event_objects');
Vue.use(Translate); Vue.use(Translate);
......
/* eslint-disable no-param-reassign */ /* eslint-disable no-param-reassign */
import { __ } from '../locale';
require('../lib/utils/text_utility'); import { __ } from '../locale';
const DEFAULT_EVENT_OBJECTS = require('./default_event_objects'); import '../lib/utils/text_utility';
import DEFAULT_EVENT_OBJECTS from './default_event_objects';
const global = window.gl || (window.gl = {}); const global = window.gl || (window.gl = {});
global.cycleAnalytics = global.cycleAnalytics || {}; global.cycleAnalytics = global.cycleAnalytics || {};
......
module.exports = { export default {
issue: { issue: {
created_at: '', created_at: '',
url: '', url: '',
......
/* eslint-disable class-methods-use-this */ /* eslint-disable class-methods-use-this */
require('./lib/utils/url_utility'); import './lib/utils/url_utility';
const UNFOLD_COUNT = 20; const UNFOLD_COUNT = 20;
let isBound = false; let isBound = false;
......
...@@ -3,19 +3,18 @@ ...@@ -3,19 +3,18 @@
/* global ResolveServiceClass */ /* global ResolveServiceClass */
import Vue from 'vue'; import Vue from 'vue';
import './models/discussion';
require('./models/discussion'); import './models/note';
require('./models/note'); import './stores/comments';
require('./stores/comments'); import './services/resolve';
require('./services/resolve'); import './mixins/discussion';
require('./mixins/discussion'); import './components/comment_resolve_btn';
require('./components/comment_resolve_btn'); import './components/jump_to_discussion';
require('./components/jump_to_discussion'); import './components/resolve_btn';
require('./components/resolve_btn'); import './components/resolve_count';
require('./components/resolve_count'); import './components/resolve_discussion_btn';
require('./components/resolve_discussion_btn'); import './components/diff_note_avatars';
require('./components/diff_note_avatars'); import './components/new_issue_for_discussion';
require('./components/new_issue_for_discussion');
$(() => { $(() => {
const projectPath = document.querySelector('.merge-request').dataset.projectPath; const projectPath = document.querySelector('.merge-request').dataset.projectPath;
......
...@@ -3,11 +3,7 @@ ...@@ -3,11 +3,7 @@
/* global CommentsStore */ /* global CommentsStore */
import Vue from 'vue'; import Vue from 'vue';
import VueResource from 'vue-resource'; import '../../vue_shared/vue_resource_interceptor';
require('../../vue_shared/vue_resource_interceptor');
Vue.use(VueResource);
window.gl = window.gl || {}; window.gl = window.gl || {};
......
...@@ -36,14 +36,12 @@ ...@@ -36,14 +36,12 @@
/* global ShortcutsWiki */ /* global ShortcutsWiki */
import Issue from './issue'; import Issue from './issue';
import BindInOut from './behaviors/bind_in_out'; import BindInOut from './behaviors/bind_in_out';
import DeleteModal from './branches/branches_delete_modal'; import DeleteModal from './branches/branches_delete_modal';
import Group from './group'; import Group from './group';
import GroupName from './group_name'; import GroupName from './group_name';
import GroupsList from './groups_list'; import GroupsList from './groups_list';
import ProjectsList from './projects_list'; import ProjectsList from './projects_list';
import ApproversSelect from './approvers_select';
import MiniPipelineGraph from './mini_pipeline_graph_dropdown'; import MiniPipelineGraph from './mini_pipeline_graph_dropdown';
import BlobLinePermalinkUpdater from './blob/blob_line_permalink_updater'; import BlobLinePermalinkUpdater from './blob/blob_line_permalink_updater';
import Landing from './landing'; import Landing from './landing';
...@@ -59,8 +57,10 @@ import AutoWidthDropdownSelect from './issuable/auto_width_dropdown_select'; ...@@ -59,8 +57,10 @@ import AutoWidthDropdownSelect from './issuable/auto_width_dropdown_select';
import UsersSelect from './users_select'; import UsersSelect from './users_select';
import RefSelectDropdown from './ref_select_dropdown'; import RefSelectDropdown from './ref_select_dropdown';
import GfmAutoComplete from './gfm_auto_complete'; import GfmAutoComplete from './gfm_auto_complete';
import ShortcutsBlob from './shortcuts_blob';
const ShortcutsBlob = require('./shortcuts_blob'); // EE-only
import ApproversSelect from './approvers_select';
(function() { (function() {
var Dispatcher; var Dispatcher;
......
/* eslint-disable func-names, space-before-function-paren, wrap-iife, max-len, one-var, no-var, one-var-declaration-per-line, no-unused-vars, camelcase, quotes, no-useless-concat, prefer-template, quote-props, comma-dangle, object-shorthand, consistent-return, prefer-arrow-callback */ /* eslint-disable func-names, space-before-function-paren, wrap-iife, max-len, one-var, no-var, one-var-declaration-per-line, no-unused-vars, camelcase, quotes, no-useless-concat, prefer-template, quote-props, comma-dangle, object-shorthand, consistent-return, prefer-arrow-callback */
/* global Dropzone */ /* global Dropzone */
require('./preview_markdown'); import './preview_markdown';
window.DropzoneInput = (function() { window.DropzoneInput = (function() {
function DropzoneInput(form) { function DropzoneInput(form) {
......
import Filter from '~/droplab/plugins/filter'; import Filter from '~/droplab/plugins/filter';
import './filtered_search_dropdown';
require('./filtered_search_dropdown');
class DropdownHint extends gl.FilteredSearchDropdown { class DropdownHint extends gl.FilteredSearchDropdown {
constructor(droplab, dropdown, input, filter) { constructor(droplab, dropdown, input, filter) {
......
...@@ -2,8 +2,7 @@ ...@@ -2,8 +2,7 @@
import Ajax from '~/droplab/plugins/ajax'; import Ajax from '~/droplab/plugins/ajax';
import Filter from '~/droplab/plugins/filter'; import Filter from '~/droplab/plugins/filter';
import './filtered_search_dropdown';
require('./filtered_search_dropdown');
class DropdownNonUser extends gl.FilteredSearchDropdown { class DropdownNonUser extends gl.FilteredSearchDropdown {
constructor(droplab, dropdown, input, filter, endpoint, symbol) { constructor(droplab, dropdown, input, filter, endpoint, symbol) {
......
/* global Flash */ /* global Flash */
import AjaxFilter from '~/droplab/plugins/ajax_filter'; import AjaxFilter from '~/droplab/plugins/ajax_filter';
import './filtered_search_dropdown';
require('./filtered_search_dropdown');
class DropdownUser extends gl.FilteredSearchDropdown { class DropdownUser extends gl.FilteredSearchDropdown {
constructor(droplab, dropdown, input, filter) { constructor(droplab, dropdown, input, filter) {
......
require('./dropdown_hint'); import './dropdown_hint';
require('./dropdown_non_user'); import './dropdown_non_user';
require('./dropdown_user'); import './dropdown_user';
require('./dropdown_utils'); import './dropdown_utils';
require('./filtered_search_dropdown_manager'); import './filtered_search_dropdown_manager';
require('./filtered_search_dropdown'); import './filtered_search_dropdown';
require('./filtered_search_manager'); import './filtered_search_manager';
require('./filtered_search_token_keys'); import './filtered_search_token_keys';
require('./filtered_search_tokenizer'); import './filtered_search_tokenizer';
require('./filtered_search_visual_tokens'); import './filtered_search_visual_tokens';
require('./filtered_search_token_keys_with_weights'); // EE-only
import './filtered_search_token_keys_with_weights';
require('./filtered_search_token_keys'); import './filtered_search_token_keys';
const weightTokenKey = { const weightTokenKey = {
key: 'weight', key: 'weight',
......
require('./filtered_search_token_keys'); import './filtered_search_token_keys';
class FilteredSearchTokenizer { class FilteredSearchTokenizer {
static processTokens(input) { static processTokens(input) {
......
/* eslint-disable comma-dangle, class-methods-use-this, max-len, space-before-function-paren, arrow-parens, no-param-reassign */ /* eslint-disable comma-dangle, class-methods-use-this, max-len, space-before-function-paren, arrow-parens, no-param-reassign */
require('./gl_field_error'); import './gl_field_error';
const customValidationFlag = 'gl-field-error-ignore'; const customValidationFlag = 'gl-field-error-ignore';
......
/* eslint-disable func-names, space-before-function-paren, no-var, prefer-rest-params, wrap-iife, one-var, no-underscore-dangle, one-var-declaration-per-line, object-shorthand, no-unused-vars, no-new, comma-dangle, consistent-return, quotes, dot-notation, quote-props, prefer-arrow-callback, max-len */ /* eslint-disable func-names, space-before-function-paren, no-var, prefer-rest-params, wrap-iife, one-var, no-underscore-dangle, one-var-declaration-per-line, object-shorthand, no-unused-vars, no-new, comma-dangle, consistent-return, quotes, dot-notation, quote-props, prefer-arrow-callback, max-len */
/* global Flash */ /* global Flash */
import CreateMergeRequestDropdown from './create_merge_request_dropdown';
require('./flash'); import 'vendor/jquery.waitforimages';
require('~/lib/utils/text_utility'); import '~/lib/utils/text_utility';
require('vendor/jquery.waitforimages'); import './flash';
require('./task_list'); import './task_list';
import CreateMergeRequestDropdown from './create_merge_request_dropdown';
class Issue { class Issue {
constructor() { constructor() {
......
require('./export_csv_modal'); import './export_csv_modal';
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-param-reassign, no-cond-assign, comma-dangle, no-unused-expressions, prefer-template, max-len */ /* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-param-reassign, no-cond-assign, comma-dangle, no-unused-expressions, prefer-template, max-len */
/* global timeago */
/* global dateFormat */
window.timeago = require('timeago.js'); import timeago from 'timeago.js';
window.dateFormat = require('vendor/date.format'); import dateFormat from 'vendor/date.format';
window.timeago = timeago;
window.dateFormat = dateFormat;
(function() { (function() {
(function(w) { (function(w) {
...@@ -101,8 +102,7 @@ window.dateFormat = require('vendor/date.format'); ...@@ -101,8 +102,7 @@ window.dateFormat = require('vendor/date.format');
}; };
w.gl.utils.updateTimeagoText = function(el) { w.gl.utils.updateTimeagoText = function(el) {
const timeago = gl.utils.getTimeago(); const formattedDate = gl.utils.getTimeago().format(el.getAttribute('datetime'), 'gl_en');
const formattedDate = timeago.format(el.getAttribute('datetime'), 'gl_en');
if (el.textContent !== formattedDate) { if (el.textContent !== formattedDate) {
el.textContent = formattedDate; el.textContent = formattedDate;
......
...@@ -2,9 +2,7 @@ ...@@ -2,9 +2,7 @@
* exports HTTP status codes * exports HTTP status codes
*/ */
const statusCodes = { export default {
NO_CONTENT: 204, NO_CONTENT: 204,
OK: 200, OK: 200,
}; };
module.exports = statusCodes;
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-param-reassign, no-cond-assign, quotes, one-var, one-var-declaration-per-line, operator-assignment, no-else-return, prefer-template, prefer-arrow-callback, no-empty, max-len, consistent-return, no-unused-vars, no-return-assign, max-len, vars-on-top */ /* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-param-reassign, no-cond-assign, quotes, one-var, one-var-declaration-per-line, operator-assignment, no-else-return, prefer-template, prefer-arrow-callback, no-empty, max-len, consistent-return, no-unused-vars, no-return-assign, max-len, vars-on-top */
require('vendor/latinise');
import 'vendor/latinise';
var base; var base;
var w = window; var w = window;
......
...@@ -4,8 +4,6 @@ ...@@ -4,8 +4,6 @@
// //
// Handles single- and multi-line selection and highlight for blob views. // Handles single- and multi-line selection and highlight for blob views.
// //
require('vendor/jquery.scrollTo');
// //
// ### Example Markup // ### Example Markup
// //
......
...@@ -178,7 +178,7 @@ import './ldap_groups_select'; ...@@ -178,7 +178,7 @@ import './ldap_groups_select';
import './path_locks'; import './path_locks';
import './weight_select'; import './weight_select';
// eslint-disable-next-line global-require // eslint-disable-next-line global-require, import/no-commonjs
if (process.env.NODE_ENV !== 'production') require('./test_utils/'); if (process.env.NODE_ENV !== 'production') require('./test_utils/');
document.addEventListener('beforeunload', function () { document.addEventListener('beforeunload', function () {
......
...@@ -2,14 +2,13 @@ ...@@ -2,14 +2,13 @@
/* global Flash */ /* global Flash */
import Vue from 'vue'; import Vue from 'vue';
import './merge_conflict_store';
require('./merge_conflict_store'); import './merge_conflict_service';
require('./merge_conflict_service'); import './mixins/line_conflict_utils';
require('./mixins/line_conflict_utils'); import './mixins/line_conflict_actions';
require('./mixins/line_conflict_actions'); import './components/diff_file_editor';
require('./components/diff_file_editor'); import './components/inline_conflict_lines';
require('./components/inline_conflict_lines'); import './components/parallel_conflict_lines';
require('./components/parallel_conflict_lines');
$(() => { $(() => {
const INTERACTIVE_RESOLVE_MODE = 'interactive'; const INTERACTIVE_RESOLVE_MODE = 'interactive';
......
/* eslint-disable func-names, space-before-function-paren, no-var, prefer-rest-params, wrap-iife, quotes, no-underscore-dangle, one-var, one-var-declaration-per-line, consistent-return, dot-notation, quote-props, comma-dangle, object-shorthand, max-len, prefer-arrow-callback */ /* eslint-disable func-names, space-before-function-paren, no-var, prefer-rest-params, wrap-iife, quotes, no-underscore-dangle, one-var, one-var-declaration-per-line, consistent-return, dot-notation, quote-props, comma-dangle, object-shorthand, max-len, prefer-arrow-callback */
/* global MergeRequestTabs */ /* global MergeRequestTabs */
require('vendor/jquery.waitforimages'); import 'vendor/jquery.waitforimages';
require('./task_list'); import './task_list';
require('./merge_request_tabs'); import './merge_request_tabs';
(function() { (function() {
this.MergeRequest = (function() { this.MergeRequest = (function() {
......
...@@ -6,15 +6,17 @@ ...@@ -6,15 +6,17 @@
import $ from 'jquery'; import $ from 'jquery';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import autosize from 'vendor/autosize';
import Dropzone from 'dropzone';
import 'vendor/jquery.caret'; // required by jquery.atwho
import 'vendor/jquery.atwho';
import CommentTypeToggle from './comment_type_toggle'; import CommentTypeToggle from './comment_type_toggle';
import './autosave';
import './dropzone_input';
import './task_list';
require('./autosave'); window.autosize = autosize;
window.autosize = require('vendor/autosize'); window.Dropzone = Dropzone;
window.Dropzone = require('dropzone');
require('./dropzone_input');
require('vendor/jquery.caret'); // required by jquery.atwho
require('vendor/jquery.atwho');
require('./task_list');
const normalizeNewlines = function(str) { const normalizeNewlines = function(str) {
return str.replace(/\r\n/g, '\n'); return str.replace(/\r\n/g, '\n');
......
require('~/lib/utils/common_utils'); import '~/lib/utils/common_utils';
require('~/lib/utils/url_utility'); import '~/lib/utils/url_utility';
(() => { (() => {
const ENDLESS_SCROLL_BOTTOM_PX = 400; const ENDLESS_SCROLL_BOTTOM_PX = 400;
......
require('./gl_crop'); import './gl_crop';
require('./profile'); import './profile';
require('./protected_branch_access_dropdown'); import './protected_branch_access_dropdown';
require('./protected_branch_create'); import './protected_branch_create';
require('./protected_branch_dropdown'); import './protected_branch_dropdown';
require('./protected_branch_edit'); import './protected_branch_edit';
require('./protected_branch_edit_list'); import './protected_branch_edit_list';
/* global Mousetrap */ /* global Mousetrap */
/* global Shortcuts */ /* global Shortcuts */
require('./shortcuts'); import './shortcuts';
const defaults = { const defaults = {
skipResetBindings: false, skipResetBindings: false,
fileBlobPermalinkUrl: null, fileBlobPermalinkUrl: null,
}; };
class ShortcutsBlob extends Shortcuts { export default class ShortcutsBlob extends Shortcuts {
constructor(opts) { constructor(opts) {
const options = Object.assign({}, defaults, opts); const options = Object.assign({}, defaults, opts);
super(options.skipResetBindings); super(options.skipResetBindings);
...@@ -25,5 +25,3 @@ class ShortcutsBlob extends Shortcuts { ...@@ -25,5 +25,3 @@ class ShortcutsBlob extends Shortcuts {
} }
} }
} }
module.exports = ShortcutsBlob;
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* global Mousetrap */ /* global Mousetrap */
/* global ShortcutsNavigation */ /* global ShortcutsNavigation */
require('./shortcuts_navigation'); import './shortcuts_navigation';
(function() { (function() {
var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
......
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
/* global ShortcutsNavigation */ /* global ShortcutsNavigation */
/* global sidebar */ /* global sidebar */
require('mousetrap'); import 'mousetrap';
require('./shortcuts_navigation'); import './shortcuts_navigation';
(function() { (function() {
var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
......
/* eslint-disable func-names, space-before-function-paren, max-len, no-var, one-var, no-restricted-syntax, vars-on-top, no-use-before-define, no-param-reassign, new-cap, no-underscore-dangle, wrap-iife, prefer-arrow-callback, consistent-return, no-return-assign */ /* eslint-disable func-names, space-before-function-paren, max-len, no-var, one-var, no-restricted-syntax, vars-on-top, no-use-before-define, no-param-reassign, new-cap, no-underscore-dangle, wrap-iife, prefer-arrow-callback, consistent-return, no-return-assign */
/* global Mousetrap */ /* global Mousetrap */
/* global Shortcuts */ /* global Shortcuts */
import findAndFollowLink from './shortcuts_dashboard_navigation';
require('./shortcuts'); import findAndFollowLink from './shortcuts_dashboard_navigation';
import './shortcuts';
(function() { (function() {
var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/* global Mousetrap */ /* global Mousetrap */
/* global ShortcutsNavigation */ /* global ShortcutsNavigation */
require('./shortcuts_navigation'); import './shortcuts_navigation';
(function() { (function() {
var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
......
/* global Flash */ /* global Flash */
require('vendor/task_list');
import 'vendor/task_list';
class TaskList { class TaskList {
constructor(options = {}) { constructor(options = {}) {
......
require('vendor/xterm/encoding-indexes.js'); import 'vendor/xterm/encoding-indexes';
require('vendor/xterm/encoding.js'); import 'vendor/xterm/encoding';
window.Terminal = require('vendor/xterm/xterm.js'); import Terminal from 'vendor/xterm/xterm';
require('vendor/xterm/fit.js'); import 'vendor/xterm/fit';
require('./terminal.js'); import './terminal';
window.Terminal = Terminal;
$(() => new gl.Terminal({ selector: '#terminal' })); $(() => new gl.Terminal({ selector: '#terminal' }));
class VersionCheckImage { export default class VersionCheckImage {
static bindErrorEvent(imageElement) { static bindErrorEvent(imageElement) {
imageElement.off('error').on('error', () => imageElement.hide()); imageElement.off('error').on('error', () => imageElement.hide());
} }
...@@ -6,5 +6,3 @@ class VersionCheckImage { ...@@ -6,5 +6,3 @@ class VersionCheckImage {
window.gl = window.gl || {}; window.gl = window.gl || {};
gl.VersionCheckImage = VersionCheckImage; gl.VersionCheckImage = VersionCheckImage;
module.exports = VersionCheckImage;
require('../../lib/utils/text_utility'); import '../../lib/utils/text_utility';
export default { export default {
name: 'MRWidgetHeader', name: 'MRWidgetHeader',
......
/* eslint-disable no-param-reassign */ /* eslint-disable no-param-reassign */
/* global Breakpoints */ /* global Breakpoints */
require('./breakpoints'); import 'vendor/jquery.nicescroll';
require('vendor/jquery.nicescroll'); import './breakpoints';
((global) => { ((global) => {
class Wikis { class Wikis {
......
/* eslint-disable func-names, space-before-function-paren, wrap-iife, prefer-arrow-callback, no-unused-vars, consistent-return, camelcase, comma-dangle, max-len */ /* eslint-disable func-names, space-before-function-paren, wrap-iife, prefer-arrow-callback, no-unused-vars, consistent-return, camelcase, comma-dangle, max-len */
/* global Dropzone */
/* global Mousetrap */ /* global Mousetrap */
// Zen Mode (full screen) textarea // Zen Mode (full screen) textarea
...@@ -7,10 +6,12 @@ ...@@ -7,10 +6,12 @@
/*= provides zen_mode:enter */ /*= provides zen_mode:enter */
/*= provides zen_mode:leave */ /*= provides zen_mode:leave */
require('vendor/jquery.scrollTo'); import 'vendor/jquery.scrollTo';
window.Dropzone = require('dropzone'); import Dropzone from 'dropzone';
require('mousetrap'); import 'mousetrap';
require('mousetrap/plugins/pause/mousetrap-pause'); import 'mousetrap/plugins/pause/mousetrap-pause';
window.Dropzone = Dropzone;
// //
// ### Events // ### Events
......
...@@ -147,7 +147,7 @@ module Elastic ...@@ -147,7 +147,7 @@ module Elastic
query_hash query_hash
end end
def iid_query_hash(query_hash, iid) def iid_query_hash(iid)
{ {
query: { query: {
bool: { bool: {
......
...@@ -49,7 +49,7 @@ module Elastic ...@@ -49,7 +49,7 @@ module Elastic
def self.elastic_search(query, options: {}) def self.elastic_search(query, options: {})
query_hash = query_hash =
if query =~ /#(\d+)\z/ if query =~ /#(\d+)\z/
iid_query_hash(query_hash, $1) iid_query_hash($1)
else else
basic_query_hash(%w(title^2 description), query) basic_query_hash(%w(title^2 description), query)
end end
......
...@@ -61,8 +61,8 @@ module Elastic ...@@ -61,8 +61,8 @@ module Elastic
def self.elastic_search(query, options: {}) def self.elastic_search(query, options: {})
query_hash = query_hash =
if query =~ /#(\d+)\z/ if query =~ /\!(\d+)\z/
iid_query_hash(query_hash, $1) iid_query_hash($1)
else else
basic_query_hash(%w(title^2 description), query) basic_query_hash(%w(title^2 description), query)
end end
......
...@@ -15,5 +15,5 @@ ...@@ -15,5 +15,5 @@
= button_tag "Search", class: "btn btn-success btn-search" = button_tag "Search", class: "btn btn-success btn-search"
- if current_application_settings.elasticsearch_search? - if current_application_settings.elasticsearch_search?
.help-block .help-block
= link_to 'Advanced search functionality', help_page_path('user/search/advanced-search-syntax.md'), target: '_blank' = link_to 'Advanced search functionality', help_page_path('user/search/advanced_search_syntax.md'), target: '_blank'
is enabled. is enabled.
---
title: Support advanced search queries using elasticsearch
merge_request: 1770
author:
---
title: Add global wiki search using Elasticsearch
merge_request:
author:
---
title: Inline RSS button with Export Issues button for mobile
merge_request: 1637
author:
---
title: Highlight Contribution Analytics tab under groups when active, remove sub-nav
items.
merge_request: 1677
author:
---
title: Uses etag polling for deployboards
merge_request: 1713
author:
---
title: Support more elasticsearch versions
merge_request: 1716
author:
---
title: 'Geo: Resync repositories that have been updated recently'
merge_request:
author:
---
title: Geo - Fix signing out from secondary node when "Remember me" option is checked
merge_request: 1903
author:
---
title: Respect project features when searching alternative branches with elasticsearch
enabled
merge_request:
author:
---
title: Fix MR approvals sentence when all approvers need to approve the MR
merge_request:
author:
---
title: Fix for XSS in project mirror errors caused by Hamlit filter usage.
merge_request:
author:
---
title: Feature availability check using feature list AND license addons
merge_request:
author:
---
title: 'Remove superfluous wording on push rules'
merge_request: 1811
---
title: Disable mirror workers for Geo secondaries
merge_request:
author:
---
title: Stop using sidekiq cron for push mirrors
merge_request: 1616
author:
---
title: Support Markdown previews for personal snippets
merge_request: 10810
author:
---
title: Display comments for personal snippets
merge_request:
author:
---
title: Support comments for personal snippets
merge_request:
author:
---
title: Support uploaders for personal snippets comments
merge_request:
author:
---
title: Database SSL support for backup script.
merge_request: 9715
author: Guillaume Simon
---
title: Redirect old links after renaming a user/group/project.
merge_request: 10370
author:
---
title: Implement ability to edit hooks
merge_request: 10816
author: Alexander Randa
---
title: Change issues list in MR to natural sorting
merge_request: 7110
author: Jeff Stubler
---
title: Show group name on flash container when group is created from Admin area.
merge_request: 10905
author:
---
title: Update all instances of the old loading icon
merge_request: 10490
author: Andrew Torres
---
title: Fix UI inconsistency different files view (find file button missing)
merge_request: 9847
author: TM Lee
---
title: Add tooltips to user contribution graph key
merge_request: 11138
author:
---
title: Added build failures summary page for pipelines
merge_request: 10719
author:
---
title: Re-rewrites pipeline graph in vue to support realtime data updates
merge_request:
author:
---
title: Add animations to all the dropdowns
merge_request: 8419
author:
---
title: Add issues/:iid/closed_by api endpoint
merge_request:
author: mhasbini
---
title: Disallow merge requests from fork when source project have disabled merge requests
merge_request:
author: mhasbini
---
title: Add update time to project lists.
merge_request: 8514
author: Jeff Stubler
---
title: 'Remove view fragment caching for project READMEs'
merge_request: 8838
author:
---
title: Improved UX on project members settings view
merge_request:
author:
---
title: Fetch pipeline status in batch from redis
merge_request: 10785
author:
---
title: Add support for instantly updating comments
merge_request: 10760
author:
---
title: Clear emoji search in awards menu after picking emoji
merge_request:
author:
---
title: Add webpack_bundle_tag helper to improve non-localhost GDK configurations
merge_request: 10604
author:
---
title: Cleanup markdown spacing
merge_request:
author:
---
title: Separate CE params on Grape API
merge_request:
author:
---
title: Improve text on todo list when the todo action comes from yourself
merge_request: 10594
author: Jacopo Beschi @jacopo-beschi
---
title: Decrease ABC threshold to 57.08
merge_request: 10724
author: Rydkin Maxim
---
title: 'API: Add parameters to allow filtering project pipelines'
merge_request: 9367
author: dosuken123
---
title: Add board_move slash command
merge_request: 10433
author: Alex Sanford
---
title: Allow to create new branch and empty WIP merge request from issue page
merge_request:
author:
---
title: Expand/collapse button -> Change to make it look like a toggle
merge_request: 10720
author: Jacopo Beschi @jacopo-beschi
---
title: Prevent people from creating branches if they don't have persmission to push
merge_request:
author:
---
title: Turns true value and false value database methods from instance to class methods
merge_request: 10583
author:
---
title: Redesign auth 422 page
merge_request:
author:
---
title: Resolve "Add more tests for spec/controllers/projects/builds_controller_spec.rb"
merge_request: 10244
author: dosuken123
---
title: Allow admins to sudo to blocked users via the API
merge_request: 10842
author:
---
title: 29595 Update callout design
merge_request:
author:
---
title: Detect already enabled DeployKeys in EnableDeployKeyService
merge_request:
author:
---
title: Remove unnecessary test helpers includes
merge_request: 10567
author: Jacopo Beschi @jacopo-beschi
---
title: Remove pipeline controls for last deployment from Environment monitoring page
merge_request: 10769
author:
---
title: Add Slack slash command api to services documentation and rearrange order and
cases
merge_request: 10757
author: TM Lee
---
title: Add keyboard edit shotcut for wiki
merge_request: 10245
author: George Andrinopoulos
---
title: Don't display the is_admin flag in most API responses
merge_request: 10846
author:
---
title: Generate and handle a gl_repository param to pass around components
merge_request: 10992
author:
---
title: Added quick-update (fade-in) animation to newly rendered notes
merge_request: 10623
author:
---
title: Add transparent top-border to the hover state of done todos
merge_request:
author:
---
title: Improve validation of namespace & project paths
merge_request: 10413
author:
---
title: Refactor all CI vue badges to use the same vue component
merge_request:
author:
---
title: Allow OAuth clients to push code
merge_request: 10677
author:
---
title: Implement Users::BuildService
merge_request: 30349
author: George Andrinopoulos
---
title: Update note edits in real-time
merge_request:
author:
---
title: Add button to delete filters from filtered search bar
merge_request:
author:
---
title: Added profile name to user dropdown
merge_request:
author:
---
title: Disable navigation to Project-level pages configuration when Pages disabled
merge_request: 11008
author:
---
title: Display GitLab Pages status in Admin Dashboard
merge_request:
author:
---
title: Fix label creation from issuable for subgroup projects
merge_request:
author:
---
title: Replace rake cache:clear:db with an automatic mechanism
merge_request: 10597
author:
---
title: Keep webpack-dev-server process functional across branch changes
merge_request: 10581
author:
---
title: Vertically align mini pipeline stage container
merge_request:
author:
---
title: Disable test settings on chat notification services when repository is empty
merge_request: 10759
author:
---
title: Show checkmark on current assignee in assignee dropdown
merge_request: 10767
author:
---
title: Improves test settings for chat notification services for empty projects
merge_request: 10886
author:
---
title: Fix environments vue architecture to match documentation
merge_request:
author:
---
title: Enforce project features when searching blobs and wikis
merge_request:
author:
---
title: fix inline diff copy in firefox
merge_request:
author:
---
title: Change Git commit command in Existing folder to git commit -m
merge_request: 10900
author: TM Lee
---
title: Decrease Cyclomatic Complexity threshold to 16
merge_request: 10928
author: Rydkin Maxim
---
title: Note Ghost user and refer to user deletion documentation
merge_request:
author:
---
title: Expose project statistics on single requests via the API
merge_request:
author:
---
title: Job dropdown of pipeline mini graph updates in realtime when its opened
merge_request:
author:
---
title: rickettm Add repo parameter to gitaly:install and workhorse:install rake tasks
merge_request: 10979
author: M. Ricketts
---
title: Fix caching large snippet HTML content on MySQL databases
merge_request: 11024
author:
---
title: Remove carriage returns from commit messages
merge_request: 11077
author:
---
title: Add default margin-top to user request table on project members page
merge_request:
author:
---
title: Fix misaligned buttons in wiki pages
merge_request: 11043
author:
---
title: Add tooltips to note action buttons
merge_request:
author:
---
title: Remove `#` being added on commit sha in MR widget
merge_request:
author:
---
title: 'Frontend prevent authored votes'
merge_request: 6260
author: Barthc
---
title: Fixes an issue preventing screen readers from reading some icons
merge_request:
author:
---
title: Add metrics events for incoming emails
merge_request:
author:
---
title: Updated CI status favicons to include the tanuki
merge_request: 10923
author:
---
title: Add username to activity atom feed
merge_request: 10802
author: winniehell
---
title: add support for .vue templates
merge_request: 10517
author:
---
title: Add index on ci_builds.user_id
merge_request: 10874
author: blackst0ne
---
title: Add system note on description change of issue/merge request
merge_request: 10392
author: blackst0ne
---
title: Always show the latest pipeline information in the commit box
merge_request: 11038
author:
---
title: Load milestone tabs asynchronously to increase initial load performance
merge_request:
author:
---
title: Added balsamiq file viewer
merge_request: 10564
author:
---
title: "[BB Importer] Save the error trace and the whole raw document to debug problems
easier"
merge_request:
author:
---
title: Add tooltip to header of Done board
merge_request: 10574
author: Andy Brown
---
title: Fixed branches dropdown rendering branch names as HTML
merge_request:
author:
---
title: Make Asciidoc & other markup go through pipeline to prevent XSS
merge_request:
author:
---
title: Validate URLs in markdown using URI to detect the host correctly
merge_request:
author:
---
title: Side-by-side view in commits correcly expands full window width
merge_request:
author:
---
title: Deploy keys load are loaded async
merge_request:
author:
---
title: Fixed spacing of discussion submit buttons
merge_request:
author:
---
title: Add artifact file page that uses the blob viewer
merge_request:
author:
---
title: Add breadcrumb, build header and pipelines submenu to artifacts browser
merge_request:
author:
---
title: Show Raw button as Download for binary files
merge_request:
author:
---
title: Add Source/Rendered switch to blobs for SVG, Markdown, Asciidoc and other text
files that can be rendered
merge_request:
author:
---
title: Allow commenting on older versions of the diff and comparisons between diff versions
merge_request:
author:
---
title: Fix commenting on an existing discussion on an unchanged line that is no longer
in the diff
merge_request:
author:
---
title: Link to outdated diff in older MR version from outdated diff discussion
merge_request:
author:
---
title: Bump Sidekiq to 5.0.0
merge_request:
author:
---
title: Use blob viewers for snippets
merge_request:
author:
---
title: Add download button to project snippets
merge_request:
author:
---
title: Display video blobs in-line like images
merge_request:
author:
---
title: Refactor add_users method for project and group
merge_request: 10850
author:
---
title: Refactor Admin::GroupsController#members_update method and add some specs
merge_request: 10735
author:
---
title: Refactor code that creates project/group members
merge_request: 10735
author:
---
title: Remove Repository#version method and tests
merge_request: 10734
author:
---
title: Added title to award emoji buttons
merge_request:
author:
---
title: Fixed alignment of empty task list items
merge_request:
author:
---
title: Implement protected manual actions
merge_request: 10494
author:
---
title: Fix new admin integrations not taking effect on existing projects
merge_request:
author:
---
title: Fix skipped manual actions problem when processing the pipeline
merge_request: 11164
author:
---
title: Hide external environment URL button on terminal page if URL is not defined
merge_request: 11029
author:
---
title: Removed target blank from the metrics action inside the environments list
merge_request: 10726
author:
---
title: Remove N+1 queries in processing MR references
merge_request:
author:
---
title: Fixed wrong method call on notify_post_receive
merge_request:
author: Luigi Leoni
---
title: Prevent user profile tabs to display raw json when going back and forward in
browser history
merge_request:
author:
---
title: Add index to webhooks type column
merge_request:
author:
---
title: Change line-height on build-header so elements don't overlap
merge_request:
author: Dino Maric
---
title: Fix redundant cache expiration in Repository
merge_request: 10575
author: blackst0ne
---
title: Fix rendering emoji inside a string
merge_request: 10647
author: blackst0ne
---
title: Fix dead link to GDK on the README page
merge_request:
author: Dino Maric
---
title: Remove heading and trailing spaces from label's color and title
merge_request: 10603
author: blackst0ne
---
title: Fixued preview shortcut focusing wrong preview tab
merge_request:
author:
---
title: Refactor backup/restore docs
merge_request:
author:
---
title: Fixed group issues assignee dropdown loading all users
merge_request:
author:
---
title: Fix for XSS in project import view caused by Hamlit filter usage.
merge_request:
author:
---
title: Add support for i18n on Cycle Analytics page
merge_request: 10669
author:
---
title: Fixed avatar not display on issue boards when Gravatar is disabled
merge_request:
author:
---
title: Add realtime descriptions to issue show pages
merge_request:
author:
---
title: Make markdown tables thinner
merge_request: 10909
author: blackst0ne
---
title: Fixed Prometheus monitoring graphs not showing empty states in certain scenarios
merge_request:
author:
---
title: Removed the milestone references from the milestone views
merge_request:
author:
---
title: 'API: Filter merge requests by milestone and labels'
merge_request: Robert Schilling
author: 10924
---
title: Move labels of search results from bottom to title
merge_request: 10705
author: dr
---
title: Show sizes correctly in merge requests when diffs overflow
merge_request:
author:
---
title: Fix updating merge_when_build_succeeds via merge API endpoint
merge_request: 10873
author:
---
title: Fix notify_only_default_branch check for Slack service
merge_request:
author:
---
title: Add configurable timeout for git fetch and clone operations
merge_request: 10697
author:
---
title: "Make the `gitlab:gitlab_shell:check` task check that the repositories storage path are owned by the `root` group"
merge_request:
author:
---
title: Optimise pipelines.json endpoint
merge_request:
author:
---
title: Display slash commands outcome when previewing Markdown
merge_request: 10054
author: Rares Sfirlogea
---
title: Prevent 500 errors caused by testing the Prometheus service
merge_request: 10994
author:
---
title: Implement search by extern_uid in Users API
merge_request: 10509
author: Robin Bobbitt
---
title: Fixed alignment of CI icon in issues related branches
merge_request:
author:
---
title: Only add newlines between multiple uploads
merge_request: 10545
author:
---
title: Replace header merge request icon
merge_request: 10932
author: blackst0ne
---
title: Reset New branch button when issue state changes
merge_request: 5962
author: winniehell
---
title: Set the issuable sidebar to remain closed for mobile devices
merge_request:
author:
---
title: Sanitize submodule URLs before linking to them in the file tree view
merge_request:
author:
---
title: Upgrade Sidekiq to 4.2.10
merge_request:
author:
---
title: Cache Routable#full_path in RequestStore to reduce duplicate route loads
merge_request:
author:
---
title: Refactor snippets finder & dont return internal snippets for external users
merge_request:
author:
---
title: Fix snippets visibility for show action - external users can not see internal snippets
merge_request:
author:
---
title: Add spec for schema.rb
merge_request: 10580
author: blackst0ne
---
title: 'repository browser: handle submodule urls that don''t end with .git'
merge_request:
author: David Turner
---
title: Fixed tags sort from defaulting to empty
merge_request:
author:
---
title: "Do not show private groups on subgroups page if user doesn't have access to"
merge_request:
author:
---
title: Make MR link in build sidebar bold
merge_request:
author:
---
title: Ensure namespace owner is Master of project upon creation
merge_request: 10910
author:
---
title: Unassign all Issues and Merge Requests when member leaves a team
merge_request:
author:
---
title: Update issue board cards design
merge_request: 10353
author:
---
title: Add hashie-forbidden_attributes gem
merge_request: 10579
author: Andy Brown
---
title: Fix preemptive scroll bar on user activity calendar.
merge_request: !10636
author:
---
title: Add German translation for Cycle Analytics
merge_request: 11161
author:
---
title: Colorize labels in search field
merge_request: 11047
author:
---
title: Pipeline schedules got a new and improved UI
merge_request: 10853
author:
---
title: Pipeline chat notifications convert seconds to minutes and hours
merge_request:
author:
---
title: Dockerfiles templates are imported from gitlab.com/gitlab-org/Dockerfile
merge_request: 10663
author:
---
title: Pipeline view updates in near real time
merge_request: 10777
author:
doc/user/project/issues/img/issues_main_view.png

47.5 KB | W: | H:

doc/user/project/issues/img/issues_main_view.png

72 KB | W: | H:

doc/user/project/issues/img/issues_main_view.png
doc/user/project/issues/img/issues_main_view.png
doc/user/project/issues/img/issues_main_view.png
doc/user/project/issues/img/issues_main_view.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -49,6 +49,10 @@ Read through the [documentation on creating issues](create_new_issue.md). ...@@ -49,6 +49,10 @@ Read through the [documentation on creating issues](create_new_issue.md).
Read through the distinct ways to [close issues](closing_issues.md) on GitLab. Read through the distinct ways to [close issues](closing_issues.md) on GitLab.
## Create a merge request from an issue
Learn more about it on the [GitLab Issues Functionalities documentation](issues_functionalities.md#18-new-merge-request).
## Search for an issue ## Search for an issue
Learn how to [find an issue](../../search/index.md) by searching for and filtering them. Learn how to [find an issue](../../search/index.md) by searching for and filtering them.
......
...@@ -6,7 +6,7 @@ Please read through the [GitLab Issue Documentation](index.md) for an overview o ...@@ -6,7 +6,7 @@ Please read through the [GitLab Issue Documentation](index.md) for an overview o
The image bellow illustrates how an issue looks like: The image bellow illustrates how an issue looks like:
![Issue view](img/issues_main_view_numbered.png) ![Issue view](img/issues_main_view_numbered.jpg)
You can find all the information on that issue on one screen. You can find all the information on that issue on one screen.
...@@ -38,6 +38,21 @@ it's reassigned to someone else to take it from there. ...@@ -38,6 +38,21 @@ it's reassigned to someone else to take it from there.
if a user is not member of that project, it can only be if a user is not member of that project, it can only be
assigned to them if they created the issue themselves. assigned to them if they created the issue themselves.
##### 3.1. Multiple Assignees (EES/EEP)
Issue Weights are only available in [GitLab Enterprise Edition](https://about.gitlab.com/gitlab-ee/).
Often multiple people likely work on the same issue together,
which can especially be difficult to track in large teams
where there is shared ownership of an issue.
In GitLab Enterprise Edition, you can also select multiple assignees
to an issue.
> **Note:**
Multiple Assignees was [introduced](https://gitlab.com/gitlab-org/gitlab-ee/issues/1904)
in [GitLab Enterprise Edition 9.2](https://about.gitlab.com/2017/05/22/gitlab-9-2-released/#multiple-assignees-for-issues).
#### 4. Milestone #### 4. Milestone
- Select a [milestone](../milestones/index.md) to attribute that issue to. - Select a [milestone](../milestones/index.md) to attribute that issue to.
...@@ -150,8 +165,9 @@ Once you wrote your comment, you can either: ...@@ -150,8 +165,9 @@ Once you wrote your comment, you can either:
- Click "Start discussion": start a thread within that issue's thread to discuss specific points. - Click "Start discussion": start a thread within that issue's thread to discuss specific points.
- Click "Comment and close issue": post your comment and close that issue in one click. - Click "Comment and close issue": post your comment and close that issue in one click.
#### 18. New branch #### 18. New Merge Request
<<<<<<< HEAD
- [New branch](../repository/web_editor.md#create-a-new-branch-from-an-issue): - [New branch](../repository/web_editor.md#create-a-new-branch-from-an-issue):
create a new branch, followed by a new merge request which will automatically close that create a new branch, followed by a new merge request which will automatically close that
issue as soon as that merge request is merged. issue as soon as that merge request is merged.
...@@ -161,3 +177,9 @@ issue as soon as that merge request is merged. ...@@ -161,3 +177,9 @@ issue as soon as that merge request is merged.
- Create a new merge request (with source branch) in one action. Optionally just create a new branch, as explained above. - Create a new merge request (with source branch) in one action. Optionally just create a new branch, as explained above.
![Create new merge request](img/create_new_merge_request.png) ![Create new merge request](img/create_new_merge_request.png)
=======
- Create a new merge request (with a new source branch named after the issue) in one action.
The merge request will automatically close that issue as soon as merged.
- Optionally, you can just create a [new branch](../repository/web_editor.md#create-a-new-branch-from-an-issue)
named after that issue.
>>>>>>> origin/master
# Advanced search syntax # Advanced search syntax
>**Notes:** >**Notes:**
- Introduced in [GitLab Enterprise Premium][ee] 9.2 - Introduced in [GitLab Enterprise Starter][ee] 9.2
- The [Elasticsearch integration](../../integration/elasticsearch.md) needs to - The [Elasticsearch integration](../../integration/elasticsearch.md) needs to
be enabled be enabled
......
...@@ -2,8 +2,18 @@ ...@@ -2,8 +2,18 @@
Snippets are little bits of code or text. Snippets are little bits of code or text.
![GitLab Snippet](img/gitlab_snippet.png)
There are 2 types of snippets - project snippets and personal snippets. There are 2 types of snippets - project snippets and personal snippets.
## Comments
With GitLab Snippets you engage in a conversation about that piece of code,
facilitating the collaboration among users.
> **Note:**
Comments on snippets was [introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/12910) in [GitLab Community Edition 9.2](https://about.gitlab.com/2017/05/22/gitlab-9-2-released/#comments-for-personal-snippets).
## Project snippets ## Project snippets
Project snippets are always related to a specific project - see [Project features](../workflow/project_features.md) for more information. Project snippets are always related to a specific project - see [Project features](../workflow/project_features.md) for more information.
......
require('~/lib/utils/text_utility'); import '~/lib/utils/text_utility';
require('~/abuse_reports'); import '~/abuse_reports';
((global) => { ((global) => {
describe('Abuse Reports', () => { describe('Abuse Reports', () => {
......
/* eslint-disable no-unused-expressions, no-prototype-builtins, no-new, no-shadow, max-len */ /* eslint-disable no-unused-expressions, no-prototype-builtins, no-new, no-shadow, max-len */
require('vendor/jquery.endless-scroll.js'); import 'vendor/jquery.endless-scroll';
require('~/pager'); import '~/pager';
require('~/activities'); import '~/activities';
(() => { (() => {
window.gon || (window.gon = {}); window.gon || (window.gon = {});
......
require('~/extensions/array'); import '~/extensions/array';
require('jquery'); import 'jquery';
require('jquery-ujs'); import 'jquery-ujs';
require('~/ajax_loading_spinner'); import '~/ajax_loading_spinner';
describe('Ajax Loading Spinner', () => { describe('Ajax Loading Spinner', () => {
const fixtureTemplate = 'static/ajax_loading_spinner.html.raw'; const fixtureTemplate = 'static/ajax_loading_spinner.html.raw';
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import AwardsHandler from '~/awards_handler'; import AwardsHandler from '~/awards_handler';
require('~/lib/utils/common_utils'); import '~/lib/utils/common_utils';
(function() { (function() {
var awardsHandler, lazyAssert, urlRoot, openAndWaitForEmojiMenu; var awardsHandler, lazyAssert, urlRoot, openAndWaitForEmojiMenu;
......
/* eslint-disable space-before-function-paren, no-var, comma-dangle, no-return-assign, max-len */ /* eslint-disable space-before-function-paren, no-var, comma-dangle, no-return-assign, max-len */
require('~/behaviors/autosize'); import '~/behaviors/autosize';
(function() { (function() {
describe('Autosize behavior', function() { describe('Autosize behavior', function() {
......
/* eslint-disable space-before-function-paren, no-var, no-return-assign, comma-dangle, jasmine/no-spec-dupes, new-cap, max-len */ /* eslint-disable space-before-function-paren, no-var, no-return-assign, comma-dangle, jasmine/no-spec-dupes, new-cap, max-len */
require('~/behaviors/quick_submit'); import '~/behaviors/quick_submit';
(function() { (function() {
describe('Quick Submit behavior', function() { describe('Quick Submit behavior', function() {
......
/* eslint-disable space-before-function-paren, no-var */ /* eslint-disable space-before-function-paren, no-var */
require('~/behaviors/requires_input'); import '~/behaviors/requires_input';
(function() { (function() {
describe('requiresInput', function() { describe('requiresInput', function() {
......
<<<<<<< HEAD
require('~/gl_dropdown'); require('~/gl_dropdown');
require('~/blob/create_branch_dropdown'); require('~/blob/create_branch_dropdown');
require('~/blob/target_branch_dropdown'); require('~/blob/target_branch_dropdown');
=======
import '~/gl_dropdown';
import '~/lib/utils/type_utility';
import '~/blob/create_branch_dropdown';
import '~/blob/target_branch_dropdown';
>>>>>>> origin/master
describe('CreateBranchDropdown', () => { describe('CreateBranchDropdown', () => {
const fixtureTemplate = 'static/target_branch_dropdown.html.raw'; const fixtureTemplate = 'static/target_branch_dropdown.html.raw';
......
<<<<<<< HEAD
require('~/gl_dropdown'); require('~/gl_dropdown');
require('~/blob/create_branch_dropdown'); require('~/blob/create_branch_dropdown');
require('~/blob/target_branch_dropdown'); require('~/blob/target_branch_dropdown');
=======
import '~/gl_dropdown';
import '~/lib/utils/type_utility';
import '~/blob/create_branch_dropdown';
import '~/blob/target_branch_dropdown';
>>>>>>> origin/master
describe('TargetBranchDropdown', () => { describe('TargetBranchDropdown', () => {
const fixtureTemplate = 'static/target_branch_dropdown.html.raw'; const fixtureTemplate = 'static/target_branch_dropdown.html.raw';
......
...@@ -8,11 +8,11 @@ ...@@ -8,11 +8,11 @@
import Vue from 'vue'; import Vue from 'vue';
import '~/boards/models/assignee'; import '~/boards/models/assignee';
require('~/boards/models/list'); import '~/boards/models/list';
require('~/boards/models/label'); import '~/boards/models/label';
require('~/boards/stores/boards_store'); import '~/boards/stores/boards_store';
const boardCard = require('~/boards/components/board_card').default; import boardCard from '~/boards/components/board_card';
require('./mock_data'); import './mock_data';
describe('Issue card', () => { describe('Issue card', () => {
let vm; let vm;
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
import Vue from 'vue'; import Vue from 'vue';
import boardNewIssue from '~/boards/components/board_new_issue'; import boardNewIssue from '~/boards/components/board_new_issue';
require('~/boards/models/list'); import '~/boards/models/list';
require('./mock_data'); import './mock_data';
describe('Issue boards new issue form', () => { describe('Issue boards new issue form', () => {
let vm; let vm;
......
...@@ -3,11 +3,10 @@ ...@@ -3,11 +3,10 @@
/* global BoardService */ /* global BoardService */
import Vue from 'vue'; import Vue from 'vue';
import milestoneSelect from '~/boards/components/milestone_select';
const milestoneSelect = require('~/boards/components/milestone_select'); import '~/boards/services/board_service';
require('~/boards/services/board_service'); import '~/boards/stores/boards_store';
require('~/boards/stores/boards_store'); import './mock_data';
require('./mock_data');
describe('Milestone select component', () => { describe('Milestone select component', () => {
let selectMilestoneSpy; let selectMilestoneSpy;
......
/* global CommitsList */ /* global CommitsList */
require('vendor/jquery.endless-scroll'); import 'vendor/jquery.endless-scroll';
require('~/pager'); import '~/pager';
require('~/commits'); import '~/commits';
(() => { (() => {
// TODO: remove this hack! // TODO: remove this hack!
......
require('~/lib/utils/datetime_utility'); import '~/lib/utils/datetime_utility';
(() => { (() => {
describe('Date time utils', () => { describe('Date time utils', () => {
......
/* eslint-disable jasmine/no-global-setup, dot-notation, jasmine/no-expect-in-setup-teardown, max-len */ /* eslint-disable jasmine/no-global-setup, dot-notation, jasmine/no-expect-in-setup-teardown, max-len */
/* global CommentsStore */ /* global CommentsStore */
require('~/diff_notes/models/discussion'); import '~/diff_notes/models/discussion';
require('~/diff_notes/models/note'); import '~/diff_notes/models/note';
require('~/diff_notes/stores/comments'); import '~/diff_notes/stores/comments';
function createDiscussion(noteId = 1, resolved = true) { function createDiscussion(noteId = 1, resolved = true) {
CommentsStore.create({ CommentsStore.create({
......
import Vue from 'vue'; import Vue from 'vue';
import DeployBoard from '~/environments/components/deploy_board_component.vue'; import DeployBoard from '~/environments/components/deploy_board_component.vue';
import Service from '~/environments/services/environments_service'; import Service from '~/environments/services/environments_service';
import { deployBoardMockData, invalidDeployBoardMockData } from './mock_data';
const { deployBoardMockData, invalidDeployBoardMockData } = require('./mock_data');
describe('Deploy Board', () => { describe('Deploy Board', () => {
let DeployBoardComponent; let DeployBoardComponent;
......
/* eslint-disable space-before-function-paren, no-var */ /* eslint-disable space-before-function-paren, no-var */
require('~/extensions/array'); import '~/extensions/array';
(function() { (function() {
describe('Array extensions', function() { describe('Array extensions', function() {
......
require('~/filtered_search/dropdown_utils'); import '~/filtered_search/dropdown_utils';
require('~/filtered_search/filtered_search_tokenizer'); import '~/filtered_search/filtered_search_tokenizer';
require('~/filtered_search/filtered_search_dropdown'); import '~/filtered_search/filtered_search_dropdown';
require('~/filtered_search/dropdown_user'); import '~/filtered_search/dropdown_user';
describe('Dropdown User', () => { describe('Dropdown User', () => {
describe('getSearchInput', () => { describe('getSearchInput', () => {
......
require('~/extensions/array'); import '~/extensions/array';
require('~/filtered_search/dropdown_utils'); import '~/filtered_search/dropdown_utils';
require('~/filtered_search/filtered_search_tokenizer'); import '~/filtered_search/filtered_search_tokenizer';
require('~/filtered_search/filtered_search_dropdown_manager'); import '~/filtered_search/filtered_search_dropdown_manager';
describe('Dropdown Utils', () => { describe('Dropdown Utils', () => {
describe('getEscapedText', () => { describe('getEscapedText', () => {
......
require('~/extensions/array'); import '~/extensions/array';
require('~/filtered_search/filtered_search_visual_tokens'); import '~/filtered_search/filtered_search_visual_tokens';
require('~/filtered_search/filtered_search_tokenizer'); import '~/filtered_search/filtered_search_tokenizer';
require('~/filtered_search/filtered_search_dropdown_manager'); import '~/filtered_search/filtered_search_dropdown_manager';
describe('Filtered Search Dropdown Manager', () => { describe('Filtered Search Dropdown Manager', () => {
describe('addWordToInput', () => { describe('addWordToInput', () => {
......
import * as recentSearchesStoreSrc from '~/filtered_search/stores/recent_searches_store'; import * as recentSearchesStoreSrc from '~/filtered_search/stores/recent_searches_store';
import RecentSearchesService from '~/filtered_search/services/recent_searches_service'; import RecentSearchesService from '~/filtered_search/services/recent_searches_service';
import RecentSearchesServiceError from '~/filtered_search/services/recent_searches_service_error'; import RecentSearchesServiceError from '~/filtered_search/services/recent_searches_service_error';
import '~/lib/utils/url_utility';
require('~/lib/utils/url_utility'); import '~/lib/utils/common_utils';
require('~/lib/utils/common_utils'); import '~/filtered_search/filtered_search_token_keys';
require('~/filtered_search/filtered_search_token_keys'); import '~/filtered_search/filtered_search_tokenizer';
require('~/filtered_search/filtered_search_tokenizer'); import '~/filtered_search/filtered_search_dropdown_manager';
require('~/filtered_search/filtered_search_dropdown_manager'); import '~/filtered_search/filtered_search_manager';
require('~/filtered_search/filtered_search_manager'); import FilteredSearchSpecHelper from '../helpers/filtered_search_spec_helper';
const FilteredSearchSpecHelper = require('../helpers/filtered_search_spec_helper');
describe('Filtered Search Manager', () => { describe('Filtered Search Manager', () => {
let input; let input;
......
require('~/extensions/array'); import '~/extensions/array';
require('~/filtered_search/filtered_search_token_keys'); import '~/filtered_search/filtered_search_token_keys';
describe('Filtered Search Token Keys', () => { describe('Filtered Search Token Keys', () => {
describe('get', () => { describe('get', () => {
......
require('~/extensions/array'); import '~/extensions/array';
require('~/filtered_search/filtered_search_token_keys_with_weights'); import '~/filtered_search/filtered_search_token_keys_with_weights';
(() => { (() => {
describe('Filtered Search Token Keys With Weights', () => { describe('Filtered Search Token Keys With Weights', () => {
......
require('~/extensions/array'); import '~/extensions/array';
require('~/filtered_search/filtered_search_token_keys'); import '~/filtered_search/filtered_search_token_keys';
require('~/filtered_search/filtered_search_tokenizer'); import '~/filtered_search/filtered_search_tokenizer';
describe('Filtered Search Tokenizer', () => { describe('Filtered Search Tokenizer', () => {
describe('processTokens', () => { describe('processTokens', () => {
......
import AjaxCache from '~/lib/utils/ajax_cache'; import AjaxCache from '~/lib/utils/ajax_cache';
require('~/filtered_search/filtered_search_visual_tokens'); import '~/filtered_search/filtered_search_visual_tokens';
const FilteredSearchSpecHelper = require('../helpers/filtered_search_spec_helper'); import FilteredSearchSpecHelper from '../helpers/filtered_search_spec_helper';
describe('Filtered Search Visual Tokens', () => { describe('Filtered Search Visual Tokens', () => {
let tokensContainer; let tokensContainer;
......
/* eslint no-param-reassign: "off" */ /* eslint no-param-reassign: "off" */
import GfmAutoComplete from '~/gfm_auto_complete'; import GfmAutoComplete from '~/gfm_auto_complete';
import 'vendor/jquery.caret';
require('vendor/jquery.caret'); import 'vendor/jquery.atwho';
require('vendor/jquery.atwho');
describe('GfmAutoComplete', function () { describe('GfmAutoComplete', function () {
const gfmAutoCompleteCallbacks = GfmAutoComplete.prototype.getDefaultCallbacks.call({ const gfmAutoCompleteCallbacks = GfmAutoComplete.prototype.getDefaultCallbacks.call({
......
/* eslint-disable comma-dangle, no-param-reassign, no-unused-expressions, max-len */ /* eslint-disable comma-dangle, no-param-reassign, no-unused-expressions, max-len */
<<<<<<< HEAD
require('~/gl_dropdown'); require('~/gl_dropdown');
require('~/lib/utils/common_utils'); require('~/lib/utils/common_utils');
require('~/lib/utils/url_utility'); require('~/lib/utils/url_utility');
=======
import '~/gl_dropdown';
import '~/lib/utils/common_utils';
import '~/lib/utils/type_utility';
import '~/lib/utils/url_utility';
>>>>>>> origin/master
(() => { (() => {
const NON_SELECTABLE_CLASSES = '.divider, .separator, .dropdown-header, .dropdown-menu-empty-link'; const NON_SELECTABLE_CLASSES = '.divider, .separator, .dropdown-header, .dropdown-menu-empty-link';
......
/* eslint-disable space-before-function-paren, arrow-body-style */ /* eslint-disable space-before-function-paren, arrow-body-style */
require('~/gl_field_errors'); import '~/gl_field_errors';
((global) => { ((global) => {
preloadFixtures('static/gl_field_errors.html.raw'); preloadFixtures('static/gl_field_errors.html.raw');
......
/* global autosize */ import autosize from 'vendor/autosize';
import '~/gl_form';
import '~/lib/utils/text_utility';
import '~/lib/utils/common_utils';
window.autosize = require('vendor/autosize'); window.autosize = autosize;
require('~/gl_form');
require('~/lib/utils/text_utility');
require('~/lib/utils/common_utils');
describe('GLForm', () => { describe('GLForm', () => {
const global = window.gl || (window.gl = {}); const global = window.gl || (window.gl = {});
...@@ -27,7 +27,7 @@ describe('GLForm', () => { ...@@ -27,7 +27,7 @@ describe('GLForm', () => {
$.prototype.off.calls.reset(); $.prototype.off.calls.reset();
$.prototype.on.calls.reset(); $.prototype.on.calls.reset();
$.prototype.css.calls.reset(); $.prototype.css.calls.reset();
autosize.calls.reset(); window.autosize.calls.reset();
done(); done();
}); });
}); });
...@@ -51,7 +51,7 @@ describe('GLForm', () => { ...@@ -51,7 +51,7 @@ describe('GLForm', () => {
}); });
it('should autosize the textarea', () => { it('should autosize the textarea', () => {
expect(autosize).toHaveBeenCalledWith(jasmine.any(Object)); expect(window.autosize).toHaveBeenCalledWith(jasmine.any(Object));
}); });
it('should set the resize css property to vertical', () => { it('should set the resize css property to vertical', () => {
...@@ -81,7 +81,7 @@ describe('GLForm', () => { ...@@ -81,7 +81,7 @@ describe('GLForm', () => {
spyOn($.prototype, 'data'); spyOn($.prototype, 'data');
spyOn($.prototype, 'outerHeight').and.returnValue(200); spyOn($.prototype, 'outerHeight').and.returnValue(200);
spyOn(window, 'outerHeight').and.returnValue(400); spyOn(window, 'outerHeight').and.returnValue(400);
spyOn(autosize, 'destroy'); spyOn(window.autosize, 'destroy');
this.glForm.destroyAutosize(); this.glForm.destroyAutosize();
}); });
...@@ -95,7 +95,7 @@ describe('GLForm', () => { ...@@ -95,7 +95,7 @@ describe('GLForm', () => {
}); });
it('should call autosize destroy', () => { it('should call autosize destroy', () => {
expect(autosize.destroy).toHaveBeenCalledWith(this.textarea); expect(window.autosize.destroy).toHaveBeenCalledWith(this.textarea);
}); });
it('should set the data-height attribute', () => { it('should set the data-height attribute', () => {
...@@ -114,9 +114,9 @@ describe('GLForm', () => { ...@@ -114,9 +114,9 @@ describe('GLForm', () => {
it('should return undefined if the data-height equals the outerHeight', () => { it('should return undefined if the data-height equals the outerHeight', () => {
spyOn($.prototype, 'outerHeight').and.returnValue(200); spyOn($.prototype, 'outerHeight').and.returnValue(200);
spyOn($.prototype, 'data').and.returnValue(200); spyOn($.prototype, 'data').and.returnValue(200);
spyOn(autosize, 'destroy'); spyOn(window.autosize, 'destroy');
expect(this.glForm.destroyAutosize()).toBeUndefined(); expect(this.glForm.destroyAutosize()).toBeUndefined();
expect(autosize.destroy).not.toHaveBeenCalled(); expect(window.autosize.destroy).not.toHaveBeenCalled();
}); });
}); });
}); });
......
/* eslint-disable space-before-function-paren, no-var */ /* eslint-disable space-before-function-paren, no-var */
require('~/header'); import '~/header';
require('~/lib/utils/text_utility'); import '~/lib/utils/text_utility';
(function() { (function() {
describe('Header', function() { describe('Header', function() {
......
class ClassSpecHelper { export default class ClassSpecHelper {
static itShouldBeAStaticMethod(base, method) { static itShouldBeAStaticMethod(base, method) {
return it('should be a static method', () => { return it('should be a static method', () => {
expect(Object.prototype.hasOwnProperty.call(base, method)).toBeTruthy(); expect(Object.prototype.hasOwnProperty.call(base, method)).toBeTruthy();
...@@ -7,5 +7,3 @@ class ClassSpecHelper { ...@@ -7,5 +7,3 @@ class ClassSpecHelper {
} }
window.ClassSpecHelper = ClassSpecHelper; window.ClassSpecHelper = ClassSpecHelper;
module.exports = ClassSpecHelper;
/* global ClassSpecHelper */ /* global ClassSpecHelper */
require('./class_spec_helper'); import './class_spec_helper';
describe('ClassSpecHelper', () => { describe('ClassSpecHelper', () => {
describe('itShouldBeAStaticMethod', function () { describe('itShouldBeAStaticMethod', function () {
......
class FilteredSearchSpecHelper { export default class FilteredSearchSpecHelper {
static createFilterVisualTokenHTML(name, value, isSelected) { static createFilterVisualTokenHTML(name, value, isSelected) {
return FilteredSearchSpecHelper.createFilterVisualToken(name, value, isSelected).outerHTML; return FilteredSearchSpecHelper.createFilterVisualToken(name, value, isSelected).outerHTML;
} }
...@@ -53,5 +53,3 @@ class FilteredSearchSpecHelper { ...@@ -53,5 +53,3 @@ class FilteredSearchSpecHelper {
`; `;
} }
} }
module.exports = FilteredSearchSpecHelper;
/* global Issuable */ /* global Issuable */
require('~/lib/utils/url_utility'); import '~/lib/utils/url_utility';
require('~/issuable'); import '~/issuable';
(() => { (() => {
const BASE_URL = '/user/project/issues?scope=all&state=closed'; const BASE_URL = '/user/project/issues?scope=all&state=closed';
......
/* eslint-disable space-before-function-paren, one-var, one-var-declaration-per-line, no-use-before-define, comma-dangle, max-len */ /* eslint-disable space-before-function-paren, one-var, one-var-declaration-per-line, no-use-before-define, comma-dangle, max-len */
import Issue from '~/issue'; import Issue from '~/issue';
require('~/lib/utils/text_utility'); import '~/lib/utils/text_utility';
describe('Issue', function() { describe('Issue', function() {
let $boxClosed, $boxOpen, $btnClose, $btnReopen; let $boxClosed, $boxOpen, $btnClose, $btnReopen;
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
/* global IssuableContext */ /* global IssuableContext */
/* global LabelsSelect */ /* global LabelsSelect */
<<<<<<< HEAD
require('~/gl_dropdown'); require('~/gl_dropdown');
require('select2'); require('select2');
require('vendor/jquery.nicescroll'); require('vendor/jquery.nicescroll');
...@@ -10,6 +11,17 @@ require('~/create_label'); ...@@ -10,6 +11,17 @@ require('~/create_label');
require('~/issuable_context'); require('~/issuable_context');
require('~/users_select'); require('~/users_select');
require('~/labels_select'); require('~/labels_select');
=======
import '~/lib/utils/type_utility';
import '~/gl_dropdown';
import 'select2';
import 'vendor/jquery.nicescroll';
import '~/api';
import '~/create_label';
import '~/issuable_context';
import '~/users_select';
import '~/labels_select';
>>>>>>> origin/master
(() => { (() => {
let saveLabelCount = 0; let saveLabelCount = 0;
......
/* eslint-disable promise/catch-or-return */ /* eslint-disable promise/catch-or-return */
require('~/lib/utils/common_utils'); import '~/lib/utils/common_utils';
(() => { (() => {
describe('common_utils', () => { describe('common_utils', () => {
......
require('~/lib/utils/text_utility'); import '~/lib/utils/text_utility';
describe('text_utility', () => { describe('text_utility', () => {
describe('gl.text.getTextWidth', () => { describe('gl.text.getTextWidth', () => {
......
/* eslint-disable space-before-function-paren, no-var, no-param-reassign, quotes, prefer-template, no-else-return, new-cap, dot-notation, no-return-assign, comma-dangle, no-new, one-var, one-var-declaration-per-line, jasmine/no-spec-dupes, no-underscore-dangle, max-len */ /* eslint-disable space-before-function-paren, no-var, no-param-reassign, quotes, prefer-template, no-else-return, new-cap, dot-notation, no-return-assign, comma-dangle, no-new, one-var, one-var-declaration-per-line, jasmine/no-spec-dupes, no-underscore-dangle, max-len */
/* global LineHighlighter */ /* global LineHighlighter */
require('~/line_highlighter'); import '~/line_highlighter';
(function() { (function() {
describe('LineHighlighter', function() { describe('LineHighlighter', function() {
......
/* eslint-disable space-before-function-paren, no-return-assign */ /* eslint-disable space-before-function-paren, no-return-assign */
/* global MergeRequest */ /* global MergeRequest */
require('~/merge_request'); import '~/merge_request';
(function() { (function() {
describe('MergeRequest', function() { describe('MergeRequest', function() {
......
/* eslint-disable no-var, comma-dangle, object-shorthand */ /* eslint-disable no-var, comma-dangle, object-shorthand */
require('~/merge_request_tabs'); import '~/merge_request_tabs';
require('~/commit/pipelines/pipelines_bundle.js'); import '~/commit/pipelines/pipelines_bundle';
require('~/breakpoints'); import '~/breakpoints';
require('~/lib/utils/common_utils'); import '~/lib/utils/common_utils';
require('~/diff'); import '~/diff';
require('~/single_file_diff'); import '~/single_file_diff';
require('~/files_comment_button'); import '~/files_comment_button';
require('vendor/jquery.scrollTo'); import 'vendor/jquery.scrollTo';
(function () { (function () {
// TODO: remove this hack! // TODO: remove this hack!
......
/* eslint-disable space-before-function-paren, one-var, no-var, one-var-declaration-per-line, no-return-assign, quotes, max-len */ /* eslint-disable space-before-function-paren, one-var, no-var, one-var-declaration-per-line, no-return-assign, quotes, max-len */
/* global NewBranchForm */ /* global NewBranchForm */
require('~/new_branch_form'); import '~/new_branch_form';
(function() { (function() {
describe('Branch', function() { describe('Branch', function() {
......
/* global fixture */ /* global fixture */
require('~/pager'); import '~/pager';
describe('pager', () => { describe('pager', () => {
const Pager = window.Pager; const Pager = window.Pager;
......
require('~/lib/utils/pretty_time'); import '~/lib/utils/pretty_time';
(() => { (() => {
const prettyTime = gl.utils.prettyTime; const prettyTime = gl.utils.prettyTime;
......
require('~/project_new'); import '~/project_new';
describe('ApproversSelect', function () { describe('ApproversSelect', function () {
const projectSettingsTemplate = 'projects/edit.html.raw'; const projectSettingsTemplate = 'projects/edit.html.raw';
......
/* eslint-disable space-before-function-paren, no-unused-expressions, no-return-assign, no-param-reassign, no-var, new-cap, wrap-iife, no-unused-vars, quotes, jasmine/no-expect-in-setup-teardown, max-len */ /* eslint-disable space-before-function-paren, no-unused-expressions, no-return-assign, no-param-reassign, no-var, new-cap, wrap-iife, no-unused-vars, quotes, jasmine/no-expect-in-setup-teardown, max-len */
/* global Project */ /* global Project */
<<<<<<< HEAD
require('select2/select2.js'); require('select2/select2.js');
require('~/gl_dropdown'); require('~/gl_dropdown');
require('~/api'); require('~/api');
require('~/project_select'); require('~/project_select');
require('~/project'); require('~/project');
=======
import 'select2/select2';
import '~/lib/utils/type_utility';
import '~/gl_dropdown';
import '~/api';
import '~/project_select';
import '~/project';
>>>>>>> origin/master
(function() { (function() {
describe('Project Title', function() { describe('Project Title', function() {
......
/* eslint-disable space-before-function-paren, max-len, no-var, one-var, one-var-declaration-per-line, no-unused-expressions, consistent-return, no-param-reassign, default-case, no-return-assign, comma-dangle, object-shorthand, prefer-template, quotes, new-parens, vars-on-top, new-cap, max-len */ /* eslint-disable space-before-function-paren, max-len, no-var, one-var, one-var-declaration-per-line, no-unused-expressions, consistent-return, no-param-reassign, default-case, no-return-assign, comma-dangle, object-shorthand, prefer-template, quotes, new-parens, vars-on-top, new-cap, max-len */
<<<<<<< HEAD
require('~/gl_dropdown'); require('~/gl_dropdown');
require('~/search_autocomplete'); require('~/search_autocomplete');
require('~/lib/utils/common_utils'); require('~/lib/utils/common_utils');
require('vendor/fuzzaldrin-plus'); require('vendor/fuzzaldrin-plus');
=======
import '~/gl_dropdown';
import '~/search_autocomplete';
import '~/lib/utils/common_utils';
import '~/lib/utils/type_utility';
import 'vendor/fuzzaldrin-plus';
>>>>>>> origin/master
(function() { (function() {
var addBodyAttributes, assertLinks, dashboardIssuesPath, dashboardMRsPath, groupIssuesPath, groupMRsPath, groupName, mockDashboardOptions, mockGroupOptions, mockProjectOptions, projectIssuesPath, projectMRsPath, projectName, userId, widget; var addBodyAttributes, assertLinks, dashboardIssuesPath, dashboardMRsPath, groupIssuesPath, groupMRsPath, groupName, mockDashboardOptions, mockGroupOptions, mockProjectOptions, projectIssuesPath, projectMRsPath, projectName, userId, widget;
......
/* eslint-disable space-before-function-paren, no-return-assign, no-var, quotes */ /* eslint-disable space-before-function-paren, no-return-assign, no-var, quotes */
/* global ShortcutsIssuable */ /* global ShortcutsIssuable */
require('~/copy_as_gfm'); import '~/copy_as_gfm';
require('~/shortcuts_issuable'); import '~/shortcuts_issuable';
(function() { (function() {
describe('ShortcutsIssuable', function() { describe('ShortcutsIssuable', function() {
......
import AccessorUtilities from '~/lib/utils/accessor'; import AccessorUtilities from '~/lib/utils/accessor';
require('~/signin_tabs_memoizer'); import '~/signin_tabs_memoizer';
((global) => { ((global) => {
describe('SigninTabsMemoizer', () => { describe('SigninTabsMemoizer', () => {
......
require('~/smart_interval'); import '~/smart_interval';
(() => { (() => {
const DEFAULT_MAX_INTERVAL = 100; const DEFAULT_MAX_INTERVAL = 100;
......
/* eslint-disable space-before-function-paren, no-var, no-return-assign, quotes */ /* eslint-disable space-before-function-paren, no-var, no-return-assign, quotes */
require('~/syntax_highlight'); import '~/syntax_highlight';
(function() { (function() {
describe('Syntax Highlighter', function() { describe('Syntax Highlighter', function() {
......
// enable test fixtures import $ from 'jquery';
require('jasmine-jquery'); import _ from 'underscore';
import 'jasmine-jquery';
import '~/commons';
// enable test fixtures
jasmine.getFixtures().fixturesPath = '/base/spec/javascripts/fixtures'; jasmine.getFixtures().fixturesPath = '/base/spec/javascripts/fixtures';
jasmine.getJSONFixtures().fixturesPath = '/base/spec/javascripts/fixtures'; jasmine.getJSONFixtures().fixturesPath = '/base/spec/javascripts/fixtures';
// include common libraries // globalize common libraries
require('~/commons/index.js'); window.$ = window.jQuery = $;
window.$ = window.jQuery = require('jquery'); window._ = _;
window._ = require('underscore');
// stub expected globals // stub expected globals
window.gl = window.gl || {}; window.gl = window.gl || {};
......
require('~/todos'); import '~/todos';
require('~/lib/utils/common_utils'); import '~/lib/utils/common_utils';
describe('Todos', () => { describe('Todos', () => {
preloadFixtures('todos/todos.html.raw'); preloadFixtures('todos/todos.html.raw');
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
/* global MockU2FDevice */ /* global MockU2FDevice */
/* global U2FAuthenticate */ /* global U2FAuthenticate */
require('~/u2f/authenticate'); import '~/u2f/authenticate';
require('~/u2f/util'); import '~/u2f/util';
require('~/u2f/error'); import '~/u2f/error';
require('vendor/u2f'); import 'vendor/u2f';
require('./mock_u2f_device'); import './mock_u2f_device';
(function() { (function() {
describe('U2FAuthenticate', function() { describe('U2FAuthenticate', function() {
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
/* global MockU2FDevice */ /* global MockU2FDevice */
/* global U2FRegister */ /* global U2FRegister */
require('~/u2f/register'); import '~/u2f/register';
require('~/u2f/util'); import '~/u2f/util';
require('~/u2f/error'); import '~/u2f/error';
require('vendor/u2f'); import 'vendor/u2f';
require('./mock_u2f_device'); import './mock_u2f_device';
(function() { (function() {
describe('U2FRegister', function() { describe('U2FRegister', function() {
......
const ClassSpecHelper = require('./helpers/class_spec_helper'); import VersionCheckImage from '~/version_check_image';
const VersionCheckImage = require('~/version_check_image'); import ClassSpecHelper from './helpers/class_spec_helper';
require('jquery');
describe('VersionCheckImage', function () { describe('VersionCheckImage', function () {
describe('bindErrorEvent', function () { describe('bindErrorEvent', function () {
......
require('~/visibility_select'); import '~/visibility_select';
(() => { (() => {
const VisibilitySelect = gl.VisibilitySelect; const VisibilitySelect = gl.VisibilitySelect;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
/* global Mousetrap */ /* global Mousetrap */
/* global ZenMode */ /* global ZenMode */
require('~/zen_mode'); import '~/zen_mode';
(function() { (function() {
var enterZen, escapeKeydown, exitZen; var enterZen, escapeKeydown, exitZen;
......
...@@ -28,6 +28,7 @@ describe Issue, elastic: true do ...@@ -28,6 +28,7 @@ describe Issue, elastic: true do
options = { project_ids: [project.id] } options = { project_ids: [project.id] }
expect(described_class.elastic_search('(term1 | term2 | term3) +bla-bla', options: options).total_count).to eq(2) expect(described_class.elastic_search('(term1 | term2 | term3) +bla-bla', options: options).total_count).to eq(2)
expect(described_class.elastic_search(Issue.last.to_reference, options: options).total_count).to eq(1)
end end
it "returns json with all needed elements" do it "returns json with all needed elements" do
......
...@@ -28,6 +28,7 @@ describe MergeRequest, elastic: true do ...@@ -28,6 +28,7 @@ describe MergeRequest, elastic: true do
options = { project_ids: [project.id] } options = { project_ids: [project.id] }
expect(described_class.elastic_search('term1 | term2 | term3', options: options).total_count).to eq(2) expect(described_class.elastic_search('term1 | term2 | term3', options: options).total_count).to eq(2)
expect(described_class.elastic_search(MergeRequest.last.to_reference, options: options).total_count).to eq(1)
end end
it "returns json with all needed elements" do it "returns json with all needed elements" do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment