fixed duplicated templates when scheduling/sending same newsletter twice

This commit is contained in:
Amine Ben hammou
2018-01-10 17:37:03 +00:00
parent bfad5509c1
commit cae46d9acd
4 changed files with 54 additions and 4 deletions

View File

@ -101,6 +101,7 @@ define(
endpoint: 'newsletterTemplates',
action: 'save',
data: {
newsletter_id: response.data.id,
name: response.data.subject,
description: response.data.preheader,
thumbnail: thumbnail.toDataURL('image/jpeg'),
@ -189,12 +190,17 @@ define(
'MailPoet Free version': window.mailpoet_version,
});
}
this.setState({ loading: false });
});
})
.fail((err) => {
this.showError(err);
this.setState({ loading: false });
});
}).fail(this.showError);
}
})
.fail(this.showError)
.always(() => {
.fail((err) => {
this.showError(err);
this.setState({ loading: false });
});
}

View File

@ -38,6 +38,13 @@ class NewsletterTemplates extends APIEndpoint {
}
function save($data = array()) {
if(!empty($data['newsletter_id'])) {
$template = NewsletterTemplate::whereEqual('newsletter_id', $data['newsletter_id'])->findOne();
if(!empty($template)) {
$template = $template->asArray();
$data['id'] = $template['id'];
}
}
$template = NewsletterTemplate::createOrUpdate($data);
$errors = $template->getErrors();

View File

@ -244,6 +244,7 @@ class Migrator {
function newsletterTemplates() {
$attributes = array(
'id int(11) unsigned NOT NULL AUTO_INCREMENT,',
'newsletter_id int NULL DEFAULT 0,',
'name varchar(250) NOT NULL,',
'categories varchar(250) NOT NULL DEFAULT "[]",',
'description varchar(250) NOT NULL,',

View File

@ -15,6 +15,7 @@ class NewsletterTemplatesTest extends \MailPoetTest {
NewsletterTemplate::createOrUpdate(array(
'name' => 'Template #2',
'newsletter_id' => 1,
'description' => 'My Second Template',
'body' => '{"key2": "value2"}'
));
@ -53,7 +54,7 @@ class NewsletterTemplatesTest extends \MailPoetTest {
expect($response->data)->equals($templates);
}
function testItCanSaveANewsletterTemplate() {
function testItCanSaveANewTemplate() {
$template_data = array(
'name' => 'Template #3',
'description' => 'My Third Template',
@ -68,6 +69,41 @@ class NewsletterTemplatesTest extends \MailPoetTest {
);
}
function testItCanSaveANewTemplateAssociatedWithANewsletter() {
$template_data = array(
'newsletter_id' => 2,
'name' => 'Template #3',
'description' => 'My Third Template',
'body' => '{"key3": "value3"}'
);
$router = new NewsletterTemplates();
$response = $router->save($template_data);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
NewsletterTemplate::findOne($response->data['id'])->asArray()
);
}
function testItCanUpdateTemplateAssociatedWithANewsletter() {
$template_data = array(
'newsletter_id' => 1,
'name' => 'Template #2',
'description' => 'My Updated Second Template',
'body' => '{"key3": "value3"}'
);
$router = new NewsletterTemplates();
$response = $router->save($template_data);
expect($response->status)->equals(APIResponse::STATUS_OK);
expect($response->data)->equals(
NewsletterTemplate::findOne($response->data['id'])->asArray()
);
$template = NewsletterTemplate::whereEqual('newsletter_id', 1)->findOne();
expect($response->data)->equals($template->asArray());
}
function testItCanDeleteANewsletterTemplate() {
$template = NewsletterTemplate::where('name', 'Template #2')->findOne();
expect($template->deleted_at)->null();