소스 검색

Add custom assertion method to chai for comparing CM Pos objects

Alasdair Smith 8 년 전
부모
커밋
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} })`
+  )
+})