From 240edf89aa6837ba89c10af89b5abbbdb1ae1f4e Mon Sep 17 00:00:00 2001 From: Nazar Gargol Date: Thu, 20 Aug 2020 15:04:35 +1200 Subject: [PATCH] Added automatic 'first_name' column mapping for members CSV importer no issue - When columns which match /name/ patter are present in imported CSV they should detect the mapping to 'name' column automatically --- .../admin/app/services/member-import-validator.js | 5 +++++ .../services/member-import-validator-test.js | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/ghost/admin/app/services/member-import-validator.js b/ghost/admin/app/services/member-import-validator.js index 7acd64e39d..4aed0ff09c 100644 --- a/ghost/admin/app/services/member-import-validator.js +++ b/ghost/admin/app/services/member-import-validator.js @@ -172,6 +172,11 @@ export default Service.extend({ continue; } + if (!mapping.name && /name/.test(key)) { + mapping.name = key; + continue; + } + if (!mapping[key] && supportedTypes.includes(key) && !(autoDetectedTypes.includes(key))) { mapping[key] = key; } diff --git a/ghost/admin/tests/integration/services/member-import-validator-test.js b/ghost/admin/tests/integration/services/member-import-validator-test.js index 6b57d6f2c2..5b5de8fd39 100644 --- a/ghost/admin/tests/integration/services/member-import-validator-test.js +++ b/ghost/admin/tests/integration/services/member-import-validator-test.js @@ -58,6 +58,7 @@ describe('Integration: Service: member-import-validator', function () { expect(validationErrors.length).to.equal(1); expect(validationErrors[0].message).to.equal('Missing Stripe connection'); + expect(mapping.name).to.equal('name'); expect(mapping.email).to.equal('email'); expect(mapping.stripe_customer_id).to.equal('stripe_customer_id'); }); @@ -206,5 +207,19 @@ describe('Integration: Service: member-import-validator', function () { expect(result.email).to.equal('correo_electronico'); expect(result.stripe_customer_id).to.equal('stripe_id'); }); + + it('correctly detects variation of "name" mapping', async function () { + this.owner.register('service:membersUtils', Service.extend({ + isStripeEnabled: false + })); + + let service = this.owner.lookup('service:member-import-validator'); + + const result = service._detectDataTypes([{ + first_name: 'Rish' + }]); + + expect(result.name).to.equal('first_name'); + }); }); });