1 package org.gnomekr.potron.service; 2 3 import static org.gnomekr.potron.util.PotronConstants.BEAN_ID_PROJECT_MANAGER; 4 5 import java.io.PrintWriter; 6 import java.io.Reader; 7 import java.io.StringReader; 8 import java.io.StringWriter; 9 import java.util.Date; 10 import java.util.List; 11 import java.util.Map; 12 13 import org.gnomekr.potron.data.LanguageTeam; 14 import org.gnomekr.potron.data.Project; 15 import org.gnomekr.potron.data.Template; 16 17 /*** 18 * ProjectManagerTest.java 19 * @author Xavier Cho 20 * @version $Revision 1.1 $ $Date: 2005/09/11 05:49:45 $ 21 */ 22 public class ProjectManagerTest extends AbstractHibernateSpringContextTests { 23 24 /*** 25 * @throws Exception 26 */ 27 public void testProjectPersistence() throws Exception { 28 IProjectManager manager = (IProjectManager) applicationContext 29 .getBean(BEAN_ID_PROJECT_MANAGER); 30 assertNotNull(manager); 31 32 Project project = new Project("__test_project__"); 33 34 project.setRegisteredDate(new Date(System.currentTimeMillis())); 35 project.setName("Test Project"); 36 project.setVersion("1.0"); 37 project.setHomepage("homepage"); 38 project.setDescription("description"); 39 40 manager.createProject(project); 41 42 flushCurrentSession(); 43 44 int count = jdbcTemplate.queryForInt( 45 "select count(*) from POTRON_PROJECT where project_id=?", 46 new String[] { 47 project.getId() 48 }); 49 50 assertEquals(1, count); 51 52 try { 53 manager.createProject(project); 54 flushCurrentSession(); 55 56 assertTrue("Should have thrown ProjectExistsException here.", false); 57 } catch (ProjectExistsException e) { 58 } 59 60 Project project2 = manager.getProject(project.getId()); 61 62 assertNotNull(project2); 63 assertEquals(project2, project); 64 65 project.setName("Test Project2"); 66 67 manager.updateProject(project); 68 flushCurrentSession(); 69 70 String name = (String) jdbcTemplate.queryForObject( 71 "select name from POTRON_PROJECT where project_id=?", 72 new String[] { 73 project.getId() 74 }, 75 String.class); 76 77 assertEquals("Test Project2", name); 78 79 List<Project> projects = manager.getProjects(); 80 assertNotNull(projects); 81 assertTrue(projects.contains(project)); 82 83 manager.deleteProject(project.getId()); 84 flushCurrentSession(); 85 86 count = jdbcTemplate.queryForInt( 87 "select count(*) from POTRON_PROJECT where project_id=?", 88 new String[] { 89 project.getId() 90 }); 91 92 assertEquals(0, count); 93 } 94 95 /*** 96 * @throws Exception 97 */ 98 public void testLanguageTeamPersistence() throws Exception { 99 IProjectManager manager = (IProjectManager) applicationContext 100 .getBean(BEAN_ID_PROJECT_MANAGER); 101 assertNotNull(manager); 102 103 LanguageTeam team = new LanguageTeam(); 104 105 team.setRegisteredDate(new Date(System.currentTimeMillis())); 106 team.setName("Test Team"); 107 team.setContact("contact"); 108 team.setPrefix("prefix"); 109 team.setEncoding("encoding"); 110 111 manager.addLanguageTeam(team); 112 113 flushCurrentSession(); 114 115 int count = jdbcTemplate.queryForInt( 116 "select count(*) from POTRON_TEAM where team_id=?", 117 new Long[] { 118 team.getId() 119 }); 120 121 assertEquals(1, count); 122 123 LanguageTeam team2 = manager.getLanguageTeam(team.getId()); 124 125 assertNotNull(team2); 126 assertEquals(team2, team); 127 128 team.setName("Test Team2"); 129 130 manager.updateLanguageTeam(team); 131 flushCurrentSession(); 132 133 String name = (String) jdbcTemplate.queryForObject( 134 "select name from POTRON_TEAM where team_id=?", 135 new Long[] { 136 team.getId() 137 }, 138 String.class); 139 140 assertEquals("Test Team2", name); 141 142 List<LanguageTeam> teams = manager.getLanguageTeams(); 143 assertNotNull(teams); 144 assertTrue(teams.contains(team)); 145 146 manager.removeLanguageTeam(team.getId()); 147 flushCurrentSession(); 148 149 count = jdbcTemplate.queryForInt( 150 "select count(*) from POTRON_TEAM where team_id=?", 151 new Long[] { 152 team.getId() 153 }); 154 155 assertEquals(0, count); 156 } 157 158 /*** 159 * @throws Exception 160 */ 161 public void testTemplatePersistence() throws Exception { 162 IProjectManager manager = (IProjectManager) applicationContext 163 .getBean(BEAN_ID_PROJECT_MANAGER); 164 assertNotNull(manager); 165 166 StringWriter writer = new StringWriter(); 167 PrintWriter out = new PrintWriter(writer); 168 169 out.println("# SOME DESCRIPTIVE TITLE."); 170 out.println("# Copyright (C) YEAR Free Software Foundation, Inc."); 171 out.println("# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR."); 172 out.println("#"); 173 out.println("#, fuzzy"); 174 out.println("msgid \"\""); 175 out.println("msgstr \"\""); 176 out.println("\"POT-Creation-Date: 2001-02-09 01:25+0100//n\""); 177 out.println(); 178 out.println("#: gpl.xml:15"); 179 out.println("#, no-c-format"); 180 out.println("#, fuzzy"); 181 out.println("msgid \"Free Software Foundation, Inc.\""); 182 out.println("msgstr \"test2\""); 183 184 Project project = new Project("__test_project__"); 185 186 project.setRegisteredDate(new Date(System.currentTimeMillis())); 187 project.setName("Test Project"); 188 project.setVersion("1.0"); 189 project.setHomepage("homepage"); 190 project.setDescription("description"); 191 192 manager.createProject(project); 193 194 Reader reader = new StringReader(writer.toString()); 195 196 long id = manager.addTemplate( 197 project.getId(), 198 "test template", 199 "description", 200 reader); 201 202 flushCurrentSession(); 203 204 int count = jdbcTemplate.queryForInt( 205 "select count(*) from POTRON_TEMPLATE where template_id=?", 206 new Long[] { 207 id 208 }); 209 210 assertEquals(1, count); 211 212 String comment = (String) jdbcTemplate.queryForObject( 213 "select comment from POTRON_TEMPLATE where template_id=?", 214 new Long[] { 215 id 216 }, 217 String.class); 218 219 assertNotNull(comment); 220 assertTrue(comment.startsWith("# SOME DESCRIPTIVE TITLE.")); 221 222 List headers = jdbcTemplate.queryForList( 223 "select * from POTRON_TEMPL_HEADER where template_id=?", 224 new Long[] { 225 id 226 }); 227 228 assertNotNull(headers); 229 assertEquals(1, headers.size()); 230 231 Map values = (Map) headers.get(0); 232 assertEquals("POT-Creation-Date", values.get("name")); 233 assertEquals("2001-02-09 01:25+0100", values.get("value")); 234 235 List entries = jdbcTemplate.queryForList( 236 "select * from POTRON_TEMPL_ENTRY where template_id=?", 237 new Long[] { 238 id 239 }); 240 241 assertNotNull(entries); 242 assertEquals(1, entries.size()); 243 244 values = (Map) entries.get(0); 245 246 assertEquals("gpl.xml:15", values.get("entry_refs")); 247 assertEquals("#, no-c-format", values.get("comment")); 248 assertEquals("Free Software Foundation, Inc.", values.get("entry_name")); 249 250 Template template = manager.getTemplate(id); 251 252 assertNotNull(template); 253 assertEquals("test template", template.getName()); 254 255 template.setName("test template 2"); 256 manager.updateTemplate( 257 template.getId(), 258 template.getName(), 259 template.getDescription(), 260 template.getComment()); 261 262 flushCurrentSession(); 263 264 String name = (String) jdbcTemplate.queryForObject( 265 "select name from POTRON_TEMPLATE where template_id=?", 266 new Long[] { 267 id 268 }, 269 String.class); 270 271 assertNotNull(name); 272 assertEquals(template.getName(), name); 273 274 getCurrentSession().evict(project); 275 276 project = manager.getProject(project.getId()); 277 278 assertTrue(project.getTemplates().contains(template)); 279 280 project.getTemplates().remove(template); 281 282 manager.updateProject(project); 283 284 flushCurrentSession(); 285 286 count = jdbcTemplate.queryForInt( 287 "select count(*) from POTRON_TEMPLATE where template_id=?", 288 new Long[] { 289 id 290 }); 291 292 assertEquals(0, count); 293 } 294 }