style_cop 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 +7 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +38 -0
- data/README.md +2 -0
- data/lib/style_cop/assert_style.rb +37 -0
- data/lib/style_cop/public_methods.rb +23 -0
- data/lib/style_cop/register_style.rb +17 -0
- data/lib/style_cop.rb +10 -0
- data/spec/lib/style_cop/assert_style_spec.rb +52 -0
- data/spec/lib/style_cop/public_methods_spec.rb +60 -0
- data/spec/spec_helper.rb +16 -0
- data/style_cop.gemspec +16 -0
- metadata +97 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cad754b549725a014e392f631d97c12dbb12dfc8
|
4
|
+
data.tar.gz: aba58cb8317eacd9a5d90b97ee02e5e4352f8974
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a2a236e98c7fc36371c3c468d6f25e8315f5473326085d7a10a289dc8bbbe51e300f5b7cfcc5312191163aeeaf07f3fb4f8ede8cad7dfe54e7548bded8a99225
|
7
|
+
data.tar.gz: a88d3a48dd18d12f03e416393c32d728b6f068f6a524b5dfc25c1888c05e6e849ba0a66f66ded8a59bc93066fd22cc3bad02a2da2aa145adff436fc038efece7
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
style_cop (0.0.1)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
coderay (1.1.0)
|
10
|
+
diff-lcs (1.2.5)
|
11
|
+
method_source (0.8.2)
|
12
|
+
mini_portile (0.5.2)
|
13
|
+
nokogiri (1.6.1)
|
14
|
+
mini_portile (~> 0.5.0)
|
15
|
+
pry (0.9.12.6)
|
16
|
+
coderay (~> 1.0)
|
17
|
+
method_source (~> 0.8)
|
18
|
+
slop (~> 3.4)
|
19
|
+
rspec (2.14.1)
|
20
|
+
rspec-core (~> 2.14.0)
|
21
|
+
rspec-expectations (~> 2.14.0)
|
22
|
+
rspec-mocks (~> 2.14.0)
|
23
|
+
rspec-core (2.14.8)
|
24
|
+
rspec-expectations (2.14.5)
|
25
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
26
|
+
rspec-mocks (2.14.6)
|
27
|
+
slop (3.4.7)
|
28
|
+
xpath (2.0.0)
|
29
|
+
nokogiri (~> 1.3)
|
30
|
+
|
31
|
+
PLATFORMS
|
32
|
+
ruby
|
33
|
+
|
34
|
+
DEPENDENCIES
|
35
|
+
pry (~> 0.9.12.6)
|
36
|
+
rspec (~> 2.14.0)
|
37
|
+
style_cop!
|
38
|
+
xpath (~> 2.0.0)
|
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module StyleCop
|
2
|
+
class AssertStyle
|
3
|
+
def initialize(selector, rules, test_context)
|
4
|
+
@selector = selector
|
5
|
+
@rules = rules
|
6
|
+
@test_context = test_context
|
7
|
+
end
|
8
|
+
|
9
|
+
def has_correct_structure
|
10
|
+
selector_present ? fulfills_all_rules : raise_error
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
attr_reader :selector, :test_context, :rules
|
16
|
+
|
17
|
+
def selector_present
|
18
|
+
test_context.has_css?(selector)
|
19
|
+
end
|
20
|
+
|
21
|
+
def raise_error
|
22
|
+
raise StandardError, "Selector: #{selector} is not present."
|
23
|
+
end
|
24
|
+
|
25
|
+
def fulfills_all_rules
|
26
|
+
test_context.page.all(selector).each do |element|
|
27
|
+
has(element)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def has(element)
|
32
|
+
rules.each do |node|
|
33
|
+
test_context.expect(element).to test_context.have_selector(node)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module StyleCop
|
2
|
+
module PublicMethods
|
3
|
+
def has_child(selector)
|
4
|
+
RegisterStyle.add_rule("> #{selector}")
|
5
|
+
end
|
6
|
+
|
7
|
+
def has_nested_children(*args)
|
8
|
+
rule = ""
|
9
|
+
args.each do |arg|
|
10
|
+
rule = "#{rule}> #{arg} "
|
11
|
+
end
|
12
|
+
RegisterStyle.add_rule(rule.strip)
|
13
|
+
end
|
14
|
+
|
15
|
+
def register_style_structure_for(selector, &block)
|
16
|
+
block ? RegisterStyle.new(selector, &block) : (raise(StandardError, "No block given."))
|
17
|
+
end
|
18
|
+
|
19
|
+
def assert_style_structure_for(selector)
|
20
|
+
AssertStyle.new(selector, RegisterStyle.rules, self).has_correct_structure
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/style_cop.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe StyleCop::AssertStyle do
|
4
|
+
subject{ StyleCop::AssertStyle.new(selector, rules, test_context) }
|
5
|
+
let(:selector) { '.selector' }
|
6
|
+
let(:rules) { double('rules') }
|
7
|
+
let(:test_context) { double('test_context') }
|
8
|
+
|
9
|
+
describe "has_correct_structure" do
|
10
|
+
before do
|
11
|
+
allow(test_context).to receive(:has_css?) { has_selector }
|
12
|
+
end
|
13
|
+
|
14
|
+
context "selector present" do
|
15
|
+
let(:has_selector) { true }
|
16
|
+
|
17
|
+
let(:rule1) { double('rule1') }
|
18
|
+
let(:rule2) { double('rule2') }
|
19
|
+
let(:element1) { double('element1') }
|
20
|
+
let(:element2) { double('element2') }
|
21
|
+
let(:node1) { double('node1') }
|
22
|
+
let(:node2) { double('node2') }
|
23
|
+
let(:rules) { [rule1, rule2] }
|
24
|
+
|
25
|
+
before do
|
26
|
+
test_context.stub_chain(:page, :all) { [element1, element2] }
|
27
|
+
end
|
28
|
+
|
29
|
+
it "calls an expectation on elements" do
|
30
|
+
expect(test_context).to receive(:expect).with(element1).twice { node1 }
|
31
|
+
expect(test_context).to receive(:expect).with(element2).twice { node2 }
|
32
|
+
allow(node1).to receive(:to)
|
33
|
+
allow(node2).to receive(:to)
|
34
|
+
expect(test_context).to receive(:have_selector).with(rule1).twice
|
35
|
+
expect(test_context).to receive(:have_selector).with(rule2).twice
|
36
|
+
|
37
|
+
subject.has_correct_structure
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "selector not present" do
|
42
|
+
let(:has_selector) { false }
|
43
|
+
|
44
|
+
it "raises a StandardError" do
|
45
|
+
expect { subject.has_correct_structure }.to raise_error { |error|
|
46
|
+
expect(error.message).to eq "Selector: .selector is not present."
|
47
|
+
error.should be_a(StandardError)
|
48
|
+
}
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe StyleCop::PublicMethods do
|
4
|
+
include StyleCop::PublicMethods
|
5
|
+
let(:selector) {'.foo'}
|
6
|
+
|
7
|
+
describe 'has_child' do
|
8
|
+
|
9
|
+
it 'calls add_rule on RegisterStyle' do
|
10
|
+
expect(StyleCop::RegisterStyle).to receive(:add_rule).with('> .foo')
|
11
|
+
has_child selector
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'has_nested_children' do
|
16
|
+
let(:selector1) {'.foo'}
|
17
|
+
let(:selector2) {'.bar'}
|
18
|
+
|
19
|
+
it 'calls add_rule on RegisterStyle' do
|
20
|
+
expect(StyleCop::RegisterStyle).to receive(:add_rule).with('> .foo > .bar')
|
21
|
+
has_nested_children(selector1, selector2)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'register_style_structure_for' do
|
26
|
+
let(:block) { lambda{} }
|
27
|
+
|
28
|
+
context 'block is given' do
|
29
|
+
it 'calls a new RegisterStyle' do
|
30
|
+
expect(StyleCop::RegisterStyle).to receive(:new).with(selector, &block)
|
31
|
+
register_style_structure_for(selector, &block)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'no block is given' do
|
36
|
+
it 'raises a no block error' do
|
37
|
+
expect { register_style_structure_for(selector) }.to raise_error { |error|
|
38
|
+
expect(error.message).to eq "No block given."
|
39
|
+
error.should be_a(StandardError)
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe 'assert_style_structure_for' do
|
46
|
+
let(:rules) { double(:rules) }
|
47
|
+
let(:assert_style_class) { double(:assert_style_class) }
|
48
|
+
|
49
|
+
before do
|
50
|
+
allow(StyleCop::RegisterStyle).to receive(:rules) { rules }
|
51
|
+
end
|
52
|
+
|
53
|
+
it "creates an AssertStyle object and calls has_correct_structure on it" do
|
54
|
+
expect(StyleCop::AssertStyle).to receive(:new).with(selector, rules, self) { assert_style_class }
|
55
|
+
expect(assert_style_class).to receive(:has_correct_structure)
|
56
|
+
|
57
|
+
assert_style_structure_for(selector)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'pry'
|
5
|
+
require 'style_cop'
|
6
|
+
require 'rspec'
|
7
|
+
|
8
|
+
ENV['test_run'] = true.to_s
|
9
|
+
|
10
|
+
Dir[File.join(File.dirname(__FILE__), 'support', '**', '*.rb')].each do |file|
|
11
|
+
require file
|
12
|
+
end
|
13
|
+
|
14
|
+
RSpec.configure do |config|
|
15
|
+
config.mock_with :rspec
|
16
|
+
end
|
data/style_cop.gemspec
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'style_cop'
|
3
|
+
s.version = '0.0.1'
|
4
|
+
s.date = '2014-03-03'
|
5
|
+
s.summary = "Gem for testing style"
|
6
|
+
s.description = "Gem for testing style"
|
7
|
+
s.authors = ["Ward Penney", "David Tengdin"]
|
8
|
+
s.email = 'style-cop@googlegroups.com'
|
9
|
+
s.files = `git ls-files`.split("\n")
|
10
|
+
s.homepage = 'http://rubygems.org/gems/style_cop'
|
11
|
+
s.license = 'MIT'
|
12
|
+
|
13
|
+
s.add_development_dependency "rspec", "~> 2.14.0"
|
14
|
+
s.add_development_dependency "xpath", "~> 2.0.0"
|
15
|
+
s.add_development_dependency "pry", "~> 0.9.12.6"
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: style_cop
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ward Penney
|
8
|
+
- David Tengdin
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-03-03 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ~>
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 2.14.0
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 2.14.0
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: xpath
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 2.0.0
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 2.0.0
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: pry
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ~>
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 0.9.12.6
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.9.12.6
|
56
|
+
description: Gem for testing style
|
57
|
+
email: style-cop@googlegroups.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- Gemfile
|
63
|
+
- Gemfile.lock
|
64
|
+
- README.md
|
65
|
+
- lib/style_cop.rb
|
66
|
+
- lib/style_cop/assert_style.rb
|
67
|
+
- lib/style_cop/public_methods.rb
|
68
|
+
- lib/style_cop/register_style.rb
|
69
|
+
- spec/lib/style_cop/assert_style_spec.rb
|
70
|
+
- spec/lib/style_cop/public_methods_spec.rb
|
71
|
+
- spec/spec_helper.rb
|
72
|
+
- style_cop.gemspec
|
73
|
+
homepage: http://rubygems.org/gems/style_cop
|
74
|
+
licenses:
|
75
|
+
- MIT
|
76
|
+
metadata: {}
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements: []
|
92
|
+
rubyforge_project:
|
93
|
+
rubygems_version: 2.1.10
|
94
|
+
signing_key:
|
95
|
+
specification_version: 4
|
96
|
+
summary: Gem for testing style
|
97
|
+
test_files: []
|