Unlocked from autocomplete city and postcode fields #1703
This commit is contained in:
parent
d66d2f16c0
commit
031dbcb63a
|
@ -33,8 +33,8 @@ export default {
|
||||||
taxNumber: `${components.vnTextfield}[name="fi"]`,
|
taxNumber: `${components.vnTextfield}[name="fi"]`,
|
||||||
socialName: `${components.vnTextfield}[name="socialName"]`,
|
socialName: `${components.vnTextfield}[name="socialName"]`,
|
||||||
street: `${components.vnTextfield}[name="street"]`,
|
street: `${components.vnTextfield}[name="street"]`,
|
||||||
postcode: `vn-autocomplete[field="$ctrl.client.postcode"]`,
|
postcode: `${components.vnTextfield}[name="postcode"]`,
|
||||||
city: `vn-autocomplete[field="$ctrl.client.city"]`,
|
city: `${components.vnTextfield}[name="city"]`,
|
||||||
province: `vn-autocomplete[field="$ctrl.client.provinceFk"]`,
|
province: `vn-autocomplete[field="$ctrl.client.provinceFk"]`,
|
||||||
country: `vn-autocomplete[field="$ctrl.client.countryFk"]`,
|
country: `vn-autocomplete[field="$ctrl.client.countryFk"]`,
|
||||||
userName: `${components.vnTextfield}[name="userName"]`,
|
userName: `${components.vnTextfield}[name="userName"]`,
|
||||||
|
@ -65,8 +65,8 @@ export default {
|
||||||
equalizationTaxCheckbox: 'vn-check[label="Is equalizated"] md-checkbox',
|
equalizationTaxCheckbox: 'vn-check[label="Is equalizated"] md-checkbox',
|
||||||
acceptPropagationButton: 'vn-client-fiscal-data > vn-confirm button[response=ACCEPT]',
|
acceptPropagationButton: 'vn-client-fiscal-data > vn-confirm button[response=ACCEPT]',
|
||||||
addressInput: `${components.vnTextfield}[name="street"]`,
|
addressInput: `${components.vnTextfield}[name="street"]`,
|
||||||
postcodeAutocomplete: `vn-autocomplete[field="$ctrl.client.postcode"]`,
|
postcodeInput: `${components.vnTextfield}[name="postcode"]`,
|
||||||
cityAutocomplete: `vn-autocomplete[field="$ctrl.client.city"]`,
|
cityInput: `${components.vnTextfield}[name="city"]`,
|
||||||
provinceAutocomplete: 'vn-autocomplete[field="$ctrl.client.provinceFk"]',
|
provinceAutocomplete: 'vn-autocomplete[field="$ctrl.client.provinceFk"]',
|
||||||
countryAutocomplete: 'vn-autocomplete[field="$ctrl.client.countryFk"]',
|
countryAutocomplete: 'vn-autocomplete[field="$ctrl.client.countryFk"]',
|
||||||
activeCheckbox: 'vn-check[label="Active"] md-checkbox',
|
activeCheckbox: 'vn-check[label="Active"] md-checkbox',
|
||||||
|
@ -100,8 +100,8 @@ export default {
|
||||||
defaultCheckboxInput: 'vn-check[label="Default"] md-checkbox',
|
defaultCheckboxInput: 'vn-check[label="Default"] md-checkbox',
|
||||||
consigneeInput: `${components.vnTextfield}[name="nickname"]`,
|
consigneeInput: `${components.vnTextfield}[name="nickname"]`,
|
||||||
streetAddressInput: `${components.vnTextfield}[name="street"]`,
|
streetAddressInput: `${components.vnTextfield}[name="street"]`,
|
||||||
postcodeAutocomplete: `vn-autocomplete[field="$ctrl.address.postalCode"]`,
|
postcodeInput: `${components.vnTextfield}[name="postalCode"]`,
|
||||||
cityAutocomplete: `vn-autocomplete[field="$ctrl.address.city"]`,
|
cityInput: `${components.vnTextfield}[name="city"]`,
|
||||||
provinceAutocomplete: 'vn-autocomplete[field="$ctrl.address.provinceFk"]',
|
provinceAutocomplete: 'vn-autocomplete[field="$ctrl.address.provinceFk"]',
|
||||||
agencyAutocomplete: 'vn-autocomplete[field="$ctrl.address.agencyModeFk"]',
|
agencyAutocomplete: 'vn-autocomplete[field="$ctrl.address.agencyModeFk"]',
|
||||||
phoneInput: `${components.vnTextfield}[name="phone"]`,
|
phoneInput: `${components.vnTextfield}[name="phone"]`,
|
||||||
|
|
|
@ -53,7 +53,10 @@ describe('Client create path', () => {
|
||||||
.write(selectors.createClientView.name, 'Carol Danvers')
|
.write(selectors.createClientView.name, 'Carol Danvers')
|
||||||
.write(selectors.createClientView.socialName, 'AVG tax')
|
.write(selectors.createClientView.socialName, 'AVG tax')
|
||||||
.write(selectors.createClientView.street, 'Many places')
|
.write(selectors.createClientView.street, 'Many places')
|
||||||
.autocompleteSearch(selectors.createClientView.postcode, '46000')
|
.autocompleteSearch(selectors.createClientView.country, 'España')
|
||||||
|
.autocompleteSearch(selectors.createClientView.province, 'Province one')
|
||||||
|
.write(selectors.createClientView.city, 'Valencia')
|
||||||
|
.write(selectors.createClientView.postcode, '46000')
|
||||||
.clearInput(selectors.createClientView.email)
|
.clearInput(selectors.createClientView.email)
|
||||||
.write(selectors.createClientView.email, 'incorrect email format')
|
.write(selectors.createClientView.email, 'incorrect email format')
|
||||||
.waitToClick(selectors.createClientView.createButton)
|
.waitToClick(selectors.createClientView.createButton)
|
||||||
|
@ -64,7 +67,7 @@ describe('Client create path', () => {
|
||||||
|
|
||||||
it(`should check for autocompleted city, province and country`, async() => {
|
it(`should check for autocompleted city, province and country`, async() => {
|
||||||
const clientCity = await nightmare
|
const clientCity = await nightmare
|
||||||
.waitToGetProperty(`${selectors.createClientView.city} input`, 'value');
|
.waitToGetProperty(`${selectors.createClientView.city}`, 'value');
|
||||||
|
|
||||||
const clientProvince = await nightmare
|
const clientProvince = await nightmare
|
||||||
.waitToGetProperty(`${selectors.createClientView.province} input`, 'value');
|
.waitToGetProperty(`${selectors.createClientView.province} input`, 'value');
|
||||||
|
|
|
@ -67,8 +67,12 @@ describe('Client Edit fiscalData path', () => {
|
||||||
.write(selectors.clientFiscalData.fiscalIdInput, 'INVALID!')
|
.write(selectors.clientFiscalData.fiscalIdInput, 'INVALID!')
|
||||||
.clearInput(selectors.clientFiscalData.addressInput)
|
.clearInput(selectors.clientFiscalData.addressInput)
|
||||||
.write(selectors.clientFiscalData.addressInput, 'Somewhere edited')
|
.write(selectors.clientFiscalData.addressInput, 'Somewhere edited')
|
||||||
.autocompleteSearch(selectors.clientFiscalData.cityAutocomplete, 'Valencia')
|
.autocompleteSearch(selectors.clientFiscalData.countryAutocomplete, 'España')
|
||||||
.autocompleteSearch(selectors.clientFiscalData.postcodeAutocomplete, '46000')
|
.autocompleteSearch(selectors.clientFiscalData.provinceAutocomplete, 'Province one')
|
||||||
|
.clearInput(selectors.clientFiscalData.cityInput)
|
||||||
|
.write(selectors.clientFiscalData.cityInput, 'Valencia')
|
||||||
|
.clearInput(selectors.clientFiscalData.postcodeInput)
|
||||||
|
.write(selectors.clientFiscalData.postcodeInput, '46000')
|
||||||
.waitToClick(selectors.clientFiscalData.activeCheckbox)
|
.waitToClick(selectors.clientFiscalData.activeCheckbox)
|
||||||
.waitToClick(selectors.clientFiscalData.frozenCheckbox)
|
.waitToClick(selectors.clientFiscalData.frozenCheckbox)
|
||||||
.waitToClick(selectors.clientFiscalData.hasToInvoiceCheckbox)
|
.waitToClick(selectors.clientFiscalData.hasToInvoiceCheckbox)
|
||||||
|
@ -194,14 +198,14 @@ describe('Client Edit fiscalData path', () => {
|
||||||
|
|
||||||
it('should confirm the postcode have been edited', async() => {
|
it('should confirm the postcode have been edited', async() => {
|
||||||
const result = await nightmare
|
const result = await nightmare
|
||||||
.waitToGetProperty(`${selectors.clientFiscalData.postcodeAutocomplete} input`, 'value');
|
.waitToGetProperty(`${selectors.clientFiscalData.postcodeInput}`, 'value');
|
||||||
|
|
||||||
expect(result).toContain('46000');
|
expect(result).toContain('46000');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should confirm the city have been autocompleted', async() => {
|
it('should confirm the city have been autocompleted', async() => {
|
||||||
const result = await nightmare
|
const result = await nightmare
|
||||||
.waitToGetProperty(`${selectors.clientFiscalData.cityAutocomplete} input`, 'value');
|
.waitToGetProperty(`${selectors.clientFiscalData.cityInput}`, 'value');
|
||||||
|
|
||||||
expect(result).toEqual('Valencia');
|
expect(result).toEqual('Valencia');
|
||||||
});
|
});
|
||||||
|
|
|
@ -24,7 +24,11 @@ describe('Client Add address path', () => {
|
||||||
const result = await nightmare
|
const result = await nightmare
|
||||||
.waitToClick(selectors.clientAddresses.defaultCheckboxInput)
|
.waitToClick(selectors.clientAddresses.defaultCheckboxInput)
|
||||||
.clearInput(selectors.clientAddresses.streetAddressInput)
|
.clearInput(selectors.clientAddresses.streetAddressInput)
|
||||||
.autocompleteSearch(selectors.clientAddresses.postcodeAutocomplete, '46000')
|
.autocompleteSearch(selectors.clientAddresses.provinceAutocomplete, 'Province one')
|
||||||
|
.clearInput(selectors.clientAddresses.cityInput)
|
||||||
|
.write(selectors.clientAddresses.cityInput, 'Valencia')
|
||||||
|
.clearInput(selectors.clientAddresses.postcodeInput)
|
||||||
|
.write(selectors.clientAddresses.postcodeInput, '46000')
|
||||||
.autocompleteSearch(selectors.clientAddresses.agencyAutocomplete, 'Entanglement')
|
.autocompleteSearch(selectors.clientAddresses.agencyAutocomplete, 'Entanglement')
|
||||||
.write(selectors.clientAddresses.phoneInput, '999887744')
|
.write(selectors.clientAddresses.phoneInput, '999887744')
|
||||||
.write(selectors.clientAddresses.mobileInput, '999887744')
|
.write(selectors.clientAddresses.mobileInput, '999887744')
|
||||||
|
@ -36,14 +40,14 @@ describe('Client Add address path', () => {
|
||||||
|
|
||||||
it('should confirm the postcode have been edited', async() => {
|
it('should confirm the postcode have been edited', async() => {
|
||||||
const result = await nightmare
|
const result = await nightmare
|
||||||
.waitToGetProperty(`${selectors.clientAddresses.postcodeAutocomplete} input`, 'value');
|
.waitToGetProperty(`${selectors.clientAddresses.postcodeInput}`, 'value');
|
||||||
|
|
||||||
expect(result).toContain('46000');
|
expect(result).toContain('46000');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should confirm the city have been autocompleted', async() => {
|
it('should confirm the city have been autocompleted', async() => {
|
||||||
const result = await nightmare
|
const result = await nightmare
|
||||||
.waitToGetProperty(`${selectors.clientAddresses.cityAutocomplete} input`, 'value');
|
.waitToGetProperty(`${selectors.clientAddresses.cityInput}`, 'value');
|
||||||
|
|
||||||
expect(result).toEqual('Valencia');
|
expect(result).toEqual('Valencia');
|
||||||
});
|
});
|
||||||
|
|
|
@ -54,5 +54,6 @@
|
||||||
"Weekday cannot be blank": "Weekday cannot be blank",
|
"Weekday cannot be blank": "Weekday cannot be blank",
|
||||||
"This ticket can not be modified": "This ticket can not be modified",
|
"This ticket can not be modified": "This ticket can not be modified",
|
||||||
"You can't delete a confirmed order": "You can't delete a confirmed order",
|
"You can't delete a confirmed order": "You can't delete a confirmed order",
|
||||||
"Value has an invalid format": "Value has an invalid format"
|
"Value has an invalid format": "Value has an invalid format",
|
||||||
|
"The postcode doesn't exists. Ensure you put the correct format": "The postcode doesn't exists. Ensure you put the correct format"
|
||||||
}
|
}
|
|
@ -104,5 +104,8 @@
|
||||||
"You can't delete a confirmed order": "No puedes borrar un pedido confirmado",
|
"You can't delete a confirmed order": "No puedes borrar un pedido confirmado",
|
||||||
"Can't create stowaway for this ticket": "No se puede crear un polizon para este ticket",
|
"Can't create stowaway for this ticket": "No se puede crear un polizon para este ticket",
|
||||||
"Value has an invalid format": "El valor tiene un formato incorrecto",
|
"Value has an invalid format": "El valor tiene un formato incorrecto",
|
||||||
"Invalid quantity": "Cantidad invalida"
|
"Invalid quantity": "Cantidad invalida",
|
||||||
|
"This postal code is not valid": "This postal code is not valid",
|
||||||
|
"is invalid": "is invalid",
|
||||||
|
"The postcode doesn't exists. Ensure you put the correct format": "El código postal no existe. Asegúrate de ponerlo con el formato correcto"
|
||||||
}
|
}
|
|
@ -42,6 +42,21 @@ module.exports = Self => {
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Self.validateAsync('postalCode', hasValidPostcode, {
|
||||||
|
message: `The postcode doesn't exists. Ensure you put the correct format`
|
||||||
|
});
|
||||||
|
|
||||||
|
async function hasValidPostcode(err, done) {
|
||||||
|
if (!this.postalCode)
|
||||||
|
return done();
|
||||||
|
|
||||||
|
const models = Self.app.models;
|
||||||
|
const postcode = await models.Postcode.findById(this.postalCode);
|
||||||
|
|
||||||
|
if (!postcode) err();
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
// Helpers
|
// Helpers
|
||||||
|
|
||||||
Self.observe('before save', async function(ctx) {
|
Self.observe('before save', async function(ctx) {
|
||||||
|
|
|
@ -160,6 +160,21 @@ module.exports = Self => {
|
||||||
return regexp.test(value);
|
return regexp.test(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Self.validateAsync('postCode', hasValidPostcode, {
|
||||||
|
message: `The postcode doesn't exists. Ensure you put the correct format`
|
||||||
|
});
|
||||||
|
|
||||||
|
async function hasValidPostcode(err, done) {
|
||||||
|
if (!this.postcode)
|
||||||
|
return done();
|
||||||
|
|
||||||
|
const models = Self.app.models;
|
||||||
|
const postcode = await models.Postcode.findById(this.postcode);
|
||||||
|
|
||||||
|
if (!postcode) err();
|
||||||
|
done();
|
||||||
|
}
|
||||||
|
|
||||||
Self.observe('before save', async function(ctx) {
|
Self.observe('before save', async function(ctx) {
|
||||||
let changes = ctx.data || ctx.instance;
|
let changes = ctx.data || ctx.instance;
|
||||||
let orgData = ctx.currentInstance;
|
let orgData = ctx.currentInstance;
|
||||||
|
|
|
@ -31,7 +31,11 @@
|
||||||
value-field="id"
|
value-field="id"
|
||||||
label="Province">
|
label="Province">
|
||||||
</vn-autocomplete>
|
</vn-autocomplete>
|
||||||
<vn-autocomplete vn-id="town" vn-one
|
<vn-textfield vn-one
|
||||||
|
label="City"
|
||||||
|
field="$ctrl.address.city">
|
||||||
|
</vn-textfield>
|
||||||
|
<!-- <vn-autocomplete vn-id="town" vn-one
|
||||||
label="City"
|
label="City"
|
||||||
url="/api/Towns"
|
url="/api/Towns"
|
||||||
fields="['id', 'name']"
|
fields="['id', 'name']"
|
||||||
|
@ -55,12 +59,16 @@
|
||||||
{{code}}, {{town.name}} - {{town.province.name}}
|
{{code}}, {{town.name}} - {{town.province.name}}
|
||||||
({{town.province.country.country}})
|
({{town.province.country.country}})
|
||||||
</tpl-item>
|
</tpl-item>
|
||||||
</vn-autocomplete>
|
</vn-autocomplete> -->
|
||||||
<vn-icon-button vn-auto margin-medium-v
|
<vn-textfield vn-one
|
||||||
|
label="Postcode"
|
||||||
|
field="$ctrl.address.postalCode">
|
||||||
|
</vn-textfield>
|
||||||
|
<!-- <vn-icon-button vn-auto margin-medium-v
|
||||||
icon="add_circle"
|
icon="add_circle"
|
||||||
vn-tooltip="New postcode"
|
vn-tooltip="New postcode"
|
||||||
ng-click="postcode.open()">
|
ng-click="postcode.open()">
|
||||||
</vn-icon-button>
|
</vn-icon-button> -->
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-autocomplete
|
<vn-autocomplete
|
||||||
|
|
|
@ -47,7 +47,11 @@
|
||||||
value-field="id"
|
value-field="id"
|
||||||
label="Province">
|
label="Province">
|
||||||
</vn-autocomplete>
|
</vn-autocomplete>
|
||||||
<vn-autocomplete vn-id="town" vn-one
|
<vn-textfield vn-one
|
||||||
|
label="City"
|
||||||
|
field="$ctrl.address.city">
|
||||||
|
</vn-textfield>
|
||||||
|
<!-- <vn-autocomplete vn-id="town" vn-one
|
||||||
label="City"
|
label="City"
|
||||||
url="/api/Towns"
|
url="/api/Towns"
|
||||||
fields="['id', 'name']"
|
fields="['id', 'name']"
|
||||||
|
@ -66,12 +70,16 @@
|
||||||
show-field="code"
|
show-field="code"
|
||||||
value-field="code"
|
value-field="code"
|
||||||
label="Postcode">
|
label="Postcode">
|
||||||
</vn-autocomplete>
|
</vn-autocomplete> -->
|
||||||
<vn-icon-button vn-auto margin-medium-v
|
<vn-textfield vn-one
|
||||||
|
label="Postcode"
|
||||||
|
field="$ctrl.address.postalCode">
|
||||||
|
</vn-textfield>
|
||||||
|
<!-- <vn-icon-button vn-auto margin-medium-v
|
||||||
icon="add_circle"
|
icon="add_circle"
|
||||||
vn-tooltip="New postcode"
|
vn-tooltip="New postcode"
|
||||||
ng-click="postcode.open()">
|
ng-click="postcode.open()">
|
||||||
</vn-icon-button>
|
</vn-icon-button> -->
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-autocomplete vn-one
|
<vn-autocomplete vn-one
|
||||||
|
|
|
@ -50,7 +50,11 @@
|
||||||
</vn-autocomplete>
|
</vn-autocomplete>
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-autocomplete vn-id="town" vn-one
|
<vn-textfield vn-one
|
||||||
|
label="City"
|
||||||
|
field="$ctrl.client.city">
|
||||||
|
</vn-textfield>
|
||||||
|
<!-- <vn-autocomplete vn-id="town" vn-one
|
||||||
label="City"
|
label="City"
|
||||||
url="/api/Towns"
|
url="/api/Towns"
|
||||||
fields="['id', 'name']"
|
fields="['id', 'name']"
|
||||||
|
@ -58,13 +62,17 @@
|
||||||
show-field="name"
|
show-field="name"
|
||||||
value-field="name"
|
value-field="name"
|
||||||
field="$ctrl.client.city">
|
field="$ctrl.client.city">
|
||||||
</vn-autocomplete>
|
</vn-autocomplete> -->
|
||||||
<vn-icon-button vn-auto margin-medium-v
|
<!-- <vn-icon-button vn-auto margin-medium-v
|
||||||
icon="add_circle"
|
icon="add_circle"
|
||||||
vn-tooltip="New postcode"
|
vn-tooltip="New postcode"
|
||||||
ng-click="postcode.open()">
|
ng-click="postcode.open()">
|
||||||
</vn-icon-button>
|
</vn-icon-button> -->
|
||||||
<vn-autocomplete vn-one
|
<vn-textfield vn-one
|
||||||
|
label="Postcode"
|
||||||
|
field="$ctrl.client.postcode">
|
||||||
|
</vn-textfield>
|
||||||
|
<!-- <vn-autocomplete vn-one
|
||||||
url="/api/Postcodes/location"
|
url="/api/Postcodes/location"
|
||||||
fields="['code', 'townFk']"
|
fields="['code', 'townFk']"
|
||||||
field="$ctrl.client.postcode"
|
field="$ctrl.client.postcode"
|
||||||
|
@ -79,7 +87,7 @@
|
||||||
{{code}}, {{town.name}} - {{town.province.name}}
|
{{code}}, {{town.name}} - {{town.province.name}}
|
||||||
({{town.province.country.country}})
|
({{town.province.country.country}})
|
||||||
</tpl-item>
|
</tpl-item>
|
||||||
</vn-autocomplete>
|
</vn-autocomplete> -->
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-textfield
|
<vn-textfield
|
||||||
|
|
|
@ -47,7 +47,15 @@
|
||||||
</vn-autocomplete>
|
</vn-autocomplete>
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-autocomplete vn-id="town" vn-one
|
<vn-textfield vn-one
|
||||||
|
label="City"
|
||||||
|
field="$ctrl.client.city">
|
||||||
|
</vn-textfield>
|
||||||
|
<vn-textfield vn-one
|
||||||
|
label="Postcode"
|
||||||
|
field="$ctrl.client.postcode">
|
||||||
|
</vn-textfield>
|
||||||
|
<!-- <vn-autocomplete vn-id="town" vn-one
|
||||||
label="City"
|
label="City"
|
||||||
url="/api/Towns"
|
url="/api/Towns"
|
||||||
fields="['id', 'name']"
|
fields="['id', 'name']"
|
||||||
|
@ -66,7 +74,7 @@
|
||||||
show-field="code"
|
show-field="code"
|
||||||
value-field="code"
|
value-field="code"
|
||||||
label="Postcode">
|
label="Postcode">
|
||||||
</vn-autocomplete>
|
</vn-autocomplete> -->
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
<vn-horizontal pad-small-v>
|
<vn-horizontal pad-small-v>
|
||||||
<vn-check
|
<vn-check
|
||||||
|
|
Loading…
Reference in New Issue