Changes between Version 26 and Version 27 of LCS_specification


Ignore:
Timestamp:
07/18/2020 01:25:32 PM (6 years ago)
Author:
jdalbey
Comment:

elaborate status form

Legend:

Unmodified
Added
Removed
Modified
  • LCS_specification

    v26 v27  
    1  
    21= Lane Closure System Simulator = 
    32== Functional Specification == 
     
    1817A 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. 
    1918 
    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. '' 
     19The 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.  
    2120 
    2221 4. Search 
     
    3231 6. Status Form 
    3332 
    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?) 
     33When 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. 
    3534 
    3635 7. Status History 
    3736 
    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 "Field Statuser" field of the status form. 
     37A 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. 
    3938 
    4039== Data Dictionary == 
     
    137136== Test Plan == 
    138137''' 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{{{ 
    141141$ 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{{{ 
    145145>> delete from closures;  
    146146}}} 
    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{{{ 
    150150>> .mode csv 
    151151>> .import search_test_data.csv closures  
    152152}}} 
    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{{{ 
    155155>> 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. 
    160160 
    161161[[BR]]Database Records 
    162162 
    163163Example of the closures database: 
     164 
    164165{{{ 
    165166closures.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 
     
    17517672,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,,,,,,,,,,,,,,, 
    176177}}} 
    177  
    178 [[BR]] ''' Test Case Table '''  
     178[[BR]] ''' Test Case Table ''' 
     179 
    179180|| Test Case || Description || Search Input || Expected Search Results (closures.id) || 
    180181|| 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 || 
    184185|| 3a || route not empty, all others empty || route = 22 || 66, 67 || 
    185186|| 3b || || route = 261 || None || 
    186187|| 4a || direction not empty, all others empty || direction = "SB" || 65, 70, 71 || 
    187188|| 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 || 
    189190|| 5b || || startdate = "2020-04-02" || None || 
    190191|| 6a || enddate not empty, all others empty || enddate = "2019-12-31" || 65, 66, 67, 68 || 
     
    194195|| 8a || route + direction not empty, all others empty || route = 5, direction = "SB" || 65, 71 || 
    195196|| 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 || 
    198199|| 10a || route + enddate not empty, all others empty || route = 405, enddate = "2020-02-10" || 64 || 
    199200|| 10b || || route = 405, enddate = "2020-01-30" || None || 
     
    209210|| 15b || || direction = "SB", startdate = "2017-04-19" , enddate = "2018-05-21" || None || 
    210211|| 16 || lognum not empty, closureid empty and others empty || lognum = 4 || Error: Invalid search || 
     212 
    211213Boundary Value Analysis 
     214 
    212215|| Test Case || Description || Search Input || Do Search Results include T5AB? || 
    213216|| 17a || before lower bound ||startdate = "2019-01-21" || Yes || 
    214217|| 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 || 
    216219|| 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 || 
    218221|| 17f || after upper bound ||enddate= "2019-01-24" || No || 
    219  
    220