• T
    Refactor Date/Time next_occurring and prev_occurring · 333ff24b
    T.J. Schuck 提交于
    These methods were originally added in https://github.com/rails/rails/pull/26600
    
    This includes a couple of refactors to make these methods behave more similarly to other Date/Time extensions added by Active Support:
    
    1. Use `advance` instead of `since` and `ago` to time-travel — this is particularly important to keep the returned instance’s class matching `self`.  Before this change:
    
        today = Date.today                     # => Tue, 28 Nov 2017
        today.class                            # => Date
        today.next_occurring(:wednesday)       # => Wed, 29 Nov 2017 00:00:00 UTC +00:00
        today.next_occurring(:wednesday).class # => ActiveSupport::TimeWithZone
    
      After this change, a Date (or Time, or DateTime) instance is properly returned (just like is shown in the new docs).  This is generally how everything else in DateAndTime::Calculations works.
    
    2. Move the tests from the DateTime tests to the DateAndTimeBehavior tests.  The latter location is mixed in to the core_ext tests for _all_ of Date, Time, and DateTime to test the behavior across all of the classes.  The previous location is for testing core_ext functionality added specifically just to DateTime.
    
    3. Better docs!
    333ff24b
date_time_ext_test.rb 22.1 KB