/* * UserTest.java * * Created on Aug 5, 2007, 7:35:47 PM * * Tests the User class * */ package com.pugh.sockso.web; import com.pugh.sockso.Utils; import com.pugh.sockso.db.Database; import com.pugh.sockso.tests.SocksoTestCase; import com.pugh.sockso.tests.TestDatabase; public class UserTest extends SocksoTestCase { private Database db; private User user; @Override public void setUp() throws Exception { db = new TestDatabase(); user = new User( "name", "pass", "name@domain.com", true ); user.save( db ); } public void testConstructor() { String name = "ashdjkas dhjaks dhkj "; int id = 123123123; User user = new User( id, name ); assertNotNull( user ); assertEquals( id, user.getId() ); assertEquals( name, user.getName() ); assertEquals( "", user.getEmail() ); } public void testNewUserObjectIsActiveByDefault() { assertTrue( new User(1,"").isActive() ); } public void testUserCanBeMadeInactiveAndActive() { User u = new User( 1, "" ); u.setActive( true ); assertTrue( u.isActive() ); u.setActive( false ); assertFalse( u.isActive() ); } public void testNewUserCanBeSavedAsBeingActive() throws Exception { Database db = new TestDatabase(); User u1 = new User( 1, "" ); u1.save( db ); User u2 = User.find( db, u1.getId() ); assertTrue( u2.isActive() ); } public void testNewUserCanBeSavedAsBeingInactive() throws Exception { Database db = new TestDatabase(); User u1 = new User( 1, "" ); u1.setActive( false ); u1.save( db ); User u2 = User.find( db, u1.getId() ); assertFalse( u2.isActive() ); } public void testConstructorWithPassAndEmail() { String name = "ashdjkas dhjaks dhkj ", email = "asdaas"; int id = 123123123; User user = new User( id, name, "", email ); assertNotNull( user ); assertEquals( id, user.getId() ); assertEquals( name, user.getName() ); assertEquals( email, user.getEmail() ); } public void testConstructorWithSessionInfo() { final String sessionCode = "ashdjkas dhjaks dhkj "; final int sessionId = 123123123; User user = new User( -1, "", "", "", sessionId, sessionCode, false ); assertNotNull( user ); assertEquals( sessionId, user.getSessionId() ); assertEquals( sessionCode, user.getSessionCode() ); } public void testSaveNewUser() throws Exception { final TestDatabase db = new TestDatabase(); final String name = Utils.getRandomString(20), pass = Utils.getRandomString(20), email = Utils.getRandomString(20); final User newUser = new User( name, pass, email, true ); assertTableSize( db, "users", 0 ); assertEquals( -1, newUser.getId() ); newUser.save( db ); assertTableSize( db, "users", 1 ); assertEquals( 0, newUser.getId() ); } public void testFindReturnsAUserByTheirIdWhenTheyExist() throws Exception { User u2 = User.find( db, user.getId() ); assertEquals( user.getId(), u2.getId() ); } public void testFindReturnsAUserWithAllItsFieldsSet() { User u2 = User.find( db, user.getId() ); assertEquals( user.getId(), u2.getId() ); assertEquals( user.getName(), u2.getName() ); assertEquals( user.getEmail(), u2.getEmail() ); assertEquals( user.isAdmin(), u2.isAdmin() ); } public void testFindReturnsNullWhenAUserDoesntExist() { assertNull( User.find(db,99999) ); } public void testUserIsCreatedAsAdminWhenIsAdminIsTrue() throws Exception { User u1 = new User( "foo", "bar", "foo@bar.com", true ); u1.save( db ); User u2 = User.find( db, u1.getId() ); assertTrue( u2.isAdmin() ); } public void testUserIsNotCreatedAsAdminWhenIsAdminIsFalse() throws Exception { User u1 = new User( "foo", "bar", "foo@bar.com", false ); u1.save( db ); User u2 = User.find( db, u1.getId() ); assertFalse( u2.isAdmin() ); } public void testAUserCanBeDeletedById() throws Exception { User.delete( db, user.getId() ); assertNull( User.find(db,user.getId()) ); } public void testAUsersPlaylistsAndItsTracksAreDeletedWhenTheyAreDeleted() throws Exception { db.update( " insert into playlists ( name, user_id, date_created, date_modified ) values ( 'test', '" +user.getId()+ "', '2011-01-01 00:00:00', '2011-01-01 00:00:00' )" ); db.update( " insert into playlist_tracks ( playlist_id, track_id ) values ( 0, 1 )" ); db.update( " insert into playlist_tracks ( playlist_id, track_id ) values ( 0, 2 )" ); assertTableSize( db, "playlists", 1 ); assertTableSize( db, "playlist_tracks", 2 ); User.delete( db, user.getId() ); assertTableSize( db, "playlists", 0 ); assertTableSize( db, "playlist_tracks", 0 ); } public void testTrueIsReturnedWhenAUserIsDeleted() throws Exception { assertTrue( User.delete( db, user.getId() ) ); } public void testFalseIsReturnedWhenNonExistantUserIdIsGivenToDelete() throws Exception { assertFalse( User.delete( db, 9999 ) ); } public void testUpdateWillSaveTheUserDetailsToTheDatabase() throws Exception { User u2 = new User( user.getId(), "another", "foo@bar.com", false ); u2.setActive( false ); u2.update( db ); u2 = User.find( db, user.getId() ); assertEquals( "another", u2.getName() ); assertEquals( "foo@bar.com", u2.getEmail() ); assertFalse( u2.isAdmin() ); assertFalse( u2.isActive() ); } }