App-Dochazka-REST
view release on metacpan or search on metacpan
0.202 2014-10-22 16:47 CEST
- Hackweek Day 3
- lots of refinements to (plus documentation and test cases for) employee
resources
- implement DELETE support for employee resources
- eliminate problematic "short-cut" 'employee/:nick' and 'employee/:eid'
resources
- make it possible to update an employee property to null
- eliminate problematic 'overlay' method in Model/Employee.pm
- improve debug message in Resource.pm
- add negative and otherwise pathological test cases
0.203 2014-10-22 17:15 CEST
- t/317-dispatch-employee-post.t: got tests running again
0.204 2014-10-23 10:57 CEST
- t/: figure out how to run tests using 'prove -r'; make a 't/dispatch/'
directory for dispatch tests; merge all top-level dispatch tests into a
single file 't/dispatch/top.t'
0.205 2014-10-23 14:02 CEST
- Hackweek Day 4
- Build.PL: make Module::Build walk t/ directory recursively
- REST_MetaConfig.pm: make sure META_DOCHAZKA_VALID_RESOURCES is
initialized to an empty hashref
- add on-line documentation infrastructure
- config/dispatch/dispatch_Top_Config.pm: add HTML documentation strings
to all the top-level resources; add 'docu' resource definition
- Dispatch.pm: remove POD sections corresponding to the HTML documentation
strings added to resource definition file; add target subroutine
for 'docu' resource; use heredoc in _forbidden
- Resource.pm: enable validations to be specified in resource definitions
(see Path::Router) -- untested; during path/router initialization build
up META_DOCHAZKA_VALID_RESOURCES (hash of valid resources); push
'documentation' property onto context
- t/dispatch/top.t: add tests for 'docu' resource
0.206 2014-10-23 14:31 CEST
- config/dispatch/dispatch_Employee_Config.pm: add HTML documentation
strings to all the employee resources
- Dispatch/Employee.pm: remove POD documentation that has been moved to the
resource definition file
- find bug "POST docu" returns same string, no matter which resource is
specified (should return the documentation string stipulated for the
resource in the resource definition)"
- t/dispatch/top.t: add test cases for the bug
0.207 2014-10-23 15:16 CEST
- rename meta param META_DOCHAZKA_VALID_RESOURCES to
META_DOCHAZKA_RESOURCE_DOCS and store resource documentation strings
there during path router initialization
- in the 'docu' target, get the HTML string from
META_DOCHAZKA_RESOURCE_DOCS meta param
- Resource.pm: no longer need to push documentation HTML string onto the
context
- Test.pm: add a 'docu_check' routine (to automate testing of each resource
for presence of documentation in the resource definition)
- t/dispatch/top.t: run docu_check on each top-level resource
0.208 2014-10-24 08:43 CEST
- convert portion of employee dispatch tests to new structure
0.209 2014-10-24 10:49 CEST
- complete development workflow for employee resources
- dispatch_Employee_Config.pm: add missing documentation
- Dispatch/Employee.pm: fix bug "DELETE employee/nick/:nick actually
inserts a new employee if :nick not found"
- t/: continue migrating dispatch tests to new structure; disable old
units so ./Build test doesn't run them; add new unit
t/dispatch/employee/nick.t
0.210 2014-10-24 15:33 CEST
- Hackweek Day 5
- implement privhistory resources using new development workflow
- merge 'privhistory/current' and 'privhistory/current/:tsrange' into a
single resource 'privhistory/current/?:tsrange'
- dispatch/dispatch_Privhistory_Config.pm: put resources in alphabetical
order; document resources; add more supported methods
- t/dispatch/privhistory: add privhistory tests in new structure
- Dispatch/Privhistory.pm: put targets in order according to their
corresponding resources; rename _get_nick and _get_eid to _nick and _eid,
respectively, and expand them to support PUT and DELETE
- Model/Privhistory.pm: add some debug messages
0.211 2014-10-24 22:40 CEST
- Hackweek Day 5, continued
- config/sql/dbinit_Config.pm: add UNIQUE (eid, effective) constraint to
privhistory table to avoid duplicate entries in a given employee's
privhistory listing
- dispatch_Message_en.conf: add DISPATCH_PRIVHISTORY_COULD_NOT_SPAWN
- Dispatch/Privhistory.pm: implement support for PUT and DELETE requests in
_eid and _nick targets
- Model/Employee.pm: fix bug "get 500 Server Error when I send a request for
bogus resource 'privhistory/eid/asdf'"
- t/dispatch/privhistory/: add quite a few tests
0.212 2014-10-25 23:23 CEST
- update MANIFEST to current state
- change 'privhistory' to 'priv'
- add new 'priv/current/?:ts' resource
- t/: start adapting tests
0.213 2014-10-26 22:36 CET
- config/dispatch/priv_Config.pm: add "priv/current/eid/:eid/?:ts" and
"priv/current/nick/:nick/?:ts" resources; unclear how privhistory records
will be added and deleted
- dispatch_Message_en.conf: remove duplicate message
- Dispatch/Privhistory.pm: repurpose _current_priv so it works for the new
resources added in this commit; rename _eid and _nick to _history_eid and
_history_nick, respectively
0.214 2014-10-27 13:12 CET
- config/dispatch/top_Config.pm: add 'cli' property to all top-level
resource definitions; put into alphabetical order; rename 'privhistory'
to 'priv'
- Dispatch.pm: make 'docu' resource return "resource => ''" when called
without an argument, instead of "resource => undef"; make
"not_implemented" resource include HTTP method in payload
0.215 2014-10-27 13:39 CET
- config/dispatch/employee_Config.pm, config/dispatch/priv_Config.pm: add
'cli' properties to all resource definitions
- ../development-checklist: complete manual CLI testing of all top-level
and employee resources
0.216 2014-10-27 14:29 CET
- config/dispatch/priv_Config.pm: fix 'priv/eid/:eid/?:ts' and
'priv/nick/:nick/?:ts' resource definitions
- config/dispatch_Message_en.conf: add DISPATCH_EMPLOYEE_CURRENT_PRIV_AT_TIMESTAMP
- Dispatch/Privhistory.pm: fix bugs in _current_priv
- Model/Shared.pm: fix bugs in priv_by_eid and _st_by_eid
0.217 2014-10-27 17:53 CET
- config/dispatch/priv_Config.pm: eliminate duplicate 'priv' resource
definition that was giving me grief; fix two wrong ACL profiles;
eliminate 'priv/history/?:tsrange' and replace it with
'priv/history/current/?:tsrange'; add 'priv/history/phid/:phid' resource
- config/dispatch/top_Config.pm: tweak resource documentation
- dispatch_Message_en.conf: tweak priv-related messages
- Dispatch/Privhistory.pm: tweak priv-related messages, add
'priv/history/phid/:phid' resource target
- t/: add new tests; adapt existing tests to current state
0.218 2014-10-27 20:31 CET
- config/dispatch_Message_en.conf: tweak bad/missing parameter message
e.g., "active" but the remaining methods (PUT, POST, DELETE) need to be
available only to administrators
- Resource.pm: modify 'forbidden' method to handle resources with ACL profiles
defined for each HTTP method separately
- config/dispatch/activity_Config.pm: define per-method ACL profiles where needed
- Model/Privhistory.pm: improve documentation of 'get_privhistory' routine
- Test.pm: add 'req_active', 'req_json_active', 'create_active_employee', and
'delete_active_employee' routines
- t/dispatch/activity.t: adapt tests to use the new routines in Test.pm and to
test the per-method ACL profile definitions
0.234 2014-10-31 16:48 CET
- config/dispatch/: convert 'documentation' property of resource definitions
from HTML to POD
- t/dispatch/activity.t: provide some tests for 'activity/aid' and
'activity/code' resources
0.235 2014-10-31 17:29 CET
- Dispatch.pm: do not chomp off linebreaks when processing resource
documentation string
0.236 2014-10-31 21:29 CET
- Build.PL: require Pod::Simple::HTML (needed by 'docu/html' target)
- config/dispatch/: activate 'activity/aid' resource for POST; add '=pod'
line at top of documentation string on each resource; rename 'docu' target
from '_help_post' to '_docu'; add 'docu/html' resource definition; convert
some remaining documentation from HTML to POD
- Dispatch.pm: add a '_docu_html' target
- Dispatch/Activity.pm: adapt '_aid' target for POST
- Test.pm: expand 'docu_check' routine to cover 'docu/html' resource as well as
straight 'docu'
- Util.pm: add a 'pod_to_html' conversion routine
- t/dispatch/activity.t: fill in remaining tests necessary to meet minimal
workflow expectations
- t/dispatch/top.t: add battery of 'docu/html' tests, mostly plagiarized from
'docu'
0.237 2014-11-01 14:11 CET
- rename Dispatch/Privhistory.pm to Dispatch/Priv.pm to match 'priv' resource
0.238 2014-11-03 10:30 CET
- add many schedule-related resources to development-checklist
- in new schedule_Config.pm file with schedule resource definitions
copied from priv_Config.pm, edit resource descriptions and documentation
strings
- in Model/Privhistory.pm, move 'get_privhistory' routine to Model/Shared.pm
and generalize into 'get_history'; make 'get_privhistory' and
'get_schedhistory' in Model/{Privhistory, Schedhistory}.pm be wrappers for this
new shared routine
- t/: adapt to current state
0.239 2014-11-03 12:15 CET
- renamed all 'priv/current/...' and 'schedule/current/...' resources
to 'priv/self/...' and 'schedule/self/...', respectively
- Dispatch/Priv.pm: renamed _get_current to _get_history_self; move
_current_priv logic to Dispatch/Shared.pm->current because we will call it
from Dispatch/Schedule.pm as well;
- Dispatch/Schedule.pm: ongoing adaptations
- t/: adapt to current state
0.240 2014-11-03 16:19 CET
- MANIFEST: add Dispatch/Schedule.pm, t/dispatch/schedule.t
- activity_Config.pm: add 'activity/help' resource definition
- priv_Config.pm, etc.: rename some resources and targets
(in particular s/current/self/ in resource names)
- dispatch_Config.pm, Resource.pm: activate schedule resources
- dispatch_Message_en.pm: add new DISPATCH_EMPLOYEE_SCHEDULE and
DISPATCH_EMPLOYEE_SCHEDULE_AS_AT messages
- config/sql/schedule_Config.pm: add new SQL_SCHEDHISTORY_SELECT_RANGE_BY_EID
and SQL_SCHEDHISTORY_SELECT_RANGE_BY_NICK params
- Dispatch/Shared.pm: adapt 'current' routine to work for both priv and
schedule resources
- Model/Shared.pm: fix some bugs
- Resource.pm: activate schedule resources
- t/dispatch/activity.t: add tests for 'activity/help'
- t/dispatch/schedule.t: add tests for "/schedule/eid/:eid/?:ts",
"/schedule/help", "/schedule/nick/:nick/?:ts", and "/schedule/self/?:ts"
resources
0.241 2014-11-03 22:32 CET
- Dispatch/Shared.pm: "numify" $eid in return value payload from dispatch
target 'current'; check for hashref instead of scalar now that we are
converting the schedule from JSON string into Perl hashref
- Model/Schedule.pm: rename 'get_json' to 'get_schedule_json' and add
'decode_schedule_json' for converting the schedule JSON string into a Perl
hashref
- Model/Shared.pm: return decoded schedule (hashref) from schedule_by_eid
- t/dispatch/schedule.t: uncomment/adapt some tests
- t/: get model units to run cleanly again
0.242 2014-11-04 08:30 CET
- config/dispatch/schedule_Config.pm: put resource definitions in alphabetical order;
add missing POD; add missing 'schedule/intervals' resource definition
0.243 2014-11-04 09:56 CET
- schedule_Config.pm, Dispatch/Schedule.pm: make 'schedule/history/...'
resources use "not_implemented" dispatch target so they don't vomit 500
0.244 2014-11-04 11:32 CET
- schedule_Config.pm: split 'schedule/intervals/?:shid' into two separate
resources for parsing clarity
0.245 2014-11-04 17:50 CET
- Build.PL: require App::Dochazka 0.175 for 'ssid' (instead of 'scratch_sid')
- schedule_Config.pm: 'schedule/intervals' is POST and DELETE only; activate
DELETE on 'schedule/intervals/:sid'; rename ':shid' parameter to ':sid'
- rename 'scratch_sid' field/property of intervals to 'ssid'
- dispatch_Message_en.conf: add DISPATCH_SCHEDINTVLS_MISSING,
DISPATCH_SCHEDULE_INSERT_OK, DISPATCH_SCHEDULE_NO_UPDATE
- Dispatch/Schedule.pm: add _intervals_post and _intervals_delete dispatch
targets
- move 'expurgate' logic to Model/Shared.pm and implement a wrapper method
in each model module
- Model/Schedintvls.pm: fix 'insert' method so it returns a sensible status
payload
- Test.pm: in docu_check, run 'payload' tests only if there is a payload;
add as-yet untested 'create_testing_schedule' and 'delete_testing_schedule'
routines
- t/: add new 'intervals.t' unit; adapt existing units to current state
0.246 2014-11-04 21:08 CET
- stabilization after the last commit
- t/dispatch/intervals.t: add some tests called for by development workflow
0.247 2014-11-04 22:21 CET
- add 'DISPATCH_SCHEDULE_EXISTS' message
- add 'schedule/all' and 'schedule/all/disabled' resource definitions
- add 'disabled' field to 'schedules' table
- Dispatch/Schedule.pm: when schedule already exists, return
'DISPATCH_SCHEDULE_OK'
- t/dispatch/intervals.t: test for 'DISPATCH_SCHEDULE_OK' when inserting the
same schedule a second time
0.248 2014-11-05 11:05 CET
- Build.PL: require App::Dochazka 0.176 to ensure Schedule objects have a
'disabled' property
- config/dispatch/schedule_Config.pm: activate 'schedule/all' and
'schedule/all/disabled' resources
- config/sql/schedule_Config.pm: add 'disabled' field to SQL statements;
add two new SQL statements to get all schedule records
- Dispatch/Schedule.pm: import 'get_all_schedules' and
'get_all_schedules_including_disabled' routines
- Model/Schedule.pm: implement 'get_all_schedules' and
'get_all_schedules_including_disabled' routines
0.249 2014-11-05 12:18 CET
- give 'schedule/all/...' dispatch targets more sensible names
- enable POST on 'schedule/intervals/:sid', including documentation
- t/dispatch/schedule.t: add 405 tests for 'schedule/all/...'
0.250 2014-11-05 17:54 CET
- Build.PL: require App::Dochazka 0.177 for TO_JSON method; require
App::CELL 0.201 to get rid of Data::Structure::Util
- Resource.pm: get rid of wacky debug code; add 'convert_blessed' to our
JSON 'encode' method call now that we have TO_JSON methods in all models;
this obviates the need to call 'unblessed'
- Data::Structure::Util does not work with perl 5.20, so it needs to go;
remove all mentions of it; fix resulting brokenness
- Util.pm: get rid of jury-rigged 'deep_copy' routine (use Storable::dclone
instead!)
0.251 2014-11-06 09:42 CET
- Dispatch/Schedule.pm->_intervals_delete was reporting success even when
nothing was actually deleted - fixed
- Model/Schedule.pm->schedule_all was crashing when no records found (because
$counter was not initialized) - fixed
- t/104-employee.t: deprecate expurgate in favor of TO_JSON
- t/dispatch/intervals.t: when no schedule records are in the database,
'schedule/all/...' will return 404 - fixed
- t/dispatch/schedule.t: add basic tests for 'schedule/all' and
'schedule/all/disabled'
0.252 2014-11-06 16:43 CET
- Build.PL: require App::Dochazka 0.181 for new boilerplate code
- schedule_Config.pm: rename '/schedule/intervals/:sid' to
'/schedule/sid/:sid'
- dbinit_Config.pm: add a trigger to make immutable/unupdatable the 'schedule'
field of the 'shedules' table
- add a 'SQL_SCHEDULE_UPDATE' statement to support updates on the
'schedules' table
- replace calls to 'expurgate' method with 'TO_JSON'
- Dispatch/Schedule.pm: implement _intervals_get and _schedule_post dispatch
targets and '_update_schedule' routine adapted from Employee.pm
- Model/Shedule.pm: override the boilerplate 'compare' method for this
model because the 'disabled' field needs special handling; implement
an 'update' method
- Resource.pm: fix a debug message
- t/107-schedule.t: add test case for 'update' method
- t/dispatch/intervals.t: add GET test case for '/schedule/sid/:sid' resource
0.253 2014-11-07 14:33 CET
- Test.pm: make a new 'req' routine that to replace the current rag-tag
collection of kludgey routines for generating HTTP requests against the
Plack::Test object
- t/dispatch/intervals.t: add 'POST schedule/sid/:sid' test cases; migrate the
entire unit to the new 'req' routine
- t/: move model tests into their own subdirectory and comment out 'skip_all'
so they run
- Model/: remove 'expurgate' method from all model modules (replaced by TO_JSON);
remove 'compare' method overlay (replaced by compare_disabled)
- t/model/activity.t: adapt tests, remove deprecated tests, add new tests
0.254 2014-11-07 16:19 CET
- t/dispatch/activity.t: migrate to new 'req' function
0.255 2014-11-07 22:12 CET
- Ensure PGTZ environment variable is set
- Fix https://github.com/smithfarm/dochazka-rest/issues/28
- t/: be more careful about timezone
0.503 2015-12-10 21:04 CET
- Fix https://github.com/smithfarm/dochazka-rest/issues/30
- t/001-init.t: bail out if DOCHAZKA_TIMEZONE not set
- Fix https://github.com/smithfarm/dochazka-rest/issues/31
- Test.pm: initialize_unit() return PSGI app instead of status obj
- t/: move "pure" unit tests to t/unit/
- t/: simplify regression test init boilerplate
- tests: rename initialize_unit() to initialize_regression_test()
0.504 2015-12-11 21:40 CET
- Make release and prerelease scripts executable
- MANIFEST.bak: remove superfluous file
- Build.PL: require App::Dochazka::Common 0.194
- docgen_Config.pm: do not convert warnings into errors
- tests: use Test::Warning to test for unexpected warnings
(except in 001-init.t)
- dbinit_Config.pm: remove spurious warning
0.505 2016-01-01 15:42 CET
- doc: minor clarifications
- REST.pm: add Report Generation section to POD
- Build.PL: require 0.195 for Component class
- Add Component class, resources, handlers, basic tests
- t/dispatch/: add missing LogToFile lines
- Dispatch.pm: improve error checking
0.506 2016-01-02 02:36 CET
- MANIFEST: add t/dispatch/component.t
- REST.pm: name the genreport resource
- Remove component/path/:path, add component/all
- t/dispatch/component.t: add path_exists() helper function
- t/dispatch/component.t: use path_exists() to test
- component.t: rename path_exists() -> path_exists_by_dispatch()
- prerelease.sh: fix timestamp
- Component: check for invalid ACL profile
- ACL.pm: fix uninitialized value in string eq warnings
- t/dispatch/employee.t: fix "Wide char in print" warning
- Implement Feature #37:
- Dispatch.pm: add init() function that populates Mason directory
- Test.pm: call Dispatch.pm->init() in initialize_regression_test()
- t/dispatch/component.t: test the sample component
0.507 2016-01-02 19:39 CET
- Mason.pm: add module for Mason interpreter singleton
- Mason.pm->init_singleton(): improve error-checking
- Mason.pm: add $comp_root package variable
- Util/Date.pm: drop unused dependency
- REST/Test.pm: skip tests if Mason initialization fails
- Implement Feature #39:
- REST.pm: implement, use, test reset_mason_dir() routine
- REST.pm->reset_mason_dir(): return comp_root in payload
- REST.pm->reset_mason_dir(): return payload only on success
- Model/Component.pm: add create_file method
- Model/Component.pm: call create_file on successful insert and update
- Model/Component.pm: add delete_file method
0.508 2016-01-02 20:24 CET
- Build.PL: add Mason dependency
- docker: add Mason dependency
- t/mason.t: skip tests if state directory inaccessible
0.509 2016-01-02 21:56 CET
- docker: add new dependencies and create state directory
- ResourceDefs.pm: add genreport resource definition
- Implement basic "POST genreport" operation
0.510 2016-01-02 23:24 CET
- Model/Component.pm: improve error handling in generate method
- Add sample/site_param.mc Mason template
- Mason.pm: add basic class_header parameter
- t/dispatch/component.t: do not complain when we add sample templates
- Dispatch.pm->handler_genreport: pass arguments to generate method
- Model/Component.pm->generate: accept and process template arguments
0.511 2016-01-04 00:43 CET
- various documentation fixes
- bin/docgen.plx: reinstate resource POD generation script (lost in
migration from SourceForge to GitHub)
- REST/Test.pm: use accessors to get employee EID
- Docs/Workflow.pm: cover report generation and Mason components
- Model/Shared.pm->tsrange_equal(): return true or false
- Model/Shared.pm: implement tsrange_intersection()
- Partial intervals feature (#43)
- Build.PL: require Common 0.196 for partial intervals
- interval_Config.pm: use overlap instead of contained by
- sql: define SQL_INTERVAL_SELECT_BY_EID_AND_TSRANGE_PARTIAL_INTERVALS
- sql: make SQL_INTERVAL_SELECT_BY_EID_AND_TSRANGE ignore partial intervals
- config/sql/interval_Config.pm: fix syntax error
- Model/Interval.pm: get whole and partial intervals
- Model/Interval.pm: use tsrange_intersection() to create partial intervals
- t/model/interval_lock.t: add partial interval tests
0.512 2016-01-04 11:43 CET
- Fix "Partial intervals not shown in temporal order" (#46)
- bin/create_active_employee.t: script to create employee in empty database
- sql/interval_Config.pm: refrain from sorting intervals
- Model/Interval.pm: sort concatenated set of intervals
- Model/Shared.pm: use tstzrange instead of tsrange
- t/model/interval_lock.t: test case for #46
0.513 2016-01-04 20:39 CET
- Implement feature "No database operations on partial intervals" (#47)
- config/: add DOCHAZKA_PARTIAL_INTERVAL_ILLEGAL_OPERATION message
- Model/Interval.pm: no database operations on partial intervals
- Implement "Test function to delete all attendance data" (#49)
- REST.pm: split insert initial set of activities code into separate function
- Model/Shared.pm->cud_generic(): make bind_params parameter optional
- REST/Test.pm: delete_all_attendance_data() function
- t/{dispatch,model}: use delete_all_attendance_data()
0.514 2016-01-05 11:41 CET
- Fix "INTERVAL DELETE operations clobber partial intervals" (#50)
- Model/Shared.pm: improve cud() and cud_generic() return status
- t/: adapt tests to current state
- config: SQL_INTERVAL_DELETE_BY_EID_AND_TSRANGE ignore partial intervals
- sql/interval_Config.pm: do not apply LIMIT when selecting partial intervals
- Dispatch.pm: fix a double my
( run in 2.095 seconds using v1.01-cache-2.11-cpan-2398b32b56e )