diff --git a/modules/client/front/sample/create/index.html b/modules/client/front/sample/create/index.html
index 6a87d55b6..cd3412868 100644
--- a/modules/client/front/sample/create/index.html
+++ b/modules/client/front/sample/create/index.html
@@ -15,7 +15,8 @@
+ ng-model="$ctrl.clientSample.recipient"
+ info="Its only used when sample is sent">
@@ -30,7 +31,7 @@
{
- this.$.showPreview.show();
- let dialog = document.body.querySelector('div.vn-dialog');
- let body = dialog.querySelector('tpl-body');
- let scroll = dialog.querySelector('div:first-child');
-
- body.innerHTML = res.data;
- scroll.scrollTop = 0;
- });
+ this.clientSample.companyId = value;
}
onSubmit() {
@@ -73,28 +42,49 @@ class Controller extends Component {
);
}
+ showPreview() {
+ this.send(true, res => {
+ this.$.showPreview.show();
+ const dialog = document.body.querySelector('div.vn-dialog');
+ const body = dialog.querySelector('tpl-body');
+ const scroll = dialog.querySelector('div:first-child');
+
+ body.innerHTML = res.data;
+ scroll.scrollTop = 0;
+ });
+ }
+
sendSample() {
- let sampleType = this.$.sampleType.selection;
- let params = {
+ this.send(false, () => {
+ this.vnApp.showSuccess(this.$translate.instant('Notification sent!'));
+ this.$state.go('client.card.sample.index');
+ });
+ }
+
+ send(isPreview, cb) {
+ const sampleType = this.$.sampleType.selection;
+ const params = {
clientId: this.$params.id,
recipient: this.clientSample.recipient
};
+ if (!params.recipient)
+ return this.vnApp.showError(this.$translate.instant('Email cannot be blank'));
+
if (!sampleType)
return this.vnApp.showError(this.$translate.instant('Choose a sample'));
- if (sampleType.hasCompany && !this.clientSample.companyFk)
+ if (sampleType.hasCompany && !this.clientSample.companyId)
return this.vnApp.showError(this.$translate.instant('Choose a company'));
if (sampleType.hasCompany)
- params.companyId = this.clientSample.companyFk;
+ params.companyId = this.clientSample.companyId;
+
+ if (isPreview) params.isPreview = true;
const serializedParams = this.$httpParamSerializer(params);
const query = `email/${sampleType.code}?${serializedParams}`;
- this.$http.get(query).then(res => {
- this.vnApp.showSuccess(this.$translate.instant('Notification sent!'));
- this.$state.go('client.card.sample.index');
- });
+ this.$http.get(query).then(cb);
}
}
Controller.$inject = ['$element', '$scope', 'vnApp', '$httpParamSerializer', 'vnConfig'];
diff --git a/modules/client/front/sample/create/index.spec.js b/modules/client/front/sample/create/index.spec.js
index efcda5401..da9a557f1 100644
--- a/modules/client/front/sample/create/index.spec.js
+++ b/modules/client/front/sample/create/index.spec.js
@@ -40,84 +40,16 @@ describe('Client', () => {
$httpParamSerializer = _$httpParamSerializer_;
$element = angular.element('');
controller = $componentController('vnClientSampleCreate', {$element, $scope});
+ const element = document.createElement('div');
+ document.body.querySelector = () => {
+ return {
+ querySelector: () => {
+ return element;
+ }
+ };
+ };
}));
- describe('showPreview()', () => {
- it(`should perform a query (GET) and open a sample preview`, () => {
- spyOn(controller.$.showPreview, 'show');
- const element = document.createElement('div');
- document.body.querySelector = () => {
- return {
- querySelector: () => {
- return element;
- }
- };
- };
-
- controller.$.sampleType.selection = {
- hasCompany: false,
- code: 'MyReport'
- };
-
- controller.clientSample = {
- clientFk: 101
- };
-
- let event = {preventDefault: () => {}};
-
- const params = {
- clientId: 101,
- isPreview: true
- };
- const serializedParams = $httpParamSerializer(params);
-
- $httpBackend.when('GET', `email/MyReport?${serializedParams}`).respond(true);
- $httpBackend.expect('GET', `email/MyReport?${serializedParams}`);
- controller.showPreview(event);
- $httpBackend.flush();
-
- expect(controller.$.showPreview.show).toHaveBeenCalledWith();
- });
-
- it(`should perform a query (GET) with companyFk param and open a sample preview`, () => {
- spyOn(controller.$.showPreview, 'show');
- const element = document.createElement('div');
- document.body.querySelector = () => {
- return {
- querySelector: () => {
- return element;
- }
- };
- };
-
- controller.$.sampleType.selection = {
- hasCompany: true,
- code: 'MyReport'
- };
-
- controller.clientSample = {
- clientFk: 101,
- companyFk: 442
- };
-
- let event = {preventDefault: () => {}};
-
- const params = {
- clientId: 101,
- companyId: 442,
- isPreview: true
- };
- const serializedParams = $httpParamSerializer(params);
-
- $httpBackend.when('GET', `email/MyReport?${serializedParams}`).respond(true);
- $httpBackend.expect('GET', `email/MyReport?${serializedParams}`);
- controller.showPreview(event);
- $httpBackend.flush();
-
- expect(controller.$.showPreview.show).toHaveBeenCalledWith();
- });
- });
-
describe('onSubmit()', () => {
it(`should call sendSample() method`, () => {
spyOn(controller, 'sendSample');
@@ -127,55 +59,113 @@ describe('Client', () => {
});
});
- describe('sendSample()', () => {
- it(`should perform a query (GET) and call go() method`, () => {
- spyOn(controller.$state, 'go');
+ describe('send()', () => {
+ it(`should not perform an HTTP query if no recipient is specified`, () => {
+ spyOn(controller.$http, 'get');
controller.$.sampleType.selection = {
hasCompany: false,
code: 'MyReport'
};
-
controller.clientSample = {
- clientFk: 101
- };
-
- const params = {
clientId: 101
};
- const serializedParams = $httpParamSerializer(params);
- $httpBackend.when('GET', `email/MyReport?${serializedParams}`).respond(true);
- $httpBackend.expect('GET', `email/MyReport?${serializedParams}`);
- controller.sendSample();
- $httpBackend.flush();
+ controller.send(false, () => {});
- expect(controller.$state.go).toHaveBeenCalledWith('client.card.sample.index');
+ expect(controller.$http.get).not.toHaveBeenCalled();
});
- it(`should perform a query (GET) with companyFk param and call go() method`, () => {
- spyOn(controller.$state, 'go');
+ it(`should not perform an HTTP query if no sample is specified`, () => {
+ spyOn(controller.$http, 'get');
+
+ controller.$.sampleType.selection = null;
+ controller.clientSample = {
+ clientId: 101,
+ recipient: 'client@email.com'
+ };
+
+ controller.send(false, () => {});
+
+ expect(controller.$http.get).not.toHaveBeenCalled();
+ });
+
+ it(`should not perform an HTTP query if company is required and not specified`, () => {
+ spyOn(controller.$http, 'get');
controller.$.sampleType.selection = {
hasCompany: true,
code: 'MyReport'
};
-
controller.clientSample = {
- clientFk: 101,
- companyFk: 442
+ clientId: 101,
+ recipient: 'client@email.com'
};
- const params = {
+ controller.send(false, () => {});
+
+ expect(controller.$http.get).not.toHaveBeenCalled();
+ });
+
+ it(`should perform an HTTP query without passing companyId param`, () => {
+ controller.$.sampleType.selection = {
+ hasCompany: false,
+ code: 'MyReport'
+ };
+ controller.clientSample = {
clientId: 101,
+ recipient: 'client@email.com'
+ };
+
+ const serializedParams = $httpParamSerializer(controller.clientSample);
+ $httpBackend.expect('GET', `email/MyReport?${serializedParams}`).respond(true);
+ controller.send(false, () => {});
+ $httpBackend.flush();
+ });
+
+ it(`should perform an HTTP query passing companyId param`, () => {
+ controller.$.sampleType.selection = {
+ hasCompany: true,
+ code: 'MyReport'
+ };
+ controller.clientSample = {
+ clientId: 101,
+ recipient: 'client@email.com',
companyId: 442
};
- const serializedParams = $httpParamSerializer(params);
- $httpBackend.when('GET', `email/MyReport?${serializedParams}`).respond(true);
- $httpBackend.expect('GET', `email/MyReport?${serializedParams}`);
- controller.sendSample();
+ const serializedParams = $httpParamSerializer(controller.clientSample);
+ $httpBackend.expect('GET', `email/MyReport?${serializedParams}`).respond(true);
+ controller.send(false, () => {});
$httpBackend.flush();
+ });
+ });
+
+ describe('showPreview()', () => {
+ it(`should open a sample preview`, () => {
+ spyOn(controller.$.showPreview, 'show');
+
+ controller.send = (isPreview, cb) => {
+ cb({
+ data: ''
+ });
+ };
+ controller.showPreview();
+
+ expect(controller.$.showPreview.show).toHaveBeenCalledWith();
+ });
+ });
+
+ describe('sendSample()', () => {
+ it(`should perform a query (GET) and call go() method`, () => {
+ spyOn(controller.$state, 'go');
+
+ controller.send = (isPreview, cb) => {
+ cb({
+ data: true
+ });
+ };
+ controller.sendSample();
expect(controller.$state.go).toHaveBeenCalledWith('client.card.sample.index');
});
diff --git a/modules/client/front/sample/create/locale/es.yml b/modules/client/front/sample/create/locale/es.yml
index d1ef82c0e..6828e3e48 100644
--- a/modules/client/front/sample/create/locale/es.yml
+++ b/modules/client/front/sample/create/locale/es.yml
@@ -1,3 +1,5 @@
Choose a sample: Selecciona una plantilla
Choose a company: Selecciona una empresa
-Recipient: Destinatario
\ No newline at end of file
+Email cannot be blank: Debes introducir un email
+Recipient: Destinatario
+Its only used when sample is sent: Se utiliza Ășnicamente cuando se envĂa la plantilla
\ No newline at end of file