From cbc4aed6297a105961c0b3cd2aef8def59dccf2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Oddsson?= Date: Tue, 13 Aug 2019 12:11:20 +0100 Subject: [PATCH] set content type in error event payload --- src/index.js | 9 +++++++-- test/test.js | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 80d17df..9ffa1ae 100644 --- a/src/index.js +++ b/src/index.js @@ -131,7 +131,7 @@ function check(autoCheckElement: AutoCheckElement) { if (error.statusCode === 422 && error.responseText) { if (error.contentType.includes('application/json')) { validity = JSON.parse(error.responseText).text - } else { + } else if (error.contentType.includes('text/plain')) { validity = error.responseText } } @@ -140,7 +140,12 @@ function check(autoCheckElement: AutoCheckElement) { input.setCustomValidity(validity) } autoCheckElement.dispatchEvent(new CustomEvent('error')) - input.dispatchEvent(new CustomEvent('auto-check-error', {detail: {message: error.responseText}, bubbles: true})) + input.dispatchEvent( + new CustomEvent('auto-check-error', { + detail: {message: error.responseText, contentType: error.contentType}, + bubbles: true + }) + ) }) .then(always, always) } diff --git a/test/test.js b/test/test.js index 8916a47..d01536b 100644 --- a/test/test.js +++ b/test/test.js @@ -180,5 +180,22 @@ describe('auto-check element', function() { assert.deepEqual('This is a warning', result) }) }) + + describe('`auto-check-error` event', function() { + it('includes `Content-Type` header in event payload', function() { + return new Promise(resolve => { + const autoCheck = document.querySelector('auto-check') + const input = document.querySelector('input') + autoCheck.src = '/fail' + input.value = 'hub' + input.dispatchEvent(new InputEvent('change')) + input.addEventListener('auto-check-error', event => { + resolve(event.detail.contentType) + }) + }).then(contentType => { + assert.equal('application/json', contentType) + }) + }) + }) }) })