/lolli

A micro-sized unit testing framework for learning TDD

Primary LanguageRubyMIT LicenseMIT

Build Status Gem Version

Lolli, beta. lolli logo

Lolli is a lightweight unit testing framework built for learning, currently in beta.

Lolli's aim is to help introduce testing to developers by lowering the barrier-of-entry of more feature-rich fraimeworks.

In my experiece, due to the necessity of testing frameworks which can be syntactically amorphic and DSL-heavy, the cognitive leap of learning testing in Ruby can be challenging. Lolli doesn't wish to replace these vital frameworks, but rather mimic their most basic behavior in order to shift the learning conversation towards the concepts of testing, rather than the tools to do it.

It should be doubly noted that Lolli is not fit for testing production code. After learning with Lolli, the hope is that making the transition to a more appropriate framework will be easier than having started with one in the first place.

To get started with, follow the installation and example usage sections below.

More detailed documentation is forthcoming.

Installation

Add this line to your application's Gemfile:

gem 'lolli'

And then execute:

$ bundle

Or install it yourself as:

$ gem install lolli

Basic Usage

Create a new test file:

$ touch ./test_folder/example_test.rb

In that file, require Lolli:

require 'lolli'

Open a new class that inherits from Lolli's Example class:

class ExampleTest < Lolli::Example

You now have access to create Lolli example blocks. The structure looks like this:

example "description" do
  expected = true
  actual = true
  assert_equals(expected: expected, actual: actual)
end

NOTE: example blocks must end with a matcher.

To run the test, run the ruby command from the terminal with the path to your test file:

$ ruby ./test_folder/example_test.rb

The output should look like this:

description
  true

That's it!

A failing example might look like this:

example "description" do
  expected = true
  actual = false
  assert_equals(expected: expected, actual: actual)
end

Which will output this:

$ ruby ./test_folder/example_test.rb
description
  false
    Expected: true
    Actual: false

Example Usage

You can add multiple example blocks to a single test class:

require 'lolli'

class ExampleTest < Lolli::Example
  example "it works!" do
    expected = 4
    actual = 2 + 2
    assert_equals(expected: expected, actual: actual)
  end

  example "it doesn't work." do
    expected = 4
    actual = 2 + 3
    assert_equals(expected: expected, actual: actual)
  end
end

Which will output:

$ ruby ./test_folder/example_test.rb
it works!
  true

it doesn't work.
  false
    Expected: 4
    Actual: 5

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

User stories for features and chores are tracked via a Trello board. Please feel free to request access.

Bug reports and pull requests are welcome on GitHub at https://github.com/thomascountz/lolli. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Lolli project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.