Giter VIP home page Giter VIP logo

shoulda-whenever's Introduction

shoulda-whenever

This gem was born out of a desire to test the schedule for tasks being scheduled with Whenever. Not to test if Whenever can generate the proper CRON schedule, but to test whether I can generate the proper config/schedule.rb. It turns out I can't sometimes.

How to use this Gem

Add this to you gemfile:

gem "shoulda-whenever", "~> 0.0.2"

Create a new schedule to be tested at config/schedule.rb (or anywhere really, but for the sake of the README, that's where it is):

every :friday, at: "12:00 PM" do
  runner "Notifier.send_team_lunch_email"
end

Create a new test file for testing your schedule, perhaps something like spec/schedule_spec.rb:

describe "Schedule" do
  include Shoulda::Whenever

  let(:whenever) { Whenever::JobList.new(file: File.join(Rails.root, "config", "schedule.rb").to_s) }

  it "sends out the team lunch reminder email every friday at noon" do
    expect(whenever).to schedule("Notifier.send_team_lunch_email").every(:friday).at("12:00 PM")
  end
end

shoulda-whenever's People

Contributors

malachaifrazier avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

shoulda-whenever's Issues

License?

This looks like a great gem, and my team is very interested in using it... however, we're blocked without an explicit license. Can you please publish the licensing used for this gem in something like a LICENSE file?

Published to RubyGems?

Any particular reason why this gem isn't published yet?

I'm using a fork to work around it, but I'm curious.

Possible bug when handling durations

The provided matcher does not work when used with durations, such as 1.day. I even tried it with the original blog post code examples [1], and it failed there as well. Digging a little deeper, I noticed a particular call duration.to_i which casts the duration to seconds and then the subsequent filtering of the jobs returns an empty array.

          duration_to_fetch = if duration.is_a?(String) || duration.is_a?(Symbol)
                                duration
                              else
                                duration
                              end

In my opinion one would not need this casting. Simply assume the duration in the code and the specs is the same.

[1] https://devpost.com/software/shoulda-matchers-for-whenever

Erorr: "NameError: uninitialized constant Whenever" in Rails 5.2

Good day) I encountered a problem when using your gem in my project. The project uses Rails 5.2, Ruby 2.4.3. I want to test my runner. And I get the error:

Failures:

  1) Schedule sends out the team lunch reminder email every friday at noon
     Failure/Error: let(:whenever) { Whenever::JobList.new(file: File.join(Rails.root, "config", "schedule.rb").to_s) }
     
     NameError:
       uninitialized constant Whenever

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.