https://github.com/fteem/minitest-metz
Make sure your code (production and tests) obey Sandi Metz' four rules for developers.
https://github.com/fteem/minitest-metz
Last synced: 26 days ago
JSON representation
Make sure your code (production and tests) obey Sandi Metz' four rules for developers.
- Host: GitHub
- URL: https://github.com/fteem/minitest-metz
- Owner: fteem
- Created: 2016-01-14T16:06:14.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-01-14T19:16:11.000Z (over 10 years ago)
- Last Synced: 2026-03-29T17:42:42.255Z (3 months ago)
- Language: Ruby
- Homepage:
- Size: 12.7 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Minitest::Metz
Minitest::Metz is a Minitest plugin that under it's hood hides the [SandiMeter](https://github.com/makaroni4/sandi_meter).
It allows you to easily apply Sandi Metz's [four rules for developers](https://robots.thoughtbot.com/sandi-metz-rules-for-developers)
on your tests.
## Why?
Because tests are code. Especially in Minitest, where each test file is a subclass
of `Minitest::Test`.
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'minitest-metz'
```
And then execute:
$ bundle
Or install it yourself as:
$ gem install minitest-metz
## Usage
There two ways that you can use this plugin:
### `--metz`
You can apply the `--metz` flag when you are running your tests. If present, the
plugin will run the `sandi_meter` for the test that ran.
### `assert_obey_metz`
If you are willing of writing tests around the four rules, you can assert on
them. The assertions works on basically any type of class, whether it is a test
class or a production class. If you want to test the test class for the four
rules:
```ruby
class PersonTest < Minitest::Test
def test_sandi_four_rules
assert_obey_metz(self.class)
# Or..
assert_obey_metz(PersonTest)
end
end
```
If you want to test another class:
```ruby
class PersonTest < Minitest::Test
def test_sandi_four_rules
assert_obey_metz(Person)
end
end
```
Also, there's the option on asserting on a file path:
```ruby
class PersonTest < Minitest::Test
def test_sandi_four_rules
assert_obey_metz("lib/person/person.rb")
end
end
```
And, of course, you can use `refute_obey_metz`, although I have no idea why
would you. But anyway, it's available for use. Have fun.
## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` 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](https://rubygems.org).
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/fteem/minitest-metz.