| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /* global chai */
- // Allow for mocking of Angular
- import 'angular'
- import 'angular-mocks'
- /**
- * Add chai assertion for comparing CodeMirror Pos objects.
- * A deep comparison will fail because CodeMirror inserts additional properties
- * that we want to ignore.
- */
- chai.Assertion.addMethod('equalPos', function(expectedPos) {
- const { line: actualLine, ch: actualCh } = this._obj
- const { line: expectedLine, ch: expectedCh } = expectedPos
- this.assert(
- actualLine === expectedLine && actualCh === expectedCh,
- `expected #{exp} to equal #{act}`,
- `expected #{exp} to not equal #{act}`,
- `Pos({ line: ${expectedLine}, ch: ${expectedCh} })`,
- `Pos({ line: ${actualLine}, ch: ${actualCh} })`
- )
- })
- // Mock ExposedSettings
- window.ExposedSettings = {}
- // Mock the file operation I18n names that are stored in the DOM
- function mockFileOperationI18nNames(id, text) {
- const el = document.createElement('div')
- el.id = id
- el.innerText = text
- el.setAttribute('hidden', true)
- document.body.appendChild(el)
- }
- mockFileOperationI18nNames('file_action_edited_str', 'edited')
- mockFileOperationI18nNames('file_action_renamed_str', 'renamed')
- mockFileOperationI18nNames('file_action_created_str', 'created')
- mockFileOperationI18nNames('file_action_deleted_str', 'deleted')
- /*
- * Bundle all test files together into a single bundle, and run tests against
- * this single bundle.
- * We are using karma-webpack to bundle our tests and the 'default' strategy is
- * to create a bundle for each test file. This isolates the tests better, but
- * causes a problem with Angular. The issue with Angular tests is because we
- * load a single global copy of Angular (see karma.conf.js) but
- * frontend/js/base.js is included in each bundle, meaning the Angular app is
- * initialised for each bundle when it is loaded onto the page when Karma
- * starts. This means that only the last bundle will have controllers/directives
- * registered against it, ultimately meaning that all other bundles will fail
- * because Angular cannot find the controller/directive under test.
- */
- // Import from the top-level any JS files within a test/frontend
- // directory
- const context = require.context('../../', true, /test\/frontend\/.*\.js$/)
- context.keys().forEach(context)
|