geo_pattern 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/ruby.yml +30 -0
- data/.gitignore +1 -0
- data/.simplecov +1 -0
- data/Gemfile +17 -19
- data/README.md +35 -12
- data/Rakefile +45 -49
- data/geo_pattern.gemspec +18 -22
- data/lib/geo_pattern/background.rb +9 -7
- data/lib/geo_pattern/background_generators/solid_generator.rb +4 -2
- data/lib/geo_pattern/color.rb +3 -1
- data/lib/geo_pattern/color_generators/base_color_generator.rb +12 -10
- data/lib/geo_pattern/color_generators/simple_generator.rb +2 -0
- data/lib/geo_pattern/color_preset.rb +7 -1
- data/lib/geo_pattern/errors.rb +2 -0
- data/lib/geo_pattern/geo_pattern_task.rb +11 -9
- data/lib/geo_pattern/helpers.rb +7 -5
- data/lib/geo_pattern/pattern.rb +6 -4
- data/lib/geo_pattern/pattern_generator.rb +14 -12
- data/lib/geo_pattern/pattern_helpers.rb +11 -8
- data/lib/geo_pattern/pattern_preset.rb +3 -1
- data/lib/geo_pattern/pattern_sieve.rb +5 -3
- data/lib/geo_pattern/pattern_store.rb +20 -18
- data/lib/geo_pattern/pattern_validator.rb +4 -2
- data/lib/geo_pattern/rake_task.rb +19 -16
- data/lib/geo_pattern/roles/comparable_metadata.rb +2 -0
- data/lib/geo_pattern/roles/named_generator.rb +3 -1
- data/lib/geo_pattern/seed.rb +2 -0
- data/lib/geo_pattern/structure.rb +9 -7
- data/lib/geo_pattern/structure_generators/base_generator.rb +17 -14
- data/lib/geo_pattern/structure_generators/chevrons_generator.rb +19 -17
- data/lib/geo_pattern/structure_generators/concentric_circles_generator.rb +19 -17
- data/lib/geo_pattern/structure_generators/diamonds_generator.rb +23 -17
- data/lib/geo_pattern/structure_generators/hexagons_generator.rb +25 -23
- data/lib/geo_pattern/structure_generators/mosaic_squares_generator.rb +35 -35
- data/lib/geo_pattern/structure_generators/nested_squares_generator.rb +23 -21
- data/lib/geo_pattern/structure_generators/octagons_generator.rb +12 -11
- data/lib/geo_pattern/structure_generators/overlapping_circles_generator.rb +13 -11
- data/lib/geo_pattern/structure_generators/overlapping_rings_generator.rb +15 -13
- data/lib/geo_pattern/structure_generators/plaid_generator.rb +18 -18
- data/lib/geo_pattern/structure_generators/plus_signs_generator.rb +24 -18
- data/lib/geo_pattern/structure_generators/sine_waves_generator.rb +17 -15
- data/lib/geo_pattern/structure_generators/squares_generator.rb +10 -9
- data/lib/geo_pattern/structure_generators/tessellation_generator.rb +36 -34
- data/lib/geo_pattern/structure_generators/triangles_generator.rb +22 -19
- data/lib/geo_pattern/structure_generators/xes_generator.rb +26 -19
- data/lib/geo_pattern/svg_image.rb +10 -8
- data/lib/geo_pattern/version.rb +3 -1
- data/lib/geo_pattern.rb +53 -51
- data/script/console +4 -3
- data/spec/background_generators/solid_generator_spec.rb +16 -14
- data/spec/background_spec.rb +13 -11
- data/spec/color_generators/base_color_generator_spec.rb +10 -8
- data/spec/color_generators/simple_generator_spec.rb +5 -3
- data/spec/color_preset_spec.rb +17 -15
- data/spec/color_spec.rb +8 -6
- data/spec/geo_pattern_spec.rb +59 -58
- data/spec/helpers_spec.rb +30 -28
- data/spec/pattern_preset_spec.rb +15 -13
- data/spec/pattern_sieve_spec.rb +13 -11
- data/spec/pattern_spec.rb +20 -18
- data/spec/pattern_store_spec.rb +21 -19
- data/spec/pattern_validator_spec.rb +11 -9
- data/spec/seed_spec.rb +6 -4
- data/spec/spec_helper.rb +9 -8
- data/spec/structure_generators/chevrons_generator_spec.rb +4 -2
- data/spec/structure_generators/concentric_circles_generator_spec.rb +4 -2
- data/spec/structure_generators/diamonds_generator_spec.rb +4 -2
- data/spec/structure_generators/hexagons_generator_spec.rb +4 -2
- data/spec/structure_generators/mosaic_squares_generator_spec.rb +4 -2
- data/spec/structure_generators/nested_squares_generator_spec.rb +4 -2
- data/spec/structure_generators/octagons_generator_spec.rb +4 -2
- data/spec/structure_generators/overlapping_circles_generator_spec.rb +4 -2
- data/spec/structure_generators/overlapping_rings_generator_spec.rb +4 -2
- data/spec/structure_generators/plaid_generator_spec.rb +4 -2
- data/spec/structure_generators/plus_signs_generator_spec.rb +4 -2
- data/spec/structure_generators/sine_waves_generator_spec.rb +4 -2
- data/spec/structure_generators/squares_generator_spec.rb +4 -2
- data/spec/structure_generators/tessellation_generator_spec.rb +4 -2
- data/spec/structure_generators/triangles_generator_spec.rb +4 -2
- data/spec/structure_generators/xes_generator_spec.rb +4 -2
- data/spec/structure_spec.rb +18 -16
- data/spec/support/aruba.rb +6 -6
- data/spec/support/helpers/fixtures.rb +3 -1
- data/spec/support/kernel.rb +8 -2
- data/spec/support/matchers/image.rb +4 -2
- data/spec/support/matchers/name.rb +3 -1
- data/spec/support/rspec.rb +4 -2
- data/spec/support/shared_examples/generator.rb +12 -10
- data/spec/support/shared_examples/pattern.rb +7 -5
- data/spec/support/shared_examples/pattern_name.rb +4 -2
- data/spec/support/shared_examples/structure.rb +12 -10
- data/spec/support/string.rb +3 -2
- data/spec/svg_spec.rb +5 -3
- metadata +11 -59
- data/.rubocop.yml +0 -71
- data/.travis.yml +0 -12
@@ -1,28 +1,30 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
2
4
|
|
3
5
|
RSpec.describe PatternValidator do
|
4
6
|
subject(:validator) { PatternValidator.new(store) }
|
5
|
-
let(:store) { instance_double(
|
7
|
+
let(:store) { instance_double("GeoPattern::PatternStore") }
|
6
8
|
let(:patterns) { [] }
|
7
9
|
|
8
10
|
# Minimum valid object test
|
9
11
|
it { expect(validator).not_to be_nil }
|
10
12
|
|
11
|
-
describe
|
12
|
-
context
|
13
|
+
describe "#validate" do
|
14
|
+
context "when valid pattern is validated" do
|
13
15
|
before :each do
|
14
|
-
allow(store).to receive(:known?).with(
|
16
|
+
allow(store).to receive(:known?).with("pattern1").and_return(true)
|
15
17
|
end
|
16
18
|
|
17
|
-
it { expect { validator.validate(%w
|
19
|
+
it { expect { validator.validate(%w[pattern1]) }.not_to raise_error }
|
18
20
|
end
|
19
21
|
|
20
|
-
context
|
22
|
+
context "when invalid pattern is validated" do
|
21
23
|
before :each do
|
22
|
-
allow(store).to receive(:known?).with(
|
24
|
+
allow(store).to receive(:known?).with("pattern1").and_return(false)
|
23
25
|
end
|
24
26
|
|
25
|
-
it { expect { validator.validate(%w
|
27
|
+
it { expect { validator.validate(%w[pattern1]) }.to raise_error InvalidPatternError }
|
26
28
|
end
|
27
29
|
end
|
28
30
|
end
|
data/spec/seed_spec.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
2
4
|
|
3
5
|
RSpec.describe Seed do
|
4
6
|
subject(:seed) { Seed.new(input) }
|
5
|
-
let(:input) {
|
7
|
+
let(:input) { "string" }
|
6
8
|
|
7
9
|
it { expect(seed).not_to be_nil }
|
8
10
|
|
9
|
-
describe
|
10
|
-
context
|
11
|
+
describe "#[]" do
|
12
|
+
context "when use an integer" do
|
11
13
|
it { expect(seed[1]).to be_kind_of String }
|
12
14
|
end
|
13
15
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,18 +1,19 @@
|
|
1
|
-
#
|
2
|
-
$LOAD_PATH << File.expand_path('../../lib', __FILE__)
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
$LOAD_PATH << File.expand_path("../lib", __dir__)
|
4
|
+
|
5
|
+
require "simplecov"
|
6
|
+
SimpleCov.command_name "rspec"
|
6
7
|
SimpleCov.start
|
7
8
|
|
8
9
|
# Pull in all of the gems including those in the `test` group
|
9
|
-
require
|
10
|
+
require "bundler"
|
10
11
|
Bundler.require :default, :test, :development
|
11
12
|
|
12
|
-
require
|
13
|
+
require "geo_pattern"
|
13
14
|
|
14
15
|
# Loading support files
|
15
|
-
GeoPattern::Helpers.require_files_matching_pattern ::File.expand_path(
|
16
|
+
GeoPattern::Helpers.require_files_matching_pattern ::File.expand_path("support/**/*.rb", __dir__)
|
16
17
|
|
17
18
|
# No need to add the namespace to every class tested
|
18
|
-
include GeoPattern
|
19
|
+
include GeoPattern # rubocop:disable Style/MixinUsage
|
@@ -1,5 +1,7 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
2
4
|
|
3
5
|
RSpec.describe StructureGenerators::ConcentricCirclesGenerator do
|
4
|
-
it_behaves_like
|
6
|
+
it_behaves_like "a structure generator", :concentric_circles
|
5
7
|
end
|
@@ -1,5 +1,7 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
2
4
|
|
3
5
|
RSpec.describe StructureGenerators::MosaicSquaresGenerator do
|
4
|
-
it_behaves_like
|
6
|
+
it_behaves_like "a structure generator", :mosaic_squares
|
5
7
|
end
|
@@ -1,5 +1,7 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
2
4
|
|
3
5
|
RSpec.describe StructureGenerators::NestedSquaresGenerator do
|
4
|
-
it_behaves_like
|
6
|
+
it_behaves_like "a structure generator", :nested_squares
|
5
7
|
end
|
@@ -1,5 +1,7 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
2
4
|
|
3
5
|
RSpec.describe StructureGenerators::OverlappingCirclesGenerator do
|
4
|
-
it_behaves_like
|
6
|
+
it_behaves_like "a structure generator", :overlapping_circles
|
5
7
|
end
|
@@ -1,5 +1,7 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
2
4
|
|
3
5
|
RSpec.describe StructureGenerators::OverlappingRingsGenerator do
|
4
|
-
it_behaves_like
|
6
|
+
it_behaves_like "a structure generator", :overlapping_rings
|
5
7
|
end
|
@@ -1,5 +1,7 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
2
4
|
|
3
5
|
RSpec.describe StructureGenerators::TessellationGenerator do
|
4
|
-
it_behaves_like
|
6
|
+
it_behaves_like "a structure generator", :tessellation
|
5
7
|
end
|
data/spec/structure_spec.rb
CHANGED
@@ -1,17 +1,19 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
2
4
|
|
3
5
|
RSpec.describe Structure do
|
4
6
|
subject(:metadata) { described_class.new(image: svg_image, preset: preset, generator: generator, name: name) }
|
5
7
|
|
6
|
-
let(:svg_image) { instance_double(
|
7
|
-
let(:svg_image_content) { fixtures_path(
|
8
|
-
let(:preset) { instance_double(
|
9
|
-
let(:generator) { stub_const(
|
8
|
+
let(:svg_image) { instance_double("GeoPattern::SvgImage") }
|
9
|
+
let(:svg_image_content) { fixtures_path("generated_patterns/sine_waves.svg").read.chomp }
|
10
|
+
let(:preset) { instance_double("GeoPattern::PatternPreset") }
|
11
|
+
let(:generator) { stub_const("GeoPattern::StructureGenerators::ChevronGenerator", Class.new) }
|
10
12
|
|
11
13
|
let(:name) { :chevron }
|
12
|
-
let(:fill_color_dark) {
|
13
|
-
let(:fill_color_light) {
|
14
|
-
let(:stroke_color) {
|
14
|
+
let(:fill_color_dark) { "#222" }
|
15
|
+
let(:fill_color_light) { "#ddd" }
|
16
|
+
let(:stroke_color) { "#000" }
|
15
17
|
let(:stroke_opacity) { 0.02 }
|
16
18
|
let(:opacity_min) { 0.02 }
|
17
19
|
let(:opacity_max) { 0.15 }
|
@@ -27,12 +29,12 @@ RSpec.describe Structure do
|
|
27
29
|
allow(preset).to receive(:opacity_max).and_return(opacity_max)
|
28
30
|
end
|
29
31
|
|
30
|
-
it_behaves_like
|
31
|
-
it_behaves_like
|
32
|
-
it_behaves_like
|
33
|
-
it_behaves_like
|
34
|
-
it_behaves_like
|
35
|
-
it_behaves_like
|
36
|
-
it_behaves_like
|
37
|
-
it_behaves_like
|
32
|
+
it_behaves_like "a metadata argument", :name
|
33
|
+
it_behaves_like "a metadata argument", :generator
|
34
|
+
it_behaves_like "a forwarded metadata argument", :fill_color_dark
|
35
|
+
it_behaves_like "a forwarded metadata argument", :fill_color_light
|
36
|
+
it_behaves_like "a forwarded metadata argument", :stroke_color
|
37
|
+
it_behaves_like "a forwarded metadata argument", :stroke_opacity
|
38
|
+
it_behaves_like "a forwarded metadata argument", :opacity_min
|
39
|
+
it_behaves_like "a forwarded metadata argument", :opacity_max
|
38
40
|
end
|
data/spec/support/aruba.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "aruba/rspec"
|
4
|
+
require "aruba/api"
|
4
5
|
|
5
6
|
# Spec Helpers
|
6
7
|
module SpecHelper
|
@@ -9,7 +10,7 @@ module SpecHelper
|
|
9
10
|
include ::Aruba::Api
|
10
11
|
|
11
12
|
def dirs
|
12
|
-
@dirs ||= %w
|
13
|
+
@dirs ||= %w[tmp rspec]
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
@@ -18,7 +19,6 @@ RSpec.configure do |c|
|
|
18
19
|
c.include SpecHelper::Aruba
|
19
20
|
|
20
21
|
c.before :each do
|
21
|
-
|
22
|
-
restore_env
|
22
|
+
setup_aruba
|
23
23
|
end
|
24
24
|
end
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SpecHelper
|
2
4
|
module Fixtures
|
3
5
|
def fixtures_path(name)
|
4
|
-
base_path = Pathname.new(File.expand_path(
|
6
|
+
base_path = Pathname.new(File.expand_path("../../../fixtures", __dir__))
|
5
7
|
base_path + Pathname.new(name)
|
6
8
|
end
|
7
9
|
end
|
data/spec/support/kernel.rb
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# rubocop:disable Style/EvalWithLocation
|
4
|
+
|
1
5
|
module Kernel
|
2
6
|
# Captures the given stream and returns it:
|
3
7
|
#
|
@@ -23,14 +27,14 @@ module Kernel
|
|
23
27
|
def capture(stream)
|
24
28
|
stream = stream.to_s
|
25
29
|
captured_stream = Tempfile.new(stream)
|
26
|
-
stream_io = eval("$#{stream}")
|
30
|
+
stream_io = eval("$#{stream}") # rubocop:disable Security/Eval
|
27
31
|
origin_stream = stream_io.dup
|
28
32
|
stream_io.reopen(captured_stream)
|
29
33
|
|
30
34
|
yield
|
31
35
|
|
32
36
|
stream_io.rewind
|
33
|
-
|
37
|
+
captured_stream.read
|
34
38
|
ensure
|
35
39
|
captured_stream.close
|
36
40
|
captured_stream.unlink
|
@@ -38,3 +42,5 @@ module Kernel
|
|
38
42
|
end
|
39
43
|
alias_method :silence, :capture
|
40
44
|
end
|
45
|
+
|
46
|
+
# rubocop:enable Style/EvalWithLocation
|
@@ -1,7 +1,9 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rspec/expectations"
|
2
4
|
|
3
5
|
RSpec::Matchers.define :have_image_with_rgb_color do |*expected|
|
4
|
-
expected = format(
|
6
|
+
expected = format("rgb(%s, %s, %s)", *expected.flatten) # rubocop:disable Style/FormatStringToken
|
5
7
|
|
6
8
|
match do |actual|
|
7
9
|
actual.image.include? expected
|
data/spec/support/rspec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
RSpec.configure do |config|
|
2
4
|
config.expect_with :rspec do |expectations|
|
3
5
|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
@@ -14,10 +16,10 @@ RSpec.configure do |config|
|
|
14
16
|
config.warnings = false
|
15
17
|
|
16
18
|
if config.files_to_run.one?
|
17
|
-
config.default_formatter =
|
19
|
+
config.default_formatter = "doc"
|
18
20
|
end
|
19
21
|
|
20
|
-
config.profile_examples = 10 if ENV.key?
|
22
|
+
config.profile_examples = 10 if ENV.key? "RSPEC_PROFILE"
|
21
23
|
|
22
24
|
config.order = :random
|
23
25
|
Kernel.srand config.seed
|
@@ -1,16 +1,18 @@
|
|
1
|
-
|
2
|
-
subject { described_class.new(seed, preset, svg_image) }
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
RSpec.shared_examples "a structure generator" do |name|
|
4
|
+
subject { described_class.new(seed, preset, svg_image) }
|
5
|
+
|
6
|
+
let(:seed) { instance_double("GeoPattern::Seed") }
|
7
|
+
let(:preset) { instance_double("GeoPattern::PatternPreset") }
|
6
8
|
let(:svg_image) { SvgImage.new }
|
7
|
-
let(:pattern) { instance_double(
|
9
|
+
let(:pattern) { instance_double("GeoPattern::Pattern") }
|
8
10
|
|
9
11
|
let(:name) { name }
|
10
12
|
|
11
|
-
let(:fill_color_dark) {
|
12
|
-
let(:fill_color_light) {
|
13
|
-
let(:stroke_color) {
|
13
|
+
let(:fill_color_dark) { "#222" }
|
14
|
+
let(:fill_color_light) { "#ddd" }
|
15
|
+
let(:stroke_color) { "#000" }
|
14
16
|
let(:stroke_opacity) { 0.02 }
|
15
17
|
let(:opacity_min) { 0.02 }
|
16
18
|
let(:opacity_max) { 0.15 }
|
@@ -37,10 +39,10 @@ RSpec.shared_examples 'a structure generator' do |name|
|
|
37
39
|
subject.generate(pattern)
|
38
40
|
end
|
39
41
|
|
40
|
-
it_behaves_like
|
42
|
+
it_behaves_like "a named generator", name
|
41
43
|
end
|
42
44
|
|
43
|
-
RSpec.shared_examples
|
45
|
+
RSpec.shared_examples "a named generator" do |name|
|
44
46
|
it { is_expected.to have_name name }
|
45
47
|
it { is_expected.to have_name name.to_s }
|
46
48
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.shared_examples "a chosen pattern" do |name|
|
2
4
|
subject(:pattern) { GeoPattern.generate(input, patterns: name) }
|
3
5
|
|
4
6
|
let(:file_name) { "#{name}.svg" }
|
@@ -8,16 +10,16 @@ RSpec.shared_examples 'a chosen pattern' do |name|
|
|
8
10
|
end
|
9
11
|
|
10
12
|
it { expect(pattern.structure).to be_name name }
|
11
|
-
it {
|
13
|
+
it { expect(file_name).to have_same_file_content_as("%/generated_patterns/#{name}.svg") }
|
12
14
|
end
|
13
15
|
|
14
|
-
RSpec.shared_examples
|
16
|
+
RSpec.shared_examples "an invalid pattern" do |chosen_pattern|
|
15
17
|
subject(:pattern) { GeoPattern.generate(input, patterns: chosen_pattern) }
|
16
18
|
|
17
19
|
it { expect { subject }.to raise_error InvalidPatternError }
|
18
20
|
end
|
19
21
|
|
20
|
-
RSpec.shared_examples
|
22
|
+
RSpec.shared_examples "an old style pattern" do |chosen_pattern, name|
|
21
23
|
subject(:pattern) { GeoPattern.generate(input, patterns: chosen_pattern) }
|
22
24
|
|
23
25
|
let(:file_name) { "#{name}.svg" }
|
@@ -27,5 +29,5 @@ RSpec.shared_examples 'an old style pattern' do |chosen_pattern, name|
|
|
27
29
|
end
|
28
30
|
|
29
31
|
it { expect(pattern.structure).to be_name name }
|
30
|
-
it {
|
32
|
+
it { expect(file_name).to have_same_file_content_as("%/generated_patterns/#{name}.svg") }
|
31
33
|
end
|
@@ -1,7 +1,9 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.shared_examples "a known pattern name" do
|
2
4
|
it { silence(:stderr) { expect(pattern_store[pattern_name]).not_to be_nil } }
|
3
5
|
end
|
4
6
|
|
5
|
-
RSpec.shared_examples
|
7
|
+
RSpec.shared_examples "an unknown pattern name" do
|
6
8
|
it { silence(:stderr) { expect(pattern_store[pattern_name]).to be_nil } }
|
7
9
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.shared_examples "a metadata argument" do |argument|
|
2
4
|
describe "##{argument}" do
|
3
5
|
it { expect(metadata.public_send(argument)).to eq public_send(argument) }
|
4
6
|
end
|
@@ -10,38 +12,38 @@ RSpec.shared_examples 'a metadata argument' do |argument|
|
|
10
12
|
end
|
11
13
|
|
12
14
|
context "when #{argument} is defined" do
|
13
|
-
context
|
15
|
+
context "when argument is not given" do
|
14
16
|
it { is_expected.to public_send(:"be_#{argument}", nil) }
|
15
17
|
end
|
16
18
|
|
17
|
-
context
|
19
|
+
context "when argument is the same as the defined one" do
|
18
20
|
it { is_expected.to public_send(:"be_#{argument}", public_send(argument)) }
|
19
21
|
end
|
20
22
|
|
21
|
-
context
|
22
|
-
it { is_expected.not_to public_send(:"be_#{argument}",
|
23
|
+
context "when argument is different from the defined one" do
|
24
|
+
it { is_expected.not_to public_send(:"be_#{argument}", "blub") }
|
23
25
|
end
|
24
26
|
end
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|
28
|
-
RSpec.shared_examples
|
30
|
+
RSpec.shared_examples "a forwarded metadata argument" do |argument|
|
29
31
|
describe "##{argument}" do
|
30
32
|
it { expect(metadata.public_send(argument)).to eq public_send(argument) }
|
31
33
|
end
|
32
34
|
|
33
35
|
describe "##{argument}?" do
|
34
36
|
context "when #{argument} is defined" do
|
35
|
-
context
|
37
|
+
context "when argument is not given" do
|
36
38
|
it { is_expected.to public_send(:"be_#{argument}", nil) }
|
37
39
|
end
|
38
40
|
|
39
|
-
context
|
41
|
+
context "when argument is the same as the defined one" do
|
40
42
|
it { is_expected.to public_send(:"be_#{argument}", public_send(argument)) }
|
41
43
|
end
|
42
44
|
|
43
|
-
context
|
44
|
-
it { is_expected.not_to public_send(:"be_#{argument}",
|
45
|
+
context "when argument is different from the defined one" do
|
46
|
+
it { is_expected.not_to public_send(:"be_#{argument}", "blub") }
|
45
47
|
end
|
46
48
|
end
|
47
49
|
end
|
data/spec/support/string.rb
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "active_support/core_ext/string/strip"
|
data/spec/svg_spec.rb
CHANGED