Commit ea0ab128b54a72e7f56265cb7a00fee4f0b7a096
1 parent
ab0be61d
Exists in
master
and in
22 other branches
Profile#may_display_field_to: rewrite tests
* Adding tests for the new location method * Moving tests from profile_helper_test to profile_test * Rewriting tests of profile_helper_test
Showing
3 changed files
with
81 additions
and
62 deletions
Show diff stats
app/helpers/profile_helper.rb
test/unit/profile_helper_test.rb
... | ... | @@ -13,84 +13,48 @@ class ProfileHelperTest < ActiveSupport::TestCase |
13 | 13 | end |
14 | 14 | attr_reader :profile, :helper |
15 | 15 | |
16 | - should 'not display field if field is not active and not forced' do | |
17 | - profile.expects(:active_fields).returns([]) | |
18 | - assert_equal '', display_field('Title', profile, 'field') | |
19 | - end | |
20 | - | |
21 | - should 'display field if field is not active but is forced' do | |
22 | - profile.expects(:active_fields).returns([]) | |
16 | + should 'display field if may display it' do | |
17 | + self.stubs(:user).returns(nil) | |
18 | + profile.expects(:may_display_field_to?).returns(true) | |
23 | 19 | profile.expects(:field).returns('value') |
24 | - assert_match /Title.*value/, display_field('Title', profile, 'field', true) | |
20 | + assert_match /Title.*value/, display_field('Title', profile, 'field') | |
25 | 21 | end |
26 | 22 | |
27 | - should 'not display field if field is active but not public and not logged in' do | |
28 | - profile.stubs(:active_fields).returns(['field']) | |
29 | - profile.expects(:public_fields).returns([]) | |
30 | - @controller = mock | |
31 | - @controller.stubs(:user).returns(nil) | |
23 | + should 'not display field if may not display it and not forced' do | |
24 | + self.stubs(:user).returns(nil) | |
25 | + profile.expects(:may_display_field_to?).returns(false) | |
32 | 26 | assert_equal '', display_field('Title', profile, 'field') |
33 | 27 | end |
34 | 28 | |
35 | - should 'not display field if field is active but not public and user is not friend' do | |
36 | - profile.stubs(:active_fields).returns(['field']) | |
37 | - profile.expects(:public_fields).returns([]) | |
38 | - user = mock | |
39 | - user.expects(:is_a_friend?).with(profile).returns(false) | |
40 | - @controller = mock | |
41 | - @controller.stubs(:user).returns(user) | |
42 | - assert_equal '', display_field('Title', profile, 'field') | |
43 | - end | |
44 | - | |
45 | - should 'display field if field is active and not public but user is profile owner' do | |
46 | - profile.stubs(:active_fields).returns(['field']) | |
47 | - profile.expects(:public_fields).returns([]) | |
29 | + should 'display field if may not display it but is forced' do | |
30 | + self.stubs(:user).returns(nil) | |
31 | + profile.stubs(:may_display_field_to?).returns(false) | |
48 | 32 | profile.expects(:field).returns('value') |
49 | - @controller = mock | |
50 | - @controller.stubs(:user).returns(profile) | |
51 | 33 | assert_match /Title.*value/, display_field('Title', profile, 'field', true) |
52 | 34 | end |
53 | 35 | |
54 | - should 'display field if field is active and not public but user is a friend' do | |
55 | - profile.stubs(:active_fields).returns(['field']) | |
56 | - profile.expects(:public_fields).returns([]) | |
57 | - profile.expects(:field).returns('value') | |
58 | - user = mock | |
59 | - user.expects(:is_a_friend?).with(profile).returns(true) | |
60 | - @controller = mock | |
61 | - @controller.stubs(:user).returns(user) | |
62 | - assert_match /Title.*value/, display_field('Title', profile, 'field', true) | |
36 | + should 'display work info if at least one of the fields should be displayed' do | |
37 | + self.stubs(:user).returns(nil) | |
38 | + profile.stubs(:may_display_field_to?).with(:organization, nil).returns(true) | |
39 | + profile.stubs(:may_display_field_to?).with(:organization_website, nil).returns(false) | |
40 | + profile.expects(:organization).returns('Organization Name') | |
41 | + profile.expects(:organization_website).never | |
42 | + assert_match /Work.*Organization Name/, display_work_info(profile) | |
63 | 43 | end |
64 | 44 | |
65 | - should 'not display work info if field is active but not public and user is not friend' do | |
66 | - profile.stubs(:active_fields).returns(['organization', 'organization_website']) | |
67 | - profile.expects(:public_fields).returns([]).times(2) | |
68 | - user = mock | |
69 | - user.expects(:is_a_friend?).with(profile).returns(false).times(2) | |
70 | - @controller = mock | |
71 | - @controller.stubs(:user).returns(user) | |
45 | + should 'not display work info if none of the fields should be displayed' do | |
46 | + self.stubs(:user).returns(nil) | |
47 | + profile.stubs(:may_display_field_to?).returns(false) | |
48 | + profile.expects(:organization).never | |
49 | + profile.expects(:organization_website).never | |
72 | 50 | assert_equal '', display_work_info(profile) |
73 | 51 | end |
74 | 52 | |
75 | - should 'display work info if field is active and not public but user is profile owner' do | |
76 | - profile.stubs(:active_fields).returns(['organization', 'organization_website']) | |
77 | - profile.expects(:public_fields).returns([]).times(2) | |
78 | - profile.expects(:organization).returns('Organization Name') | |
79 | - profile.expects(:organization_website).returns('') | |
80 | - @controller = mock | |
81 | - @controller.stubs(:user).returns(profile) | |
82 | - assert_match /Work.*Organization Name/, display_work_info(profile) | |
83 | - end | |
84 | - | |
85 | - should 'display work info if field is active and not public but user is a friend' do | |
86 | - profile.stubs(:active_fields).returns(['organization', 'organization_website']) | |
87 | - profile.expects(:public_fields).returns([]).times(2) | |
53 | + should 'display work info if both fields should be displayed' do | |
54 | + self.stubs(:user).returns(nil) | |
55 | + profile.stubs(:may_display_field_to?).returns(true) | |
88 | 56 | profile.expects(:organization).returns('Organization Name') |
89 | 57 | profile.expects(:organization_website).returns('') |
90 | - user = mock | |
91 | - user.expects(:is_a_friend?).with(profile).returns(true).times(2) | |
92 | - @controller = mock | |
93 | - @controller.stubs(:user).returns(user) | |
94 | 58 | assert_match /Work.*Organization Name/, display_work_info(profile) |
95 | 59 | end |
96 | 60 | ... | ... |
test/unit/profile_test.rb
... | ... | @@ -1833,4 +1833,59 @@ class ProfileTest < ActiveSupport::TestCase |
1833 | 1833 | assert_equal f, p.fields_privacy |
1834 | 1834 | end |
1835 | 1835 | |
1836 | + should 'not display field if field is active but not public and user not logged in' do | |
1837 | + profile = fast_create(Profile) | |
1838 | + profile.stubs(:active_fields).returns(['field']) | |
1839 | + profile.stubs(:public_fields).returns([]) | |
1840 | + assert !profile.may_display_field_to?('field', nil) | |
1841 | + end | |
1842 | + | |
1843 | + should 'not display field if field is active but not public and user is not friend' do | |
1844 | + profile = fast_create(Profile) | |
1845 | + profile.stubs(:active_fields).returns(['field']) | |
1846 | + profile.expects(:public_fields).returns([]) | |
1847 | + user = mock | |
1848 | + user.expects(:is_a_friend?).with(profile).returns(false) | |
1849 | + assert !profile.may_display_field_to?('field', user) | |
1850 | + end | |
1851 | + | |
1852 | + should 'display field if field is active and not public but user is profile owner' do | |
1853 | + user = profile = fast_create(Profile) | |
1854 | + profile.stubs(:active_fields).returns(['field']) | |
1855 | + profile.expects(:public_fields).returns([]) | |
1856 | + assert profile.may_display_field_to?('field', user) | |
1857 | + end | |
1858 | + | |
1859 | + should 'display field if field is active and not public but user is a friend' do | |
1860 | + profile = fast_create(Profile) | |
1861 | + profile.stubs(:active_fields).returns(['field']) | |
1862 | + profile.expects(:public_fields).returns([]) | |
1863 | + user = mock | |
1864 | + user.expects(:is_a_friend?).with(profile).returns(true) | |
1865 | + assert profile.may_display_field_to?('field', user) | |
1866 | + end | |
1867 | + | |
1868 | + should 'call may_display on field name if the field is not active' do | |
1869 | + user = fast_create(Person) | |
1870 | + profile = fast_create(Profile) | |
1871 | + profile.stubs(:active_fields).returns(['humble']) | |
1872 | + profile.expects(:may_display_humble_to?).never | |
1873 | + profile.expects(:may_display_bundle_to?).once | |
1874 | + | |
1875 | + profile.may_display_field_to?('humble', user) | |
1876 | + profile.may_display_field_to?('bundle', user) | |
1877 | + end | |
1878 | + | |
1879 | + # TODO Eventually we would like to specify it in a deeper granularity... | |
1880 | + should 'not display location if any field is private' do | |
1881 | + user = fast_create(Person) | |
1882 | + profile = fast_create(Profile) | |
1883 | + profile.stubs(:active_fields).returns(Profile::LOCATION_FIELDS) | |
1884 | + Profile::LOCATION_FIELDS.each { |field| profile.stubs(:may_display_field_to?).with(field, user).returns(true)} | |
1885 | + assert profile.may_display_location_to?(user) | |
1886 | + | |
1887 | + profile.stubs(:may_display_field_to?).with(Profile::LOCATION_FIELDS[0], user).returns(false) | |
1888 | + assert !profile.may_display_location_to?(user) | |
1889 | + end | |
1890 | + | |
1836 | 1891 | end | ... | ... |