-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvalide_spec.rb
93 lines (78 loc) · 2.19 KB
/
valide_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
require_relative 'spec-helper'
require 'open_record'
describe OpenRecord do
class Adresse
def initialize(x = nil); @x = x; end
end
class Telephone
def initialize(x = nil); @x = x; end
end
let(:adr1) { Adresse.new( "a1" ) }
let(:tel1) { Telephone.new( "t1" ) }
let(:tel2) { Telephone.new( "t2" ) }
let(:p1) {
OpenRecord.new( nom: "Tremblay" ) {
a_une Adresse
a_plusieurs Telephone
}
}
describe "#valide?" do
it "retourne true quand tout est defini a la creation" do
o1, o2, o3 = Object.new, Object.new, Object.new
personne = OpenRecord.new( nom: "Tremblay", prenom: "Guy" ) do
a_un Fixnum, 10
a_un Object, o1
a_plusieurs Object, o2, o3
end
personne.nom.must_equal "Tremblay"
personne.prenom.must_equal "Guy"
personne.fixnum.must_equal 10
personne.object.must_equal o1
personne.objects.must_equal [o2, o3]
assert personne.valide?
end
it "retourne true si tout valide" do
p1.adresse = adr1
p1.telephones = [tel1, tel2]
assert p1.valide?
end
it "retourne false si un champ unique est nil" do
p1.adresse = adr1
p1.adresse = nil
p1.telephones = [tel1, tel2]
refute p1.valide?
end
it "retourne false si un champ unique n'est pas de la bonne classe" do
p1.adresse = tel1
p1.telephones = [tel1, tel2]
refute p1.valide?
end
it "retourne false si un champ multiple est []" do
p1.adresse = adr1
refute p1.valide?
end
end
describe "#association_invalide" do
let(:p1) {
OpenRecord.new( nom: "Tremblay" ) {
a_une Adresse
a_plusieurs Telephone
}
}
it "retourne nil si tout est bien valide" do
p1.adresse = adr1
p1.telephones = [tel1, tel2]
p1.association_invalide.must_equal nil
end
it "retourne l'association unique lorsqu'invalide" do
p1.adresse = adr1
p1.adresse = nil
p1.telephones = [tel1, tel2]
p1.association_invalide.must_equal :adresse
end
it "retourne l'association multiple lorsqu'invalide" do
p1.adresse = adr1
p1.association_invalide.must_equal :telephones
end
end
end