rspec-javascript-matchers 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
+ SHA256:
3
+ metadata.gz: 5621b81fccffce58668b9cff5c8b5f61177426c38225130f71c0d4c936cfffa5
4
+ data.tar.gz: 2ade56d8c32eea63c745b9f27b7b231448b158d022c74b07fd0cae8f589c7693
5
+ SHA512:
6
+ metadata.gz: 6589ba9dd6db1df2c56af1a83b0fbed4946412caf5f483610cba6292722a8de789176369e1de00604fd74748f0fa14d93f0056f00d7da39c422d01394f04b630
7
+ data.tar.gz: 301bbd4313254501ddaec75b4f8c9b226ce2a8eb45a4f08fb9a5d0a7f2117a82c46a56800a220e76e9c9b3e2cb09d316c035f40e425dc074741929f1dd507ff1
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rspec-javascript-matchers.rb.gemspec
4
+ gemspec
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+ # encoding: UTF-8
3
+
4
+ require 'rspec'
5
+ require 'rspec/matchers'
6
+
7
+ RSpec::Matchers.define :be_valid_javascript do
8
+ match do |actual|
9
+ failure_reason(actual) == ''
10
+ end
11
+
12
+ def failure_reason(actual)
13
+ if defined?(V8)
14
+ cxt = V8::Context.new
15
+ begin
16
+ cxt.eval(actual)
17
+ ''
18
+ rescue V8::Error => e
19
+ # Because <eval> doesn't provide any meaningful context info here:k:w
20
+ # Invalid regular expression: missing / at <eval>:4:12
21
+ e.root_cause.message.gsub('<eval>:', '')
22
+ end
23
+ elsif defined?(MiniRacer)
24
+ context = MiniRacer::Context.new
25
+ begin
26
+ context.eval(actual)
27
+ ''
28
+ rescue MiniRacer::ParseError => e
29
+ # Because default is:
30
+ # "Uncaught SyntaxError: Invalid regular expression: missing / at undefined:4:10"
31
+ e.message.gsub('Uncaught SyntaxError: ', '').gsub(' undefined:', ' ')
32
+ end
33
+ else
34
+ %(Maker sure you have "mini_racer" or "therubyracer" gem in your Gemfile dependencies)
35
+ end
36
+ end
37
+
38
+ failure_message do |actual|
39
+ failure_reason actual
40
+ end
41
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,39 @@
1
+ module RSpecJavascriptMatchers
2
+ module Version
3
+ module_function
4
+
5
+ # @return [Integer]
6
+ def major
7
+ 0
8
+ end
9
+
10
+ # @return [Integer]
11
+ def minor
12
+ 0
13
+ end
14
+
15
+ # @return [Integer]
16
+ def patch
17
+ 1
18
+ end
19
+
20
+ # @return [Hash]
21
+ def to_h
22
+ {
23
+ major: major,
24
+ minor: minor,
25
+ patch: patch
26
+ }
27
+ end
28
+
29
+ # @return [Hash]
30
+ def to_a
31
+ [major, minor, patch].compact
32
+ end
33
+
34
+ # @return [String]
35
+ def to_s
36
+ to_a.join('.')
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ require 'version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "rspec-javascript-matchers"
9
+ spec.version = RSpecJavascriptMatchers::Version
10
+ spec.authors = ["Nikita Fedyashev"]
11
+ spec.email = ["nfedyashev@gmail.com"]
12
+ spec.summary = %q{RSpec matchers for checking if your Javascript UJS response is valid Javascript code}
13
+ spec.homepage = "https://github.com/nfedyashev/rspec-javascript-matchers.rb"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = Dir['lib/**/*', '*.md', '*.gemspec', 'Gemfile', 'Rakefile']
17
+
18
+ spec.required_ruby_version = Gem::Requirement.new('>= 1.9.3')
19
+ spec.required_rubygems_version = Gem::Requirement.new('>= 1.3.6')
20
+
21
+ spec.add_dependency 'rspec', '>= 3.0'
22
+
23
+ spec.add_development_dependency 'bundler', '~> 1.0'
24
+ spec.add_development_dependency 'rake', '~> 10'
25
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rspec-javascript-matchers
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Nikita Fedyashev
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-06-16 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.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10'
55
+ description:
56
+ email:
57
+ - nfedyashev@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - Gemfile
63
+ - lib/rspec-javascript-matchers.rb
64
+ - lib/version.rb
65
+ - rspec-javascript-matchers.gemspec
66
+ homepage: https://github.com/nfedyashev/rspec-javascript-matchers.rb
67
+ licenses:
68
+ - MIT
69
+ metadata: {}
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 1.9.3
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 1.3.6
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 2.7.6
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: RSpec matchers for checking if your Javascript UJS response is valid Javascript
90
+ code
91
+ test_files: []