﻿'use strict';

define([
    'jquery',
    'backbone.deepmodel',
    'Shared/Messenger'
], function ($, DeepModel, Messenger) {
    return DeepModel.DeepModel.extend({

        test: function () {
            var self = this;

            this.trigger('validation:sync');

            var params = {};

            params.url = this.collection.url + '/test';
            params.contentType = 'application/json';
            params.data = JSON.stringify(this.toJSON());
            params.type = 'POST';
            params.isValidatedCall = true;

            var promise = $.ajax(params);

            Messenger.monitor({
                promise        : promise,
                successMessage : 'Testing \'{0}\' completed'.format(this.get('name')),
                errorMessage   : 'Testing \'{0}\' failed'.format(this.get('name'))
            });

            promise.fail(function (response) {
                self.trigger('validation:failed', response);
            });

            return promise;
        }
    });
});
