summaryrefslogtreecommitdiff
path: root/doc/development
diff options
context:
space:
mode:
authorFilipa Lacerda <filipa@gitlab.com>2017-08-04 19:38:37 +0100
committerFilipa Lacerda <filipa@gitlab.com>2017-08-04 19:38:37 +0100
commite4f8aa719bcde767793a82103f149cd37b4ad14c (patch)
tree8070383e2618d45907b33909e5f5020f5e92bcec /doc/development
parenta432ae9d06f7dc28d0825e87bafb33a04ae3cf20 (diff)
parent017550d482b0035dbec3ae93f8b0c73839772464 (diff)
downloadgitlab-ce-e4f8aa719bcde767793a82103f149cd37b4ad14c.tar.gz
Merge branch 'master' into issue-discussions-refactor
* master: (162 commits) Since mysql is not a priority anymore, test it less Add container registry and spam logs icons Fix different Markdown styles Backport to CE for: Make new dropdown dividers full width Bump GITLAB_SHELL_VERSION and GITALY_VERSION to support unhiding refs Install yarn via apt in update guides Use long curl options Remove monkey-patched Array.prototype.first() and last() methods Openshift Getting Started 35659 Rename Pipelines tab to CI / CD in new navigation Don't bother going through an entire Banzai pipeline for empty text Add active state for pipelines settings on old nav Bump rspec to 3.6.0 Resolve "Specific Async Script Loading by using a Page Variable" Revert "Merge branch 'rs-warm-capybara-only-in-ci' into 'master'" another rubocop style fix Use mixin for new dropdown style Migrate Repository#last_commit_for_path to Gitaly Migrate blame loading to Gitaly ...
Diffstat (limited to 'doc/development')
-rw-r--r--doc/development/fe_guide/style_guide_js.md54
-rw-r--r--doc/development/testing.md2
2 files changed, 36 insertions, 20 deletions
diff --git a/doc/development/fe_guide/style_guide_js.md b/doc/development/fe_guide/style_guide_js.md
index 149a0159680..6ade3231fac 100644
--- a/doc/development/fe_guide/style_guide_js.md
+++ b/doc/development/fe_guide/style_guide_js.md
@@ -11,7 +11,7 @@ See [our current .eslintrc][eslintrc] for specific rules and patterns.
#### ESlint
-1. **Never** disable eslint rules unless you have a good reason.
+1. **Never** disable eslint rules unless you have a good reason.
You may see a lot of legacy files with `/* eslint-disable some-rule, some-other-rule */`
at the top, but legacy files are a special case. Any time you develop a new feature or
refactor an existing one, you should abide by the eslint rules.
@@ -100,26 +100,44 @@ followed by any global declarations, then a blank newline prior to any imports o
export default Foo;
```
-1. Relative paths: Unless you are writing a test, always reference other scripts using
-relative paths instead of `~`
- * In **app/assets/javascripts**:
+1. Relative paths: when importing a module in the same directory, a child
+directory, or an immediate parent directory prefer relative paths. When
+importing a module which is two or more levels up, prefer either `~/` or `ee/`
+.
- ```javascript
- // bad
- import Foo from '~/foo'
+In **app/assets/javascripts/my-feature/subdir**:
- // good
- import Foo from '../foo';
- ```
- * In **spec/javascripts**:
+``` javascript
+// bad
+import Foo from '~/my-feature/foo';
+import Bar from '~/my-feature/subdir/bar';
+import Bin from '~/my-feature/subdir/lib/bin';
- ```javascript
- // bad
- import Foo from '../../app/assets/javascripts/foo'
+// good
+import Foo from '../foo';
+import Bar from './bar';
+import Bin from './lib/bin';
+```
- // good
- import Foo from '~/foo';
- ```
+In **spec/javascripts**:
+
+``` javascript
+// bad
+import Foo from '../../app/assets/javascripts/my-feature/foo';
+
+// good
+import Foo from '~/my-feature/foo';
+```
+
+When referencing an **EE component**:
+
+``` javascript
+// bad
+import Foo from '../../../../../ee/app/assets/javascripts/my-feature/ee-foo';
+
+// good
+import Foo from 'ee/my-feature/foo';
+```
1. Avoid using IIFE. Although we have a lot of examples of files which wrap their
contents in IIFEs (immediately-invoked function expressions),
@@ -465,7 +483,7 @@ A forEach will cause side effects, it will be mutating the array being iterated.
#### Vue and Boostrap
1. Tooltips: Do not rely on `has-tooltip` class name for Vue components
- ```javascript
+ ```javascript
// bad
<span
class="has-tooltip"
diff --git a/doc/development/testing.md b/doc/development/testing.md
index e6aa4ae8f2f..3d5aa3d45e9 100644
--- a/doc/development/testing.md
+++ b/doc/development/testing.md
@@ -426,8 +426,6 @@ Here are some things to keep in mind regarding test performance:
- `FactoryGirl.build(...)` and `.build_stubbed` are faster than `.create`.
- Don't `create` an object when `build`, `build_stubbed`, `attributes_for`,
`spy`, or `double` will do. Database persistence is slow!
-- Use `create(:empty_project)` instead of `create(:project)` when you don't need
- the underlying Git repository. Filesystem operations are slow!
- Don't mark a feature as requiring JavaScript (through `@javascript` in
Spinach or `:js` in RSpec) unless it's _actually_ required for the test
to be valid. Headless browser testing is slow!