diff --git a/.travis.yml b/.travis.yml index 0a9ae4754f..ce1213f483 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,11 @@ sudo: required dist: trusty addons: - - chrome: stable + apt: + sources: + - google-chrome + packages: + - google-chrome-stable language: node_js @@ -21,6 +25,8 @@ install: - travis_retry yarn install script: + # Use Chromium instead of Chrome. + - export CHROME_BIN=chromium-browser - yarn run build - yarn run ci - cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js diff --git a/README.md b/README.md index 22efa882f0..a241f72910 100644 --- a/README.md +++ b/README.md @@ -137,17 +137,32 @@ yarn run clean:dist Testing ------- -### Unit Test +### Test a Pull Request -Unit tests use Karma. You can find the configuration file at the same level of this README file:`./karma.conf.js` If you are going to use a remote test enviroment you need to edit the './karma.conf.js'. Follow the instructions you will find inside it. To executing tests whenever any file changes you can modify the 'autoWatch' option to 'true' and 'singleRun' option to 'false'. A coverage report is also available at: http://localhost:9876/ after you run:`yarn run coverage`. +If you would like to contribute by testing a Pull Request (PR), here's how to do so. Keep in mind, you **do not need to have a DSpace backend / REST API installed locally to test a PR**. By default, the dspace-angular project points at our demo REST API -To correctly run the tests you need to run the build once with:`yarn run build`. +1. Pull down the branch that the Pull Request was built from. Easy instructions for doing so can be found on the Pull Request itself. + * Next to the "Merge" button, you'll see a link that says "command line instructions". + * Click it, and follow "Step 1" of those instructions to checkout the pull down the PR branch. +2. `yarn run clean` (This resets your local dependencies to ensure you are up-to-date with this PR) +3. `yarn install` (Updates your local dependencies to those in the PR) +4. `yarn start` (Rebuilds the project, and deploys to localhost:3000, by default) +5. At this point, the code from the PR will be deployed to http://localhost:3000. Test it out, and ensure that it does what is described in the PR (or fixes the bug described in the ticket linked to the PR). + +Once you have tested the Pull Request, please add a comment and/or approval to the PR to let us know whether you found it to be successful (or not). Thanks! + + +### Unit Tests + +Unit tests use Karma. You can find the configuration file at the same level of this README file:`./karma.conf.js` If you are going to use a remote test enviroment you need to edit the `./karma.conf.js`. Follow the instructions you will find inside it. To executing tests whenever any file changes you can modify the 'autoWatch' option to 'true' and 'singleRun' option to 'false'. A coverage report is also available at: http://localhost:9876/ after you run: `yarn run coverage`. + +To correctly run the tests you need to run the build once with: `yarn run build`. The default browser is Google Chrome. Place your tests in the same location of the application source code files that they test. -and run:`yarn run test` +and run: `yarn run test` ### E2E test @@ -161,15 +176,18 @@ Protractor needs a functional instance of the DSpace interface to run the E2E te or any command that bring up the DSpace interface. -Place your tests at the following path:`./e2e` +Place your tests at the following path: `./e2e` -and run:`yarn run e2e` +and run: `yarn run e2e` ### Continuous Integration (CI) Test To run all the tests (e.g.: to run tests with Continuous Integration software) you can execute:`yarn run ci` Keep in mind that this command prerequisites are the sum of unit test and E2E tests. -##Documentation To build the code documentation we use [TYPEDOC](http://typedoc.org). TYPEDOC is a documentation generator for TypeScript projects. It extracts informations from properly formatted comments that can be written within the code files. Follow the instructions [here](http://typedoc.org/guides/doccomments/) to know how to make those comments. +Documentation +-------------- + +To build the code documentation we use [TYPEDOC](http://typedoc.org). TYPEDOC is a documentation generator for TypeScript projects. It extracts informations from properly formatted comments that can be written within the code files. Follow the instructions [here](http://typedoc.org/guides/doccomments/) to know how to make those comments. Run:`yarn run docs` to produce the documentation that will be available in the 'doc' folder. @@ -322,8 +340,8 @@ Install your library via `yarn add lib-name --save` and import it in your code. If the library does not include typings, you can install them using yarn: ```bash -yarn add d3 --save -yarn add @types/d3 --save-dev +yarn add d3 +yarn add @types/d3 --dev ``` If the library doesn't have typings available at `@types/`, you can still use it by manually adding typings for it: @@ -349,14 +367,18 @@ If you're importing a module that uses CommonJS you need to import as import * as _ from 'lodash'; ``` -yarn lockfile +Managing Dependencies (via yarn) ------------- -This project makes use of yarn to ensure that the exact same dependency versions are used every time you install it. +This project makes use of [`yarn`](https://yarnpkg.com/en/) to ensure that the exact same dependency versions are used every time you install it. -yarn creates the file [`yarn.lock`](https://yarnpkg.com/en/docs/yarn-lock) to track those versions. That file is updated automatically every time you install a new dependency from the commandline (by using `yarn add some-lib --save` or `yarn add some-lib --save-dev`). +* `yarn` creates a [`yarn.lock`](https://yarnpkg.com/en/docs/yarn-lock) to track those versions. That file is updated automatically by whenever dependencies are added/updated/removed via yarn. +* **Adding new dependencies**: To install/add a new dependency (third party library), use [`yarn add`](https://yarnpkg.com/en/docs/cli/add). For example: `yarn add some-lib`. + * If you are adding a new build tool dependency (to `devDependencies`), use `yarn add some-lib --dev` +* **Upgrading existing dependencies**: To upgrade existing dependencies, you can use [`yarn upgrade`](https://yarnpkg.com/en/docs/cli/upgrade). For example: `yarn upgrade some-lib` or `yarn upgrade some-lib@version` +* **Removing dependencies**: If a dependency is no longer needed, or replaced, use [`yarn remove`](https://yarnpkg.com/en/docs/cli/remove) to remove it. -If you manually add a package or change a version in `package.json` you'll have to update yarn's lock file as well. You can do so by running `yarn upgrade` +As you can see above, using `yarn` commandline tools means that you should never need to modify the `package.json` manually. *We recommend always using `yarn` to keep dependencies updated / in sync.* Frequently asked questions -------------------------- diff --git a/package.json b/package.json index b211892de9..710f62a257 100644 --- a/package.json +++ b/package.json @@ -69,26 +69,26 @@ "coverage": "http-server -c-1 -o -p 9875 ./coverage" }, "dependencies": { - "@angular/animations": "5.2.1", - "@angular/common": "5.2.1", - "@angular/core": "5.2.1", - "@angular/forms": "5.2.1", - "@angular/http": "5.2.1", - "@angular/platform-browser": "5.2.1", - "@angular/platform-browser-dynamic": "5.2.1", - "@angular/platform-server": "5.2.1", - "@angular/router": "5.2.1", + "@angular/animations": "^5.2.5", + "@angular/common": "^5.2.5", + "@angular/core": "^5.2.5", + "@angular/forms": "^5.2.5", + "@angular/http": "^5.2.5", + "@angular/platform-browser": "^5.2.5", + "@angular/platform-browser-dynamic": "^5.2.5", + "@angular/platform-server": "^5.2.5", + "@angular/router": "^5.2.5", "@angularclass/bootloader": "1.0.1", - "@ng-bootstrap/ng-bootstrap": "1.0.0-beta.9", - "@ngrx/effects": "4.1.1", - "@ngrx/router-store": "4.1.1", - "@ngrx/store": "4.1.1", + "@ng-bootstrap/ng-bootstrap": "^1.0.0", + "@ngrx/effects": "^5.1.0", + "@ngrx/router-store": "^5.0.1", + "@ngrx/store": "^5.1.0", "@nguniversal/express-engine": "5.0.0-beta.5", "@ngx-translate/core": "9.1.1", "@ngx-translate/http-loader": "2.0.1", "angular-idle-preload": "2.0.4", "body-parser": "1.18.2", - "bootstrap": "4.0.0-beta", + "bootstrap": "^4.0.0", "cerialize": "0.1.18", "compression": "1.7.1", "cookie-parser": "1.4.3", @@ -106,45 +106,45 @@ "pem": "1.12.3", "reflect-metadata": "0.1.12", "rxjs": "5.5.6", - "ts-md5": "1.2.3", + "ts-md5": "^1.2.4", "uuid": "^3.2.1", "webfontloader": "1.6.28", "zone.js": "0.8.20" }, "devDependencies": { - "@angular/compiler": "^5.2.1", - "@angular/compiler-cli": "^5.2.1", - "@ngrx/store-devtools": "4.1.1", - "@ngtools/webpack": "1.9.5", + "@angular/compiler": "^5.2.5", + "@angular/compiler-cli": "^5.2.5", + "@ngrx/store-devtools": "^5.1.0", + "@ngtools/webpack": "^1.10.0", "@types/cookie-parser": "1.4.1", "@types/deep-freeze": "0.1.1", - "@types/express": "4.11.0", + "@types/express": "^4.11.1", "@types/express-serve-static-core": "4.11.1", "@types/hammerjs": "2.0.35", - "@types/jasmine": "2.8.4", + "@types/jasmine": "^2.8.6", "@types/memory-cache": "0.2.0", "@types/mime": "2.0.0", - "@types/node": "^9.3.0", + "@types/node": "^9.4.6", "@types/serve-static": "1.13.1", "@types/uuid": "^3.4.3", "@types/webfontloader": "1.6.29", - "ajv": "6.0.1", - "ajv-keywords": "3.0.0", + "ajv": "^6.1.1", + "ajv-keywords": "^3.1.0", "angular2-template-loader": "0.6.2", - "autoprefixer": "7.2.5", + "autoprefixer": "^8.0.0", "awesome-typescript-loader": "3.4.1", - "caniuse-lite": "1.0.30000792", + "caniuse-lite": "^1.0.30000697", "codelyzer": "^4.1.0", - "compression-webpack-plugin": "1.1.3", - "copy-webpack-plugin": "4.3.1", + "compression-webpack-plugin": "^1.1.6", + "copy-webpack-plugin": "^4.4.1", "coveralls": "3.0.0", "css-loader": "0.28.9", "deep-freeze": "0.0.1", - "exports-loader": "0.6.4", + "exports-loader": "^0.7.0", "html-webpack-plugin": "2.30.1", "imports-loader": "0.7.1", "istanbul-instrumenter-loader": "3.0.0", - "jasmine-core": "2.9.1", + "jasmine-core": "^2.99.1", "jasmine-marbles": "0.2.0", "jasmine-spec-reporter": "4.2.1", "json-loader": "0.5.7", @@ -156,31 +156,31 @@ "karma-jasmine": "1.1.1", "karma-mocha-reporter": "2.2.5", "karma-phantomjs-launcher": "1.0.4", - "karma-remap-coverage": "0.1.4", + "karma-remap-coverage": "^0.1.5", "karma-remap-istanbul": "0.6.0", "karma-sourcemap-loader": "0.3.7", "karma-webdriver-launcher": "1.0.5", "karma-webpack": "2.0.9", - "ngrx-store-freeze": "0.2.0", - "node-sass": "4.7.2", - "nodemon": "1.14.11", + "ngrx-store-freeze": "^0.2.1", + "node-sass": "^4.7.2", + "nodemon": "^1.15.0", "npm-run-all": "4.1.2", - "postcss": "6.0.16", + "postcss": "^6.0.18", "postcss-apply": "0.8.0", - "postcss-cli": "4.1.1", + "postcss-cli": "^5.0.0", "postcss-cssnext": "3.1.0", - "postcss-loader": "2.0.10", + "postcss-loader": "^2.1.0", "postcss-responsive-type": "1.0.0", "postcss-smart-import": "0.7.6", - "protractor": "5.2.2", + "protractor": "^5.3.0", "protractor-istanbul-plugin": "2.0.0", "raw-loader": "0.5.1", "resolve-url-loader": "2.2.1", "rimraf": "2.6.2", - "rollup": "0.54.1", - "rollup-plugin-commonjs": "8.2.6", + "rollup": "^0.56.0", + "rollup-plugin-commonjs": "^8.3.0", "rollup-plugin-node-globals": "1.1.0", - "rollup-plugin-node-resolve": "3.0.2", + "rollup-plugin-node-resolve": "^3.0.3", "rollup-plugin-uglify": "3.0.0", "sass-loader": "6.0.6", "script-ext-html-webpack-plugin": "1.8.8", @@ -191,11 +191,11 @@ "ts-helpers": "1.1.2", "ts-node": "4.1.0", "tslint": "5.9.1", - "typedoc": "0.9.0", + "typedoc": "^0.9.0", "typescript": "2.6.2", - "webpack": "^3.10.0", - "webpack-bundle-analyzer": "2.9.2", - "webpack-dev-middleware": "2.0.4", + "webpack": "^3.11.0", + "webpack-bundle-analyzer": "^2.10.0", + "webpack-dev-middleware": "^2.0.5", "webpack-dev-server": "2.11.1", "webpack-merge": "4.1.1", "webpack-node-externals": "1.6.0" diff --git a/src/app/+search-page/search-results/search-results.component.html b/src/app/+search-page/search-results/search-results.component.html index 1b9bd7d52a..7d7c169380 100644 --- a/src/app/+search-page/search-results/search-results.component.html +++ b/src/app/+search-page/search-results/search-results.component.html @@ -1,4 +1,4 @@ -
+

{{ 'search.results.head' | translate }}

= { @@ -28,5 +30,6 @@ export const appReducers: ActionReducerMap = { header: headerReducer, notifications: notificationsReducer, searchSidebar: sidebarReducer, - searchFilter: filterReducer + searchFilter: filterReducer, + truncatable: truncatableReducer }; diff --git a/src/app/header/header.component.html b/src/app/header/header.component.html index 0cdb443b8a..953d1ba922 100644 --- a/src/app/header/header.component.html +++ b/src/app/header/header.component.html @@ -1,5 +1,5 @@
-