rspec_fixtures 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4f1f2d6588eaf7ebb37981b9f5aa5e55dd85fad0
4
+ data.tar.gz: 4b4987f63e870117de3c36b8362d78ddd88ac96f
5
+ SHA512:
6
+ metadata.gz: 783f4e3c8625d4bb2592e9b2df79a87363176f38ed147b413067206c853106b244a8dfbeab18c1cf65abd016af0dd76a5d4492e96e4ca0c418183384ff4aafba
7
+ data.tar.gz: 5d38f2e562d12c44ccce09df8ec13678cacee5a1bbc06bb5698372a8fbc61c13c122a8537d74089a29d43c8800e2133cbb0c43b0d060f81d95ef4034d6357c32
data/README.md ADDED
@@ -0,0 +1,23 @@
1
+ RSpec Fixtures
2
+ ==================================================
3
+
4
+ [![Gem](https://img.shields.io/gem/v/rspec_fixtures.svg?style=flat-square)](https://rubygems.org/gems/rspec_fixtures)
5
+ [![Travis](https://img.shields.io/travis/DannyBen/rspec_fixtures.svg?style=flat-square)](https://travis-ci.org/DannyBen/rspec_fixtures)
6
+ [![Code Climate](https://img.shields.io/codeclimate/github/DannyBen/rspec_fixtures.svg?style=flat-square)](https://codeclimate.com/github/DannyBen/rspec_fixtures)
7
+ [![Gemnasium](https://img.shields.io/gemnasium/DannyBen/rspec_fixtures.svg?style=flat-square)](https://gemnasium.com/DannyBen/rspec_fixtures)
8
+
9
+
10
+ Install
11
+ --------------------------------------------------
12
+
13
+ ```
14
+ $ gem install rspec_fixtures
15
+ ```
16
+
17
+ Or with bundler:
18
+
19
+ ```ruby
20
+ gem 'rspec_fixtures'
21
+ ```
22
+
23
+
@@ -0,0 +1,5 @@
1
+ require 'rspec_fixtures/version'
2
+ require 'rspec_fixtures/colors'
3
+ require 'rspec_fixtures/matchers/match_fixture'
4
+ require 'rspec_fixtures/rspec_config'
5
+
@@ -0,0 +1,11 @@
1
+ module RSpecFixtures
2
+ module Colors
3
+ def colors
4
+ @colors ||= {
5
+ reset: "\e[0m", black: "\e[30m", red: "\e[31m",
6
+ green: "\e[32m", yellow: "\e[33m", blue: "\e[34m",
7
+ magenta:"\e[35m", cyan: "\e[36m", white: "\e[37m",
8
+ }
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,78 @@
1
+ module RSpecFixtures
2
+ module Matchers
3
+ def match_fixture(expected)
4
+ MatchFixture.new expected
5
+ end
6
+
7
+ class MatchFixture
8
+ include Colors
9
+
10
+ attr_reader :fixture_name, :actual
11
+
12
+ def initialize(fixture_name=nil)
13
+ @fixture_name = fixture_name
14
+ end
15
+
16
+ def matches?(actual)
17
+ @actual = actual
18
+ if actual == expected or !interactive?
19
+ actual == expected
20
+ else
21
+ approve_fixture
22
+ end
23
+ end
24
+
25
+ def expected
26
+ @expected ||= expected!
27
+ end
28
+
29
+ def failure_message
30
+ "expected #{actual}\nto match #{expected}"
31
+ end
32
+
33
+ def diffable?
34
+ true
35
+ end
36
+
37
+ private
38
+
39
+ def interactive?
40
+ RSpec.configuration.interactive_fixtures
41
+ end
42
+
43
+ def fixtures_dir
44
+ RSpec.configuration.fixtures_path
45
+ end
46
+
47
+ def fixture_file
48
+ "#{fixtures_dir}/#{fixture_name}"
49
+ end
50
+
51
+ def approve_fixture
52
+ puts "%{blue}--- Approval Needed ---%{reset}\n" % colors
53
+ if expected.empty?
54
+ puts actual
55
+ else
56
+ puts "--- New (Actual) ------%{reset}\n#{actual}" % colors
57
+ puts "--- Old (Fixture) -----%{reset}\n#{expected}" % colors
58
+ end
59
+ print "%{blue}--- Approve? (y/N): --> %{reset}" % colors
60
+
61
+ if $stdin.getch == "y"
62
+ puts "%{green}Approved%{reset}" % colors
63
+ File.write fixture_file, actual
64
+ true
65
+ else
66
+ puts "%{red}Not Approved%{reset}" % colors
67
+ actual == expected
68
+ end
69
+ end
70
+
71
+ def expected!
72
+ Dir.mkdir fixtures_dir unless Dir.exist? fixtures_dir
73
+ File.write fixture_file, nil unless File.exist? fixture_file
74
+ File.read fixture_file
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,7 @@
1
+ if defined? RSpec
2
+ RSpec.configure do |config|
3
+ config.include RSpecFixtures::Matchers
4
+ config.add_setting :fixtures_path, default: 'spec/fixtures'
5
+ config.add_setting :interactive_fixtures, default: !ENV['CI']
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module RSpecFixtures
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rspec_fixtures
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Danny Ben Shitrit
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-12-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: runfile
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.9'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.9'
41
+ - !ruby/object:Gem::Dependency
42
+ name: runfile-tasks
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.4'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '9.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '9.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.14'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.14'
83
+ - !ruby/object:Gem::Dependency
84
+ name: yard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.8'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.8'
97
+ description: Automatic interactive fixtures for rspec
98
+ email: db@dannyben.com
99
+ executables: []
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - README.md
104
+ - lib/rspec_fixtures.rb
105
+ - lib/rspec_fixtures/colors.rb
106
+ - lib/rspec_fixtures/matchers/match_fixture.rb
107
+ - lib/rspec_fixtures/rspec_config.rb
108
+ - lib/rspec_fixtures/version.rb
109
+ homepage: https://github.com/DannyBen/rspec_fixtures
110
+ licenses:
111
+ - MIT
112
+ metadata: {}
113
+ post_install_message:
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: 2.0.0
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubyforge_project:
129
+ rubygems_version: 2.6.13
130
+ signing_key:
131
+ specification_version: 4
132
+ summary: Interactive RSpec Fixtures
133
+ test_files: []