timecop~TobiasGSmollett

Mock with Time.now with the power of time travel, time freeze and time scale
0.4.0 Yanked release released

timecop.cr

Build Status Releases License

A timecop inspired library to allow easy manipulation of time in tests. Originally authored by TobiasGSmollett.

Installation

Add this to your application's shard.yml:

dependencies:
+  timecop:
+    github: crystal-community/timecop.cr

Usage

require "timecop"

Timecop.freeze

time = Time.local(2008, 10, 10, 10, 10, 10)
Timecop.freeze(time) do |frozen_time|
  frozen_time == Time.local # => true
end

Timecop.travel

Timecop.travel(Time.local(2014, 1, 1, 0, 0, 0)) do
  Time.local # => "2014-01-01 00:00:00 +0900"
  sleep(5.seconds)
  Time.local # => "2014-01-01 00:00:05 +0900"
end

Timecop.scale

# seconds will now seem like hours
Timecop.scale(3600)

Time.local # => "2017-08-28 23:50:06 +0900"

sleep(2.seconds)
# 2 seconds later, hours have passed and it's gone from
# 23pm at night to 1am in the morning

Time.local # => "2017-08-29 01:50:21 +0900"

Timecop.safe_mode

Timecop.safe_mode? # => false
Timecop.safe_mode = true

# using method without block
Timecop.freeze Time.local(2008, 10, 10, 10, 10, 10)
# => raises Timecop::SafeModeException

Development

Pull Requests Welcome!

Contributing

  1. Fork it (https://github.com/TobiasGSmollett/timecop.cr/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

Thanks

Thanks to Travis Jeffery for his awesome work on timecop.

timecop:
  github: TobiasGSmollett/timecop.cr
  version: ~> 0.4.0
License MIT
Crystal 0.33.0

Authors

Dependencies 0

Development Dependencies 1

  • ameba ~> 0.11.0
    {'github' => 'crystal-ameba/ameba', 'version' => '~> 0.11.0'}

Dependents 2

Last synced .
search fire star recently