|
0a962f68
»
|
seven1m |
2006-12-10 |
git-svn-id: svn://beonebody... |
1 |
require File.dirname(__FILE__) + '/../test_helper' |
| |
2 |
|
| |
3 |
class PersonTest < Test::Unit::TestCase |
|
f7b7e995
»
|
seven1m |
2007-04-21 |
git-svn-id: svn://beonebody... |
4 |
fixtures :people, :families |
|
cf709431
»
|
seven1m |
2007-04-19 |
git-svn-id: svn://beonebody... |
5 |
|
|
b2647a1c
»
|
seven1m |
2008-08-23 |
AR method to generate uniqu... |
6 |
should "know which groups the person belongs to" do |
|
af9add57
»
|
seven1m |
2008-05-06 |
Improvements in group membe... |
7 |
Group.find(:all).each do |group| |
| |
8 |
group.people.each do |person| |
| |
9 |
assert person.member_of?(group) |
| |
10 |
end |
| |
11 |
end |
| |
12 |
end |
| |
13 |
|
|
b2647a1c
»
|
seven1m |
2008-08-23 |
AR method to generate uniqu... |
14 |
should "not allow someone outside the family to share the same email address" do |
|
e4d5f067
»
|
seven1m |
2008-01-01 |
merged vacation branch r443... |
15 |
# tim already has email address |
|
f7b7e995
»
|
seven1m |
2007-04-21 |
git-svn-id: svn://beonebody... |
16 |
p = people(:peter) |
|
e4d5f067
»
|
seven1m |
2008-01-01 |
merged vacation branch r443... |
17 |
p.email = people(:tim).email |
|
f7b7e995
»
|
seven1m |
2007-04-21 |
git-svn-id: svn://beonebody... |
18 |
p.save |
|
b2647a1c
»
|
seven1m |
2008-08-23 |
AR method to generate uniqu... |
19 |
assert !p.valid? |
|
cf709431
»
|
seven1m |
2007-04-19 |
git-svn-id: svn://beonebody... |
20 |
assert_equal 'already taken by someone else.', p.errors[:email] |
|
f7b7e995
»
|
seven1m |
2007-04-21 |
git-svn-id: svn://beonebody... |
21 |
end |
| |
22 |
|
|
b2647a1c
»
|
seven1m |
2008-08-23 |
AR method to generate uniqu... |
23 |
should "validate format of email address" do |
|
f7b7e995
»
|
seven1m |
2007-04-21 |
git-svn-id: svn://beonebody... |
24 |
# test every character allowed |
| |
25 |
p = people(:peter) |
| |
26 |
p.email = 'abcdefghijklmnopqrstuvwxyz0123456789._%-@abcdefghijklmnopqrstuvwxyz0123456789.-.com' |
| |
27 |
p.save |
| |
28 |
assert_nil p.errors[:email] |
| |
29 |
# test what we have in our fixtures |
| |
30 |
Person.find(:all).select { |p| p.email }.each do |p| |
| |
31 |
p.save |
| |
32 |
assert_nil p.errors[:email] |
| |
33 |
end |
| |
34 |
# test a bad one |
| |
35 |
p = people(:peter) |
| |
36 |
p.email = 'bad address@example.com' |
| |
37 |
p.save |
|
b2647a1c
»
|
seven1m |
2008-08-23 |
AR method to generate uniqu... |
38 |
assert !p.valid? |
|
f7b7e995
»
|
seven1m |
2007-04-21 |
git-svn-id: svn://beonebody... |
39 |
assert_equal 'not a valid email address.', p.errors[:email] |
| |
40 |
end |
| |
41 |
|
|
b2647a1c
»
|
seven1m |
2008-08-23 |
AR method to generate uniqu... |
42 |
should "validate format of website" do |
|
4abf1d79
»
|
seven1m |
2008-07-07 |
Fixed Person website test (... |
43 |
Person.logged_in = people(:peter) |
|
f7b7e995
»
|
seven1m |
2007-04-21 |
git-svn-id: svn://beonebody... |
44 |
# good |
| |
45 |
p = people(:peter) |
| |
46 |
p.website = 'http://goodwebsite.com/a/path?some=args' |
| |
47 |
p.save |
| |
48 |
assert_nil p.errors[:website] |
| |
49 |
# bad |
| |
50 |
p.website = "javascript://void(alert('do evil stuff'))" |
| |
51 |
p.save |
|
b2647a1c
»
|
seven1m |
2008-08-23 |
AR method to generate uniqu... |
52 |
assert !p.valid? |
|
eb179d7c
»
|
seven1m |
2008-09-25 |
Fix tests and update Rails ... |
53 |
assert_equal "has an incorrect format (are you missing 'http://' at the beginning?)", p.errors[:website] |
|
f7b7e995
»
|
seven1m |
2007-04-21 |
git-svn-id: svn://beonebody... |
54 |
end |
| |
55 |
|
|
b2647a1c
»
|
seven1m |
2008-08-23 |
AR method to generate uniqu... |
56 |
should "inherit attribute sharing from family" do |
|
f7b7e995
»
|
seven1m |
2007-04-21 |
git-svn-id: svn://beonebody... |
57 |
# update_attribute to nil doesn't seem to work for booleans on fixture instantiated instances |
| |
58 |
f = families(:morgan); p = Person.find(people(:jennie).id) |
| |
59 |
# family = true, person = false, peter should not see |
| |
60 |
f.update_attribute :share_mobile_phone, true |
| |
61 |
p.update_attribute :share_mobile_phone, false |
| |
62 |
assert !p.share_mobile_phone_with(people(:peter)) |
| |
63 |
# family = false, person = true, peter should see |
| |
64 |
f.update_attribute :share_mobile_phone, false |
| |
65 |
p.update_attribute :share_mobile_phone, true |
| |
66 |
assert p.share_mobile_phone_with(people(:peter)) |
| |
67 |
# family = true, person = nil, peter should see |
| |
68 |
f.update_attribute :share_mobile_phone, true |
| |
69 |
p.update_attribute :share_mobile_phone, nil |
| |
70 |
assert Person.find(people(:jennie).id).share_mobile_phone_with(people(:peter)) |
| |
71 |
# family = false, person = nil, peter should not see |
| |
72 |
f.update_attribute :share_mobile_phone, false |
| |
73 |
p.update_attribute :share_mobile_phone, nil |
| |
74 |
assert !Person.find(people(:jennie).id).share_mobile_phone_with(people(:peter)) |
|
0a962f68
»
|
seven1m |
2006-12-10 |
git-svn-id: svn://beonebody... |
75 |
end |
|
2eff5601
»
|
seven1m |
2008-02-27 |
Improved profile update pro... |
76 |
|
|
b2647a1c
»
|
seven1m |
2008-08-23 |
AR method to generate uniqu... |
77 |
should "create an update" do |
|
2eff5601
»
|
seven1m |
2008-02-27 |
Improved profile update pro... |
78 |
tim = { |
|
be805a6d
»
|
seven1m |
2008-07-08 |
Fixed broken unit tests. |
79 |
'person' => partial_fixture('people', 'tim', %w(first_name last_name suffix gender mobile_phone work_phone fax birthday anniversary)), |
| |
80 |
'family' => partial_fixture('families', 'morgan', %w(name last_name home_phone address1 address2 city state zip)) |
|
2eff5601
»
|
seven1m |
2008-02-27 |
Improved profile update pro... |
81 |
} |
| |
82 |
|
|
be805a6d
»
|
seven1m |
2008-07-08 |
Fixed broken unit tests. |
83 |
(tim_change_first_name = tim.clone)['person']['first_name'] = 'Timothy' |
|
2eff5601
»
|
seven1m |
2008-02-27 |
Improved profile update pro... |
84 |
update = Update.create_from_params(tim_change_first_name, people(:tim)) |
| |
85 |
assert_equal 'Timothy', update.first_name |
| |
86 |
assert_equal '04/28/1981', update.birthday.strftime('%m/%d/%Y') |
| |
87 |
assert_equal '08/11/2001', update.anniversary.strftime('%m/%d/%Y') |
| |
88 |
|
|
be805a6d
»
|
seven1m |
2008-07-08 |
Fixed broken unit tests. |
89 |
(tim_change_birthday = tim.clone)['person']['birthday'] = '06/24/1980' |
|
2eff5601
»
|
seven1m |
2008-02-27 |
Improved profile update pro... |
90 |
update = Update.create_from_params(tim_change_birthday, people(:tim)) |
| |
91 |
assert_equal '06/24/1980', update.birthday.strftime('%m/%d/%Y') |
| |
92 |
assert_equal '08/11/2001', update.anniversary.strftime('%m/%d/%Y') |
| |
93 |
|
|
be805a6d
»
|
seven1m |
2008-07-08 |
Fixed broken unit tests. |
94 |
(tim_remove_anniversary = tim.clone)['person']['anniversary'] = '' |
|
2eff5601
»
|
seven1m |
2008-02-27 |
Improved profile update pro... |
95 |
update = Update.create_from_params(tim_remove_anniversary, people(:tim)) |
| |
96 |
assert_equal '06/24/1980', update.birthday.strftime('%m/%d/%Y') |
|
4913552e
»
|
seven1m |
2008-07-11 |
Refactored Update model to ... |
97 |
assert_equal nil, update.anniversary |
|
2eff5601
»
|
seven1m |
2008-02-27 |
Improved profile update pro... |
98 |
end |
| |
99 |
|
|
954967a4
»
|
seven1m |
2008-07-20 |
Work on family/people editi... |
100 |
should "mark email_changed when email address changes" do |
|
b2647a1c
»
|
seven1m |
2008-08-23 |
AR method to generate uniqu... |
101 |
Person.logged_in = people(:tim) |
|
954967a4
»
|
seven1m |
2008-07-20 |
Work on family/people editi... |
102 |
people(:tim).email = 'change@example.com' |
| |
103 |
assert !people(:tim).email_changed? |
| |
104 |
people(:tim).save |
| |
105 |
assert people(:tim).email_changed? |
| |
106 |
end |
| |
107 |
|
|
774e4c12
»
|
seven1m |
2008-08-05 |
Removed unused methods from... |
108 |
should "generate a custom directory pdf" do |
| |
109 |
assert_match /PDF\-1\.3/, people(:tim).generate_directory_pdf.to_s[0..100] |
| |
110 |
end |
| |
111 |
|
|
259f8a64
»
|
seven1m |
2008-10-15 |
Test that birthday_soon? me... |
112 |
should "know when a birthday is coming up" do |
| |
113 |
people(:tim).update_attributes!(:birthday => Date.today + 5) |
| |
114 |
assert people(:tim).reload.birthday_soon? |
| |
115 |
people(:tim).update_attributes!(:birthday => Date.today + BIRTHDAY_SOON_DAYS + 1) |
| |
116 |
assert !people(:tim).reload.birthday_soon? |
| |
117 |
end |
| |
118 |
|
|
2eff5601
»
|
seven1m |
2008-02-27 |
Improved profile update pro... |
119 |
private |
| |
120 |
|
| |
121 |
def partial_fixture(table, name, valid_attributes) |
|
be805a6d
»
|
seven1m |
2008-07-08 |
Fixed broken unit tests. |
122 |
returning YAML::load(File.open(File.join(RAILS_ROOT, "test/fixtures/#{table}.yml")))[name] do |fixture| |
| |
123 |
fixture.delete_if { |key, val| !valid_attributes.include? key } |
| |
124 |
fixture.each do |key, val| |
| |
125 |
fixture[key] = val.to_s |
| |
126 |
end |
|
2eff5601
»
|
seven1m |
2008-02-27 |
Improved profile update pro... |
127 |
end |
| |
128 |
end |
|
0a962f68
»
|
seven1m |
2006-12-10 |
git-svn-id: svn://beonebody... |
129 |
end |