Changes between Version 26 and Version 27 of LCS_specification
- Timestamp:
- 07/18/2020 01:25:32 PM (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
LCS_specification
v26 v27 1 2 1 = Lane Closure System Simulator = 3 2 == Functional Specification == … … 18 17 A new lane closure is created by submitting a request form. The fields in this form are shown in the UI Prototype. Required fields are marked with an asterisk. Upon submittal the system generates a new closureID and displays a popup dialog with an acknowledgement and the form is reset. 19 18 20 The new closure ID is created in the following format: The uppercase letter "T" (indicating temporary/emergency closure), followed by the highway (route) number, followed by a two letter sequence code that starts with "AA". A log number is also required, a sequential integer starting at 1. TBD: ''There needs to be some field in the form for the user to specify that they want a NEW closure (and thus log number = 1) versus an existing closure, in which case the next sequential log number is assigned. ''19 The new closure ID is created in the following format: The uppercase letter "T" (indicating temporary/emergency closure), followed by the highway (route) number, followed by a two letter sequence code that starts with "AA". A log number is also required, a sequential integer starting at 1. There is a pair of Yes/No radio buttons on the form labeled "Is this an existing incident" which is defaulted to Yes, indicating this requires a new log number (increment by 1) for the closure specified by the drop down box. If No is selected than a new closure ID is created. 21 20 22 21 4. Search … … 32 31 6. Status Form 33 32 34 When the Status Form button is clicked, the search results are elaborated with an extra column that contains a form to update the status of the closure. When the Submit Status Form button is clicked, the closure info is updated with the data from the status form, an acknowledgement message is displayed, and the Search Results page is displayed. (Need clarification: does the user need to check the checkbox for desired items to be updated?)33 When the Status Form button is clicked, a new page appear with that search result and an extra column that contains a form to update the status of the closure. The form shows radio buttons to choose 1097, 1098, or 1022 and a text field labeled "Statuser". When the Submit Status Form button is clicked, the closure info is updated with the data from the status form, an acknowledgement message is displayed, and the Search Results page is displayed. Note that if one of the three items has previously been chosen it will appear disabled. 35 34 36 35 7. Status History 37 36 38 A display of the status history for one or more selected closures. The status history has one to three rows, for possible events 1097, 1022, and 1098. REQ DATE is the start/end time of the original request. STATUS DATE is the time when the a status update happened (obtained from the status form above). USER is the value from the " FieldStatuser" field of the status form.37 A display of the status history for one or more selected closures. The status history has one to three rows, for possible events 1097, 1022, and 1098. REQ DATE is the start/end time of the original request. STATUS DATE is the time when the a status update happened (obtained from the status form above). USER is the value from the "Statuser" field of the status form. 39 38 40 39 == Data Dictionary == … … 137 136 == Test Plan == 138 137 ''' Test Setup ''' 139 * From the {{{ database }}} folder of the LCSv1 web2py application directory. Run the following command to start sqlite3 command line. 140 {{{ 138 139 * From the ` database ` folder of the LCSv1 web2py application directory. Run the following command to start sqlite3 command line. 140 {{{ 141 141 $ sqlite3 storage.sqlite 142 }}} 143 * Clear the data in {{{ closures }}} table in sqlite3 using the command 144 {{{ 142 }}} 143 * Clear the data in ` closures ` table in sqlite3 using the command 144 {{{ 145 145 >> delete from closures; 146 146 }}} 147 * Download the attached file {{{ search_test_data.csv }}} and place it under the {{{ database }}} folder in LCSv1 web2py application directory. 148 * From the {{{ database }}} folder, run the following command to import the testing data. 149 {{{ 147 * Download the attached file ` search_test_data.csv ` and place it under the ` database ` folder in LCSv1 web2py application directory. 148 * From the ` database ` folder, run the following command to import the testing data. 149 {{{ 150 150 >> .mode csv 151 151 >> .import search_test_data.csv closures 152 152 }}} 153 * Run the following command to confirm the data is imported correctly. 154 {{{ 153 * Run the following command to confirm the data is imported correctly. 154 {{{ 155 155 >> select * from closures; 156 }}} 157 It should have all the entries from id 63 to 71 ( 9 entries total) 158 * Run the LCSv1 web2py application and open the search page on the browser. 159 * Start testing according to the test cases in the Test Case Table below. Check if the search returns the correct entries. 156 }}} 157 It should have all the entries from id 63 to 71 ( 9 entries total) 158 * Run the LCSv1 web2py application and open the search page on the browser. 159 * Start testing according to the test cases in the Test Case Table below. Check if the search returns the correct entries. 160 160 161 161 [[BR]]Database Records 162 162 163 163 Example of the closures database: 164 164 165 {{{ 165 166 closures.id,closures.closureid,closures.lognum,closures.route,closures.direction,closures.facility,closures.startdate,closures.enddate,closures.starttime,closures.endtime,closures.startcounty,closures.endcounty,closures.startlocation,closures.endlocation,closures.closuretype,closures.worktype,closures.estdelay,closures.tmpcozeep,closures.tmpdetour,closures.supervisor,closures.fieldrep,closures.meetingplace,closures.reason,closures.reHAL COTAs,closures.s1097date,closures.s1097time,closures.s1097user,closures.s1097phone,closures.s1098date,closures.s1098time,closures.s1098user,closures.s1098phone,closures.s1022date,closures.s1022time,closures.s1022user,closures.s1022phone … … 175 176 72,T11AB,5,1,NB,Mainline,2020-03-01,2020-03-15,0500,0600,ORA,ORA,BAKER,BRISTOL,Lane,AC Paving,40,NO,NO,JOEL ARRIA,HAL COTA,,,,,,,,,,,,,,, 176 177 }}} 177 178 [[BR]] ''' Test Case Table ''' 178 [[BR]] ''' Test Case Table ''' 179 179 180 || Test Case || Description || Search Input || Expected Search Results (closures.id) || 180 181 || 1a || closureid not empty, all others empty || closureid = "T55AA" || 63 || 181 || 1b || || closuredid = "T4AB" || None ||182 || 2a || closureid + lognum not empty, all others empty || closureid = "T2AA", lognum = 1 || 66 ||183 || 2b || || closureid = "T2AA", lognum = 6 || None ||182 || 1b || || closuredid = "T4AB" || None || 183 || 2a || closureid + lognum not empty, all others empty || closureid = "T2AA", lognum = 1 || 66 || 184 || 2b || || closureid = "T2AA", lognum = 6 || None || 184 185 || 3a || route not empty, all others empty || route = 22 || 66, 67 || 185 186 || 3b || || route = 261 || None || 186 187 || 4a || direction not empty, all others empty || direction = "SB" || 65, 70, 71 || 187 188 || 4b || || direction = "EB" || None || 188 || 5a || startdate not empty, all others empty || startdate = "2020-03-17" || 69, 71 || 189 || 5a || startdate not empty, all others empty || startdate = "2020-03-17" || 69, 71 || 189 190 || 5b || || startdate = "2020-04-02" || None || 190 191 || 6a || enddate not empty, all others empty || enddate = "2019-12-31" || 65, 66, 67, 68 || … … 194 195 || 8a || route + direction not empty, all others empty || route = 5, direction = "SB" || 65, 71 || 195 196 || 8b || || route = 73, direction = "NB" || None || 196 || 9a || route + startdate not empty, all others empty || route = 1, startdate = "2020-03-02" || 70 ||197 || 9b || || route = 1, startdate = "2020-04-02" || None ||197 || 9a || route + startdate not empty, all others empty || route = 1, startdate = "2020-03-02" || 70 || 198 || 9b || || route = 1, startdate = "2020-04-02" || None || 198 199 || 10a || route + enddate not empty, all others empty || route = 405, enddate = "2020-02-10" || 64 || 199 200 || 10b || || route = 405, enddate = "2020-01-30" || None || … … 209 210 || 15b || || direction = "SB", startdate = "2017-04-19" , enddate = "2018-05-21" || None || 210 211 || 16 || lognum not empty, closureid empty and others empty || lognum = 4 || Error: Invalid search || 212 211 213 Boundary Value Analysis 214 212 215 || Test Case || Description || Search Input || Do Search Results include T5AB? || 213 216 || 17a || before lower bound ||startdate = "2019-01-21" || Yes || 214 217 || 17b || at lower bound ||startdate = "2019-01-22" || Yes || 215 || 17c || after lower bound ||startdate = "2019-01-23" || No ||218 || 17c || after lower bound ||startdate = "2019-01-23" || No || 216 219 || 17d || before upper bound ||enddate = "2019-01-26" || Yes || 217 || 17e || at upper bound ||enddate= "2019-01-25" || Yes ||220 || 17e || at upper bound ||enddate= "2019-01-25" || Yes || 218 221 || 17f || after upper bound ||enddate= "2019-01-24" || No || 219 220
