Просмотр исходного кода

Add custom assertion method to chai for comparing CM Pos objects

Alasdair Smith 8 лет назад
Родитель
Сommit
3a90a2d004
2 измененных файлов с 20 добавлено и 0 удалено
  1. 1 0
      services/web/karma.conf.js
  2. 19 0
      services/web/test/unit_frontend/es/es-bootstrap.js

+ 1 - 0
services/web/karma.conf.js

@@ -14,6 +14,7 @@ module.exports = function (config) {
     browsers: ['ChromeCustom'],
     files: [
       'test/unit_frontend/js/bootstrap.js',
+      'test/unit_frontend/es/es-bootstrap.js',
       // Angular must be loaded before requirejs to set up angular global
       'public/js/libs/angular-1.6.4.min.js',
       'public/js/libs/angular-mocks.js',

+ 19 - 0
services/web/test/unit_frontend/es/es-bootstrap.js

@@ -0,0 +1,19 @@
+/* global chai */
+
+/**
+ * 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} })`
+  )
+})