geo_pattern 1.4.0 → 1.5.0
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 +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