# Middleman::Jasmine

This gem adds the Jasmine runner into a middleman app under the `/jasmine` path.
It has (optional) support for Sprockets.

It uses Jasmine 2.0. For Jasmine 1.3 support use the [jasmine_1_3](https://github.com/mrship/middleman-jasmine/tree/jasmine_1_3) branch.

## Installation

Add this line to your application's Gemfile:

    gem 'middleman-jasmine'

And then execute:

    $ bundle

## Usage

First run `bundle exec jasmine init` to setup Jasmine.

Then, if you have Sprockets installed through [middleman-sprockets](https://github.com/middleman/middleman-sprockets), you can create a `spec.js` file in `spec/javascripts/` to include all your specs, i.e.

```
//= require application
//= require_tree .
```

Add the following code to your `config.rb` file:

```ruby
activate :jasmine
```

Write a spec file under `spec/javascripts/` and hit `/jasmine` under your Middleman app, e.g. `http://localhost:4567/jasmine`.

You should see the results of the spec pass/fail under Jasmine.


## Rake
You can also run the Jasmine-tests using PhantomJS with Rake:

Add the following to the `Rakefile` generated from `bundle exec jasmine init`:

```ruby
require 'middleman'
require 'middleman-jasmine'
require 'middleman/jasmine/tasks'
```

Then use:

```
rake middleman_jasmine:ci
```

## Configuration

To configure the extension, use:

```ruby
activate :jasmine do |options|
  options.fixtures_dir = "spec/javascripts/fixtures"
  options.jasmine_url  = "/jasmine"
  options.config_file  = "spec/config.yml"
  options.debug_assets = false
end
```

NOTE: `debug_assets` can be used to extract any assets included in the spec files and serve them with `?body=t` to avoid Sprockets compiling them every time a spec re-runs.

## Caveats

If you add additional paths to Sprockets with `append_path` in your `after_configuration` block then you'll most likely need to append the same paths to the `Middleman::Jasmine` Sprockets instance. To do that use the helper `jasmine_sprockets`, i.e.:

```ruby
after_configuration do
  handlebars_path = File.expand_path('../', ::Handlebars::Source.bundled_path)
  sprockets.append_path(handlebars_path)

  # add Handlebars to Jasmine too
  jasmine_sprockets.append_path(handlebars_path)
end
```

## Contributing

1. Fork it
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 new Pull Request