001 package org.hackystat.projectbrowser.page.projects; 002 003 import java.util.ArrayList; 004 import java.util.List; 005 import org.apache.wicket.util.tester.WicketTester; 006 import org.hackystat.projectbrowser.ProjectBrowserApplication; 007 import org.hackystat.projectbrowser.ProjectBrowserSession; 008 import org.hackystat.projectbrowser.test.ProjectBrowserTestHelper; 009 import org.hackystat.sensorbase.resource.projects.jaxb.Property; 010 import org.junit.Assert; 011 import org.junit.Test; 012 013 /** 014 * Tests the Projects Model. 015 * 016 * @author Randy Cox 017 */ 018 public class TestProjectsModel extends ProjectBrowserTestHelper { 019 020 /** 021 * Test add prop uri row. 022 */ 023 @Test 024 public void testAddPropUriRow() { // NOPMD WicketTester has its own assert classes. 025 new WicketTester(new ProjectBrowserApplication(getTestProperties())); 026 ProjectsSession session = ProjectBrowserSession.get().getProjectsSession(); 027 ProjectsModel model = session.getProjectsModel(); 028 029 model.createProject(); 030 int count = model.getPropUriRowsView().size(); 031 model.addPropUriRow(); 032 Assert.assertEquals("addPropUriRow should add one row.", count + 1, model.getPropUriRowsView() 033 .size()); 034 } 035 036 /** 037 * Test get extra uri rows. 038 */ 039 @Test 040 public void testGetExtraUriRows() { // NOPMD WicketTester has its own assert classes. 041 new WicketTester(new ProjectBrowserApplication(getTestProperties())); 042 ProjectsSession session = ProjectBrowserSession.get().getProjectsSession(); 043 ProjectsModel model = session.getProjectsModel(); 044 045 int testValue = 11; 046 model.setExtraPropertyUriRows(testValue); 047 Assert.assertEquals("getExtraUriRows get/set should be equal.", testValue, model 048 .getExtraPropertyUriRows()); 049 } 050 051 /** 052 * Test uri pattern access. 053 */ 054 @Test 055 public void testUriRowAccess() { // NOPMD WicketTester has its own assert classes. 056 List<String> list = new ArrayList<String>(); 057 list.add("URI_1"); 058 list.add("URI_2"); 059 060 new WicketTester(new ProjectBrowserApplication(getTestProperties())); 061 ProjectsSession session = ProjectBrowserSession.get().getProjectsSession(); 062 ProjectsModel model = session.getProjectsModel(); 063 model.createProject(); 064 model.setProjectUriPatterns(list); 065 String result = model.getProjectUriCommaStr(); 066 Assert.assertEquals("Uri comma str", "URI_1, URI_2", result); 067 } 068 069 /** 070 * Test remove bold. 071 */ 072 @Test 073 public void testRemoveBold() { // NOPMD Wicket has its own asserts 074 new WicketTester(new ProjectBrowserApplication(getTestProperties())); 075 ProjectsSession session = ProjectBrowserSession.get().getProjectsSession(); 076 ProjectsModel model = session.getProjectsModel(); 077 String line = "test line"; 078 String boldLine = "<b>" + line + "</b>"; 079 Assert.assertEquals(line, model.removeBold(boldLine)); 080 } 081 082 /** 083 * Test remove bold. 084 */ 085 @Test 086 public void testProjectMembers() { // NOPMD Wicket has its own asserts 087 new WicketTester(new ProjectBrowserApplication(getTestProperties())); 088 ProjectsSession session = ProjectBrowserSession.get().getProjectsSession(); 089 ProjectsModel model = session.getProjectsModel(); 090 model.createProject(); 091 092 String member1 = "member1"; 093 String member2 = "member2"; 094 String member3 = "member3"; 095 096 List<String> members = new ArrayList<String>(); 097 members.add(member1); 098 members.add(member2); 099 members.add(member3); 100 model.setProjectMembers(members); 101 102 Assert.assertEquals(3, model.getProjectMembers().size()); 103 Assert.assertEquals(member1, model.getProjectMembers().get(0)); 104 Assert.assertEquals(member2, model.getProjectMembers().get(1)); 105 Assert.assertEquals(member3, model.getProjectMembers().get(2)); 106 107 members.remove(1); 108 109 model.removeMembers(members); 110 Assert.assertEquals(1, model.getProjectMembers().size()); 111 Assert.assertEquals(member2, model.getProjectMembers().get(0)); 112 113 Assert.assertEquals(member2, model.getProjectMembersStr()); 114 model.setProjectMembersStr("one,two,three"); 115 Assert.assertEquals("one, two, three", model.getProjectMembersStr()); 116 } 117 118 /** 119 * Test project access. 120 */ 121 @Test 122 public void testProjectAccess() { // NOPMD Wicket has its own asserts 123 new WicketTester(new ProjectBrowserApplication(getTestProperties())); 124 ProjectsSession session = ProjectBrowserSession.get().getProjectsSession(); 125 ProjectsModel model = session.getProjectsModel(); 126 model.createProject(); 127 String name = "name"; 128 String owner = "owner"; 129 String desc = "desc"; 130 model.setProjectName(name); 131 model.setProjectOwner(owner); 132 model.setProjectDesc(desc); 133 String start = model.getProjectStartDate().toString(); 134 String end = model.getProjectEndDate().toString(); 135 String expected = "Project = \n name = name\n owner = owner\n desc = desc\n" + " start = " 136 + start + "\n end = " + end + "\n members = \n invitations = \n" 137 + " spectators = \n properties = \n uris = *\n"; 138 Assert.assertEquals(expected, model.getProjectStr()); 139 } 140 141 /** 142 * Test project properites access. 143 */ 144 @Test 145 public void testProjectProperiesAccess() { // NOPMD Wicket has its own asserts 146 new WicketTester(new ProjectBrowserApplication(getTestProperties())); 147 ProjectsSession session = ProjectBrowserSession.get().getProjectsSession(); 148 ProjectsModel model = session.getProjectsModel(); 149 model.createProject(); 150 151 List<Property> items = new ArrayList<Property>(); 152 Property one = new Property(); 153 one.setKey("key1"); 154 one.setValue("value1"); 155 Property two = new Property(); 156 two.setKey("key2"); 157 two.setValue("value2"); 158 Property three = new Property(); 159 three.setKey("key3"); 160 three.setValue("value3"); 161 items.add(one); 162 items.add(two); 163 items.add(three); 164 model.setProjectProperties(items); 165 String expected = "key1=value1\nkey2=value2\nkey3=value3"; 166 Assert.assertEquals(expected, model.getProjectPropertiesStr()); 167 } 168 169 /** 170 * Test parsing of member comma or cr delimited string. 171 */ 172 @Test 173 public void testParseMembersStr() { // NOPMD Wicket has its own asserts 174 String one = "one"; 175 String two = "two"; 176 String three = "three"; 177 String comma = ","; 178 String cr = "\n"; 179 String testCommaStr = one + comma + two + comma + " " + three; 180 String testCrStr = one + cr + two + cr + " " + three; 181 ProjectsModel model = new ProjectsModel(); 182 183 List<String> result; 184 result = model.parseMembersStr(testCommaStr); 185 Assert.assertEquals(one, result.get(0)); 186 Assert.assertEquals(two, result.get(1)); 187 Assert.assertEquals(three, result.get(2)); 188 189 result = model.parseMembersStr(testCrStr); 190 Assert.assertEquals(one, result.get(0)); 191 Assert.assertEquals(two, result.get(1)); 192 Assert.assertEquals(three, result.get(2)); 193 } 194 195 /** 196 * Test semantic check of name. 197 */ 198 @Test 199 public void testIsSemanticCheckOk() { // NOPMD Wicket has its own asserts 200 new WicketTester(new ProjectBrowserApplication(getTestProperties())); 201 String nameWithSpace = "test project"; 202 String nameWithSlash = "test/project"; 203 String nameGood = "test"; 204 ProjectsModel model = new ProjectsModel(); 205 model.createProject(); 206 207 model.setProjectName(nameWithSpace); 208 Assert.assertFalse(model.isSemanticCheckOk()); 209 210 model.setProjectName(nameWithSlash); 211 Assert.assertFalse(model.isSemanticCheckOk()); 212 213 model.setProjectName(nameGood); 214 Assert.assertTrue(model.isSemanticCheckOk()); 215 } 216 }