<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -211,7 +211,7 @@ class User &lt; ActiveRecord::Base
   end
 
   def can_be_viewed_by(user)
-    user.member_of_owner? or user.company_id == self.id or self.member_of_owner?
+    user.member_of_owner? or user.company_id == self.company_id or self.member_of_owner?
   end
 
   # Specific permissions</diff>
      <filename>app/models/user.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,7 @@ require &quot;faker&quot;
 
 Factory.define :company do |u|
   u.sequence(:client_of) {|n| Company.owner}
-  u.sequence(:name) {|n| Faker::Name.name }
+  u.sequence(:name) {|n| Faker::Company.name }
   u.sequence(:email) {|n| Faker::Internet.email }
   
   u.sequence(:created_by) {|n| Company.owner.created_by}
@@ -41,3 +41,7 @@ Factory.define :owner_user, :parent =&gt; :user do |u|
   u.is_admin false
 end
 
+Factory.define :im_type do |u|
+  u.sequence(:name) {|n| Faker::Company.name }
+end
+</diff>
      <filename>test/factories.rb</filename>
    </modified>
    <modified>
      <diff>@@ -33,4 +33,133 @@ class UserTest &lt; ActiveSupport::TestCase
     owner_user.destroy
   end
   
+  test &quot;IM Values should be created according to available IM Types&quot; do
+    # Make some IM Types
+    5.times { Factory.create(:im_type) }
+    
+    owner_user = Factory.create(:owner_user)
+    values = owner_user.im_info
+    
+    # All types present?
+    assert_equal values.length, 5
+    values.each do |v|
+      assert v.value.empty?
+      v.value = Faker::Internet.free_email
+      assert v.save
+    end
+    
+    # New im type present?
+    new_type_id = Factory.create(:im_type).id
+    owner_user.reload
+    values = owner_user.im_info
+    assert_equal values.length, 6
+    
+    found = false
+    values.each do |v|
+      if v.im_type_id == new_type_id
+        assert v.value.empty?
+        found = true
+        break
+      end
+    end
+    assert found
+    
+    ImType.destroy_all
+    owner_user.destroy
+  end
+  
+  test &quot;Permissions&quot; do
+    master_user = Company.owner.created_by
+    admin_user = Factory.create(:admin)
+    owner_user = Factory.create(:owner_user)
+    
+    client_company = Factory.create(:company)
+    client_user = Factory.create(:user, :company =&gt; client_company)
+    
+    # can_be_created_by
+    assert_equal User.can_be_created_by(admin_user), true
+    assert_equal User.can_be_created_by(owner_user), false
+    assert_equal User.can_be_created_by(client_user), false
+    
+    # can_be_deleted_by
+    assert_equal master_user.can_be_deleted_by(master_user), false
+    assert_equal master_user.can_be_deleted_by(admin_user), false
+    assert_equal master_user.can_be_deleted_by(owner_user), false
+    assert_equal master_user.can_be_deleted_by(client_user), false
+    
+    assert_equal admin_user.can_be_deleted_by(master_user), true
+    assert_equal admin_user.can_be_deleted_by(admin_user), false
+    assert_equal admin_user.can_be_deleted_by(owner_user), false
+    assert_equal admin_user.can_be_deleted_by(client_user), false
+    
+    assert_equal client_user.can_be_deleted_by(admin_user), true
+    
+    # can_be_viewed_by
+    other_client_company = Factory.create(:company)
+    other_client_user = Factory.create(:user, :company =&gt; other_client_company)
+    
+    assert_equal owner_user.can_be_viewed_by(client_user), true
+    assert_equal client_user.can_be_viewed_by(client_user), true
+    assert_equal client_user.can_be_viewed_by(other_client_user), false
+    
+    other_client_company.destroy
+    other_client_user.destroy
+    
+    # profile_can_be_updated_by
+    assert_equal owner_user.profile_can_be_updated_by(owner_user), true
+    assert_equal owner_user.profile_can_be_updated_by(client_user), false
+    assert_equal client_user.profile_can_be_updated_by(admin_user), true
+    assert_equal client_user.profile_can_be_updated_by(owner_user), false
+    
+    # permissions_can_be_updated_by
+    assert_equal master_user.permissions_can_be_updated_by(admin_user), false
+    assert_equal owner_user.permissions_can_be_updated_by(owner_user), false
+    assert_equal owner_user.permissions_can_be_updated_by(client_user), false
+    assert_equal client_user.permissions_can_be_updated_by(admin_user), true
+    assert_equal client_user.permissions_can_be_updated_by(owner_user), false
+    
+    owner_user.destroy
+    admin_user.destroy
+    client_user.destroy
+    client_company.destroy
+  end
+  
+  test &quot;Default Avatar&quot; do
+    owner_user = Factory.create(:owner_user)
+    assert !owner_user.avatar?
+    
+    assert !owner_user.avatar_url.match(/http:\/\/gravatar.com\//).nil?
+    
+    owner_user.destroy
+  end
+  
+  test &quot;Display Name should equal username if blank&quot; do
+    owner_user = Factory.create(:owner_user)
+    
+    assert owner_user.display_name != owner_user.username
+    owner_user.display_name = ''
+    assert owner_user.display_name == owner_user.username
+    
+    owner_user.destroy
+  end
+  
+  test &quot;Online users list&quot; do 
+    start_count = User.get_online.length
+    
+    users = []
+    5.times { users &lt;&lt; Factory.create(:owner_user) }
+    
+    assert_equal User.get_online.length, start_count
+    
+    users.each { |u| User.authenticate(u.username, 'password') }
+    
+    assert_equal User.get_online.length, start_count+5
+    
+    users.each { |u| u.destroy }
+  end
+  
+  # TODO: all_milestones, todays_milestones, late_milestones, 
+  #       is_part_of, member_of, has_all_permissions, has_permission, permissions_for,
+  #       *url  
+  
 end</diff>
      <filename>test/unit/user_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>59b53701e7e55be9fe5dd789a05b076b3d0154a4</id>
    </parent>
  </parents>
  <author>
    <name>jamesu</name>
    <email>jamesu@gmail.com</email>
  </author>
  <url>http://github.com/jamesu/railscollab/commit/27f00aceff569ab49d16f3644a870bfc255423b6</url>
  <id>27f00aceff569ab49d16f3644a870bfc255423b6</id>
  <committed-date>2009-11-04T07:47:21-08:00</committed-date>
  <authored-date>2009-11-04T07:47:21-08:00</authored-date>
  <message>Add some more shocking unit tests for the user</message>
  <tree>82d6101bf735718955e18c9c96ce430196869be7</tree>
  <committer>
    <name>jamesu</name>
    <email>jamesu@gmail.com</email>
  </committer>
</commit>
