App-Dochazka-REST

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN


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

Changes  view on Meta::CPAN

  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

Changes  view on Meta::CPAN

  - 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 )