jasmine_fixture_builder 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.codeclimate.yml ADDED
@@ -0,0 +1,2 @@
1
+ languages:
2
+ Ruby: true
data/.gitignore CHANGED
@@ -7,3 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+
11
+ jasmine_fixture_builder-*.gem
data/.travis.yml CHANGED
@@ -1,3 +1,7 @@
1
1
  language: ruby
2
+
3
+ cache: bundler
4
+
2
5
  rvm:
3
- - 2.1.6
6
+ - 2.2.2
7
+
data/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ ### 0.1.0 - January 20, 2017
2
+ - Add support for rspec-rails 3.5.
3
+ - Create the fixture directory if it does not exist.
4
+ - Update dependency, README, and usage instructions.
5
+
6
+ ### 0.0.1 - June 2015
7
+ - Initial release.
data/README.md CHANGED
@@ -1,23 +1,74 @@
1
+ [![Build Status](https://travis-ci.org/defmethodinc/jasmine-fixture-builder.svg?branch=master)](https://travis-ci.org/defmethodinc/jasmine-fixture-builder)
2
+ [![Code Climate](https://codeclimate.com/github/defmethodinc/jasmine-fixture-builder/badges/gpa.svg)](https://codeclimate.com/github/defmethodinc/jasmine-fixture-builder)
3
+ [![Test Coverage](https://codeclimate.com/github/defmethodinc/jasmine-fixture-builder/badges/coverage.svg)](https://codeclimate.com/github/defmethodinc/jasmine-fixture-builder/coverage)
1
4
  # Jasmine Fixture Builder
2
5
 
3
6
  Jasmine Fixture Builder (or "JazzFix" for short) allows you to generate fixtures for your jasmine specs based on the DOM your application renders. Don't let your jasmine fixtures get stale and lie to you - use JazzFix to keep your application's DOM and jasmine specs in sync!
4
7
 
8
+ ## Dependencies
9
+
10
+ JazzFix works alongside the use of the following:
11
+ - rails
12
+ - jquery
13
+ - rspec-rails
14
+ - jasmine
15
+ - jasmine-jquery
16
+
5
17
  JazzFix leverages the fixture loading ability of [jasmine-jquery](https://github.com/velesin/jasmine-jquery) along with the clean DOM rendering that [rspec-rails](https://github.com/rspec/rspec-rails) [view specs](https://github.com/rspec/rspec-rails#view-specs) provide. JazzFix owes a debt of gratitude to the work and subsequent [experience report](http://pivotallabs.com/javascriptspecs-bind-reality/) from JB Steadman.
6
18
 
7
19
  ## Installation
8
20
 
9
- Add this line to your application's Gemfile:
21
+ Add the following gems to application's gem file, grouped to development/test:
22
+ - jasmine
23
+ - jasmine-jquery-rails
24
+ - jasmine_fixture_builder
10
25
 
11
- ```ruby
12
- gem 'jasmine_fixture_builder'
13
- ```
26
+ (rspec-rails is a dependency of jasmine_fixture_builder, so there is no need to explicitly add it to your gem file as a dependency)
14
27
 
15
- And then execute:
28
+ Run the following:
29
+ - `bundle install`
30
+ - `rails generate rspec:install`
31
+ - `rails generate jasmine:install`
16
32
 
17
- $ bundle
33
+ Add `assets/jasmine-jquery.js` underneath the `src_files` item in your jasmine.yml, which should live in the spec/javascripts/support directory.
18
34
 
19
35
  ## Usage
20
36
 
37
+ ###Create a fixture with RSpec:
38
+
39
+ Create a [view spec](https://www.relishapp.com/rspec/rspec-rails/v/3-5/docs/view-specs/view-spec) for a particular view you want to create a fixture from. Render the view, then save the rendered html to a fixture with the provided `save_fixture` method:
40
+
41
+ ```
42
+ describe 'widgets/index' do
43
+ it 'creates fixture' do
44
+ render
45
+ save_fixture(rendered, 'widgets_index.html')
46
+ end
47
+ end
48
+ ```
49
+ `save_fixture` takes 2 arguments: the markup as its first, the name to ascribe the fixture to as its second.
50
+
51
+ This saves the markup from the view into a file living at `spec/javascripts/fixtures/widgets_index.html`.
52
+
53
+ ###Use that fixture in your Jasmine test:
54
+
55
+ Utilize the `loadFixture` method from jasmine-jquery to load up the fixture for use in your test. `loadFixture` inserts the markup from your fixture into a container `<div id='jasmine-fixtures'></div>`.
56
+
57
+ ```
58
+ describe('widgets/index', function() {
59
+ it('tests javascript action', function() {
60
+ //load the fixture
61
+ loadFixture('widgets_index.html');
62
+
63
+ // test some javascript action
64
+ $('#jasmine-fixtures .some-button').click();
65
+
66
+ // make an assertion
67
+ $('#jasmine-fixtures .some-container').toHaveText('text');
68
+ });
69
+ });
70
+ ```
71
+
21
72
  ## Development
22
73
 
23
74
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
data/Rakefile CHANGED
@@ -1 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ task :default => [:spec]
4
+
5
+ begin
6
+ require 'rspec/core/rake_task'
7
+ RSpec::Core::RakeTask.new(:spec)
8
+ rescue LoadError
9
+ end
10
+
@@ -20,7 +20,9 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.9"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "railties"
24
+ spec.add_development_dependency "pry", "~> 0.10.1"
25
+ spec.add_development_dependency "codeclimate-test-reporter", "~> 0.4.7"
23
26
 
24
- spec.add_dependency 'rspec-rails'
27
+ spec.add_dependency "rspec-rails", [">= 3.0", "< 3.6"]
25
28
  end
26
-
@@ -0,0 +1,27 @@
1
+ require 'fileutils'
2
+ require 'rails'
3
+
4
+ module JasmineFixtureBuilder
5
+ class FixtureWriter
6
+
7
+ def initialize(markup, fixture_name)
8
+ @markup = markup
9
+ @fixture_name = fixture_name
10
+ end
11
+
12
+ def write
13
+ fixture_file = File.join(fixture_path, @fixture_name)
14
+ FileUtils.mkdir_p(fixture_path) unless File.directory?(fixture_path)
15
+ File.open(fixture_file, 'w') do |file|
16
+ file.puts(@markup)
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def fixture_path
23
+ @fixture_path ||= Rails.root.join(JAZZ_FIX_PATHS[:fixture_path])
24
+ end
25
+ end
26
+ end
27
+
@@ -0,0 +1,14 @@
1
+ module JasmineFixtureBuilder
2
+ class PathInstaller
3
+ def self.install(root_path)
4
+ JAZZ_FIX_PATHS.values.each do |jazz_fix_path|
5
+ install_path = root_path.join(jazz_fix_path)
6
+ unless Dir.exists?(install_path)
7
+ FileUtils.mkdir_p(install_path)
8
+ File.new(install_path.to_s + "/.keep", "w")
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+
@@ -0,0 +1,9 @@
1
+ module JasmineFixtureBuilder
2
+ class Railtie < Rails::Railtie
3
+
4
+ rake_tasks do
5
+ require "jasmine_fixture_builder/tasks"
6
+ end
7
+ end
8
+ end
9
+
@@ -0,0 +1,11 @@
1
+ require "rspec/expectations"
2
+
3
+ module JasmineFixtureBuilder
4
+ class RspecMatchers
5
+
6
+ RSpec::Matchers.define :save_fixture do |markup, fixture|
7
+ FixtureWriter.new(markup, fixture).write
8
+ end
9
+ end
10
+ end
11
+
@@ -0,0 +1,9 @@
1
+ require_relative "path_installer.rb"
2
+
3
+ namespace :jazz_fix do
4
+ desc "Create directory structure for jasmine_fixture_builder"
5
+ task :install do
6
+ JasmineFixtureBuilder::PathInstaller.install(Rails.root)
7
+ end
8
+ end
9
+
@@ -1,4 +1,4 @@
1
1
  module JasmineFixtureBuilder
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
4
4
 
@@ -1,13 +1,14 @@
1
1
  require "jasmine_fixture_builder/version"
2
+ require "jasmine_fixture_builder/path_installer"
3
+ require "jasmine_fixture_builder/rspec_matchers"
4
+ require "jasmine_fixture_builder/fixture_writer"
2
5
 
3
6
  module JasmineFixtureBuilder
4
- RSpec::Matchers.define :save_fixture do |markup, fixture|
5
- fixture_path = Rails.root.join('spec/javascripts/fixtures')
6
- Dir.mkdir(fixture_path) unless File.exists?(fixture_path)
7
- fixture_file = File.join(fixture_path, fixture)
8
- File.open(fixture_file, 'w') do |file|
9
- file.puts(markup)
10
- end
11
- end
7
+ JAZZ_FIX_PATHS = {
8
+ fixture_path: "spec/javascripts/fixtures",
9
+ fixture_builder_path: "spec/javascripts/fixture_builders"
10
+ }
11
+
12
+ require "jasmine_fixture_builder/railtie" if defined?(Rails)
12
13
  end
13
14
 
metadata CHANGED
@@ -1,57 +1,118 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jasmine_fixture_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - jleo3
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2015-05-03 00:00:00.000000000 Z
12
+ date: 2017-01-20 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - "~>"
19
+ - - ~>
18
20
  - !ruby/object:Gem::Version
19
21
  version: '1.9'
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - "~>"
27
+ - - ~>
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.9'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - "~>"
35
+ - - ~>
32
36
  - !ruby/object:Gem::Version
33
37
  version: '10.0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - "~>"
43
+ - - ~>
39
44
  - !ruby/object:Gem::Version
40
45
  version: '10.0'
41
46
  - !ruby/object:Gem::Dependency
42
- name: rspec-rails
47
+ name: railties
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - ">="
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
- type: :runtime
54
+ type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - ">="
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: pry
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 0.10.1
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.10.1
78
+ - !ruby/object:Gem::Dependency
79
+ name: codeclimate-test-reporter
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 0.4.7
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.4.7
94
+ - !ruby/object:Gem::Dependency
95
+ name: rspec-rails
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '3.0'
102
+ - - <
103
+ - !ruby/object:Gem::Version
104
+ version: '3.6'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ! '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '3.0'
113
+ - - <
114
+ - !ruby/object:Gem::Version
115
+ version: '3.6'
55
116
  description:
56
117
  email:
57
118
  - joe@defmethod.com
@@ -59,9 +120,11 @@ executables: []
59
120
  extensions: []
60
121
  extra_rdoc_files: []
61
122
  files:
62
- - ".gitignore"
63
- - ".rspec"
64
- - ".travis.yml"
123
+ - .codeclimate.yml
124
+ - .gitignore
125
+ - .rspec
126
+ - .travis.yml
127
+ - CHANGELOG.md
65
128
  - CODE_OF_CONDUCT.md
66
129
  - Gemfile
67
130
  - LICENSE.txt
@@ -71,29 +134,35 @@ files:
71
134
  - bin/setup
72
135
  - jasmine_fixture_builder.gemspec
73
136
  - lib/jasmine_fixture_builder.rb
137
+ - lib/jasmine_fixture_builder/fixture_writer.rb
138
+ - lib/jasmine_fixture_builder/path_installer.rb
139
+ - lib/jasmine_fixture_builder/railtie.rb
140
+ - lib/jasmine_fixture_builder/rspec_matchers.rb
141
+ - lib/jasmine_fixture_builder/tasks.rb
74
142
  - lib/jasmine_fixture_builder/version.rb
75
143
  homepage: ''
76
144
  licenses:
77
145
  - MIT
78
- metadata: {}
79
146
  post_install_message:
80
147
  rdoc_options: []
81
148
  require_paths:
82
149
  - lib
83
150
  required_ruby_version: !ruby/object:Gem::Requirement
151
+ none: false
84
152
  requirements:
85
- - - ">="
153
+ - - ! '>='
86
154
  - !ruby/object:Gem::Version
87
155
  version: '0'
88
156
  required_rubygems_version: !ruby/object:Gem::Requirement
157
+ none: false
89
158
  requirements:
90
- - - ">="
159
+ - - ! '>='
91
160
  - !ruby/object:Gem::Version
92
161
  version: '0'
93
162
  requirements: []
94
163
  rubyforge_project:
95
- rubygems_version: 2.2.3
164
+ rubygems_version: 1.8.23
96
165
  signing_key:
97
- specification_version: 4
166
+ specification_version: 3
98
167
  summary: Generates fixtures for Jasmine specs.
99
168
  test_files: []
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: a72f4efd3c02127de0f0329a8b6019707a3b4daa
4
- data.tar.gz: f5024217daa1c0d6e41ab34d261fd44d32e83300
5
- SHA512:
6
- metadata.gz: a96d38d84ff6e98cd7d4ae70bd18f4007e165e2c717a404edf4184881aeb05edc84cfcaf82620249937e4a963f8390303759f42085e80178c86c629a94908e35
7
- data.tar.gz: 9b59843b4b65b69c5f5e0dd5d802b35bb5d012739790ff0a80e66e4a5a920a96987b8c2063d0f4508fa0c603af3a8e8a9ae6413e9a188ade1638552c24a48f79