13. describe("AbsenteeismModel", function() {
beforeEach(function() {
this.eventSpy = sinon.spy();
});
describe("When validating", function() {
it("should check that first atested date is lower then second date", function() {
this.absenteeism.bind("error", this.eventSpy);
this.initial_data["atested_end"] = "01/01/2012";
this.absenteeism.set(this.initial_data);
expect(this.eventSpy).toHaveBeenCalledOnce();
expect(this.eventSpy).toHaveBeenCalledWith(
this.absenteeism,
"Data Final Atestadada não pode ser menor que a Data Inicial Atestada"
);
});
14. describe("AbsenteeismReport View", function() {
beforeEach(function() {
loadFixtures("absenteeism.html");
});
describe("When rendering", function() {
it("should show the correct components", function() {
this.absenteeismReportView.render();
var atested_begin = $("input[name=atested_begin]");
var atested_end = $("input[name=atested_end]");
var revised_begin = $("input[name=revised_begin]");
var revised_end = $("input[name=revised_end]");
var dias_negados = $("span.difference");
expect(atested_begin).toHaveValue("03/01/2012");
expect(atested_end).toHaveValue("04/01/2012");
expect(revised_begin).toHaveValue("03/01/2012");
expect(revised_end).toHaveValue("04/01/2012");
});
});
16. var strdt = function(str) {
}
return moment(str, "DD/MM/YYYY").toDate(); http://momentjs.com/
window.Absenteeism = Backbone.Model.extend({
validate: function(attributes) {
var data_inicio_atestado = strdt(attributes.atested_begin);
var data_fim_atestado = strdt(attributes.atested_end);
var data_inicio_revisado = strdt(attributes.revised_begin);
var data_fim_revisado = strdt(attributes.revised_end);
if(data_inicio_atestado.getYear() < 0 ||
data_fim_atestado.getYear() < 0 ||
data_inicio_revisado.getYear() < 0 ||
data_fim_revisado.getYear() < 0 ) {
return "Data invÃálida";
}
if (data_fim_atestado < data_inicio_atestado) {
return "Data Final Atestadada não pode ser menor que a Data Inicial Atestada";
}
if (data_fim_revisado < data_inicio_revisado) {
return "Data Final Abonada não pode ser menor que a Data Inicial Abonada";
}
if (data_inicio_revisado < data_inicio_atestado) {
return "Data Incial Abonada não pode ser menor que a Data Inicial Atestada";
}
if (data_fim_revisado > data_fim_atestado){
return "Data Final Abonada não pode ser maior que a Data Final Atestada";
}
}
});
18. window.Absenteeism = Backbone.Model.extend({
validate: function(attributes) {
var data_inicio_atestado = strdt(attributes.atested_begin);
var data_fim_atestado = strdt(attributes.atested_end);
var data_inicio_revisado = strdt(attributes.revised_begin);
var data_fim_revisado = strdt(attributes.revised_end);
if(data_inicio_atestado.getYear() < 0 ||
data_fim_atestado.getYear() < 0 ||
data_inicio_revisado.getYear() < 0 ||
data_fim_revisado.getYear() < 0 ) {
return "Data invÃálida";
}
if (data_fim_atestado < data_inicio_atestado) {
return "Data Final Atestadada não pode ser menor que a Data Inicial Atestada";
}
if (data_fim_revisado < data_inicio_revisado) {
return "Data Final Abonada não pode ser menor que a Data Inicial Abonada";
}
if (data_inicio_revisado < data_inicio_atestado) {
return "Data Incial Abonada não pode ser menor que a Data Inicial Atestada";
}
if (data_fim_revisado > data_fim_atestado){
return "Data Final Abonada não pode ser maior que a Data Final Atestada";
}
}
});
24. class AbsenteeismEntryForm(forms.ModelForm):
class Meta:
model = AbsenteeismEntry
exclude = ('absenteeism',)
def clean(self):
super(AbsenteeismEntryForm, self).clean()
if self.cleaned_data.get('atested_begin') >
self.cleaned_data.get('atested_end'):
raise forms.ValidationError(
u'Data Final Atestadada não pode ser menor que a Data Inicial Atestada')
if self.cleaned_data.get('revised_begin') >
self.cleaned_data.get('revised_end'):
raise forms.ValidationError(
u'Data Final Abonada não pode ser menor que a Data Inicial Abonada')
if self.cleaned_data.get('atested_begin') >
self.cleaned_data.get('revised_begin'):
raise forms.ValidationError(
u'Data Incial Abonada não pode ser menor que a Data Inicial Atestada')
if self.cleaned_data.get('revised_end') >
self.cleaned_data.get('atested_end'):
raise forms.ValidationError(
u'Data Final Abonada não pode ser maior que a Data Final Atestada')
return self.cleaned_data