cuke_modeler 1.4.0 → 3.0.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 +4 -4
- data/CHANGELOG.md +329 -0
- data/LICENSE.txt +1 -1
- data/README.md +25 -18
- data/cuke_modeler.gemspec +15 -9
- data/lib/cuke_modeler/adapters/gherkin_10_adapter.rb +12 -0
- data/lib/cuke_modeler/adapters/gherkin_11_adapter.rb +12 -0
- data/lib/cuke_modeler/adapters/gherkin_12_adapter.rb +12 -0
- data/lib/cuke_modeler/adapters/gherkin_13_adapter.rb +12 -0
- data/lib/cuke_modeler/adapters/{gherkin_6_adapter.rb → gherkin_9_adapter.rb} +75 -64
- data/lib/cuke_modeler/containing.rb +16 -0
- data/lib/cuke_modeler/described.rb +1 -0
- data/lib/cuke_modeler/models/background.rb +1 -1
- data/lib/cuke_modeler/models/cell.rb +1 -1
- data/lib/cuke_modeler/models/comment.rb +1 -1
- data/lib/cuke_modeler/models/directory.rb +2 -2
- data/lib/cuke_modeler/models/doc_string.rb +1 -1
- data/lib/cuke_modeler/models/example.rb +1 -1
- data/lib/cuke_modeler/models/feature.rb +1 -1
- data/lib/cuke_modeler/models/feature_file.rb +2 -2
- data/lib/cuke_modeler/models/outline.rb +1 -1
- data/lib/cuke_modeler/models/row.rb +1 -1
- data/lib/cuke_modeler/models/scenario.rb +1 -1
- data/lib/cuke_modeler/models/step.rb +32 -3
- data/lib/cuke_modeler/models/table.rb +1 -1
- data/lib/cuke_modeler/models/tag.rb +1 -1
- data/lib/cuke_modeler/named.rb +1 -0
- data/lib/cuke_modeler/nested.rb +1 -0
- data/lib/cuke_modeler/parsed.rb +1 -0
- data/lib/cuke_modeler/parsing.rb +88 -92
- data/lib/cuke_modeler/sourceable.rb +1 -0
- data/lib/cuke_modeler/stepped.rb +1 -0
- data/lib/cuke_modeler/taggable.rb +1 -0
- data/lib/cuke_modeler/version.rb +1 -1
- data/testing/cucumber/features/analysis/step_comparison.feature +25 -0
- data/testing/cucumber/features/analysis/test_comparison.feature +1 -1
- metadata +55 -142
- data/.gitignore +0 -18
- data/.simplecov +0 -7
- data/.travis.yml +0 -54
- data/Gemfile +0 -36
- data/History.md +0 -191
- data/Rakefile +0 -63
- data/appveyor.yml +0 -43
- data/lib/cuke_modeler/adapters/gherkin_2_adapter.rb +0 -273
- data/lib/cuke_modeler/adapters/gherkin_3_adapter.rb +0 -296
- data/lib/cuke_modeler/adapters/gherkin_4_adapter.rb +0 -308
- data/testing/cucumber/step_definitions/action_steps.rb +0 -13
- data/testing/cucumber/step_definitions/background_steps.rb +0 -1
- data/testing/cucumber/step_definitions/directory_steps.rb +0 -6
- data/testing/cucumber/step_definitions/doc_string_steps.rb +0 -1
- data/testing/cucumber/step_definitions/feature_file_steps.rb +0 -16
- data/testing/cucumber/step_definitions/feature_steps.rb +0 -7
- data/testing/cucumber/step_definitions/modeling_steps.rb +0 -44
- data/testing/cucumber/step_definitions/setup_steps.rb +0 -32
- data/testing/cucumber/step_definitions/step_steps.rb +0 -3
- data/testing/cucumber/step_definitions/table_steps.rb +0 -1
- data/testing/cucumber/step_definitions/tag_steps.rb +0 -3
- data/testing/cucumber/step_definitions/verification_steps.rb +0 -173
- data/testing/cucumber/support/env.rb +0 -30
- data/testing/dialect_helper.rb +0 -48
- data/testing/file_helper.rb +0 -47
- data/testing/gemfiles/gherkin2.gemfile +0 -32
- data/testing/gemfiles/gherkin3.gemfile +0 -26
- data/testing/gemfiles/gherkin4.gemfile +0 -27
- data/testing/gemfiles/gherkin5.gemfile +0 -26
- data/testing/gemfiles/gherkin6.gemfile +0 -10
- data/testing/rspec/spec/integration/background_integration_spec.rb +0 -442
- data/testing/rspec/spec/integration/cell_integration_spec.rb +0 -335
- data/testing/rspec/spec/integration/comment_integration_spec.rb +0 -177
- data/testing/rspec/spec/integration/directory_integration_spec.rb +0 -218
- data/testing/rspec/spec/integration/doc_string_integration_spec.rb +0 -402
- data/testing/rspec/spec/integration/example_integration_spec.rb +0 -741
- data/testing/rspec/spec/integration/feature_file_integration_spec.rb +0 -272
- data/testing/rspec/spec/integration/feature_integration_spec.rb +0 -650
- data/testing/rspec/spec/integration/gherkin_2_adapter_spec.rb +0 -166
- data/testing/rspec/spec/integration/gherkin_3_adapter_spec.rb +0 -166
- data/testing/rspec/spec/integration/gherkin_4_adapter_spec.rb +0 -165
- data/testing/rspec/spec/integration/gherkin_6_adapter_spec.rb +0 -166
- data/testing/rspec/spec/integration/model_integration_spec.rb +0 -15
- data/testing/rspec/spec/integration/nested_integration_spec.rb +0 -91
- data/testing/rspec/spec/integration/outline_integration_spec.rb +0 -624
- data/testing/rspec/spec/integration/parsing_integration_spec.rb +0 -117
- data/testing/rspec/spec/integration/row_integration_spec.rb +0 -291
- data/testing/rspec/spec/integration/scenario_integration_spec.rb +0 -479
- data/testing/rspec/spec/integration/shared/models_integration_specs.rb +0 -18
- data/testing/rspec/spec/integration/step_integration_spec.rb +0 -475
- data/testing/rspec/spec/integration/table_integration_spec.rb +0 -337
- data/testing/rspec/spec/integration/tag_integration_spec.rb +0 -259
- data/testing/rspec/spec/spec_helper.rb +0 -122
- data/testing/rspec/spec/unit/background_unit_spec.rb +0 -83
- data/testing/rspec/spec/unit/cell_unit_spec.rb +0 -68
- data/testing/rspec/spec/unit/comment_unit_spec.rb +0 -68
- data/testing/rspec/spec/unit/described_unit_spec.rb +0 -23
- data/testing/rspec/spec/unit/directory_unit_spec.rb +0 -127
- data/testing/rspec/spec/unit/doc_string_unit_spec.rb +0 -100
- data/testing/rspec/spec/unit/example_unit_spec.rb +0 -133
- data/testing/rspec/spec/unit/feature_file_unit_spec.rb +0 -125
- data/testing/rspec/spec/unit/feature_unit_spec.rb +0 -157
- data/testing/rspec/spec/unit/model_unit_spec.rb +0 -15
- data/testing/rspec/spec/unit/named_unit_spec.rb +0 -23
- data/testing/rspec/spec/unit/nested_unit_spec.rb +0 -43
- data/testing/rspec/spec/unit/outline_unit_spec.rb +0 -117
- data/testing/rspec/spec/unit/parsed_unit_spec.rb +0 -27
- data/testing/rspec/spec/unit/parsing_unit_spec.rb +0 -54
- data/testing/rspec/spec/unit/row_unit_spec.rb +0 -68
- data/testing/rspec/spec/unit/scenario_unit_spec.rb +0 -86
- data/testing/rspec/spec/unit/shared/bare_bones_models_unit_specs.rb +0 -14
- data/testing/rspec/spec/unit/shared/containing_models_unit_specs.rb +0 -25
- data/testing/rspec/spec/unit/shared/described_models_unit_specs.rb +0 -38
- data/testing/rspec/spec/unit/shared/keyworded_models_unit_specs.rb +0 -58
- data/testing/rspec/spec/unit/shared/models_unit_specs.rb +0 -15
- data/testing/rspec/spec/unit/shared/named_models_unit_specs.rb +0 -39
- data/testing/rspec/spec/unit/shared/nested_models_unit_specs.rb +0 -51
- data/testing/rspec/spec/unit/shared/parsed_models_unit_specs.rb +0 -39
- data/testing/rspec/spec/unit/shared/prepopulated_models_unit_specs.rb +0 -18
- data/testing/rspec/spec/unit/shared/sourced_models_unit_specs.rb +0 -39
- data/testing/rspec/spec/unit/shared/stepped_models_unit_specs.rb +0 -46
- data/testing/rspec/spec/unit/shared/stringifiable_models_unit_specs.rb +0 -18
- data/testing/rspec/spec/unit/shared/tagged_models_unit_specs.rb +0 -72
- data/testing/rspec/spec/unit/sourceable_unit_spec.rb +0 -27
- data/testing/rspec/spec/unit/step_unit_spec.rb +0 -109
- data/testing/rspec/spec/unit/stepped_unit_spec.rb +0 -23
- data/testing/rspec/spec/unit/table_unit_spec.rb +0 -77
- data/testing/rspec/spec/unit/tag_unit_spec.rb +0 -68
- data/testing/rspec/spec/unit/taggable_unit_spec.rb +0 -69
- data/testing/test_languages.json +0 -45
- data/todo.txt +0 -24
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../../spec_helper"
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a containing model' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:model) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'has children' do
|
|
11
|
-
expect(model).to respond_to(:children)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'returns a collection of children' do
|
|
15
|
-
expect(model.children).to be_an(Array)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it 'does not return objects for children that it does not have' do
|
|
19
|
-
# Ensuring an empty, childless model
|
|
20
|
-
model = clazz.new
|
|
21
|
-
|
|
22
|
-
expect(model.children).to_not include(nil)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../../spec_helper"
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a described model' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:model) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'has a description' do
|
|
11
|
-
expect(model).to respond_to(:description)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'can change its description' do
|
|
15
|
-
expect(model).to respond_to(:description=)
|
|
16
|
-
|
|
17
|
-
model.description = :some_description
|
|
18
|
-
expect(model.description).to eq(:some_description)
|
|
19
|
-
model.description = :some_other_description
|
|
20
|
-
expect(model.description).to eq(:some_other_description)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
describe 'abstract instantiation' do
|
|
25
|
-
|
|
26
|
-
context 'a new described object' do
|
|
27
|
-
|
|
28
|
-
let(:model) { clazz.new }
|
|
29
|
-
|
|
30
|
-
it 'starts with no description' do
|
|
31
|
-
expect(model.description).to be_nil
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
end
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../../spec_helper"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
shared_examples_for 'a keyworded model' do
|
|
5
|
-
|
|
6
|
-
# clazz must be defined by the calling file
|
|
7
|
-
|
|
8
|
-
let(:model) { clazz.new }
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
it 'has a keyword' do
|
|
12
|
-
expect(model).to respond_to(:keyword)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it 'can change its keyword' do
|
|
16
|
-
expect(model).to respond_to(:keyword=)
|
|
17
|
-
|
|
18
|
-
model.keyword = :some_keyword
|
|
19
|
-
expect(model.keyword).to eq(:some_keyword)
|
|
20
|
-
model.keyword = :some_other_keyword
|
|
21
|
-
expect(model.keyword).to eq(:some_other_keyword)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
describe 'abstract instantiation' do
|
|
26
|
-
|
|
27
|
-
context 'a new object' do
|
|
28
|
-
|
|
29
|
-
let(:model) { clazz.new }
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
it 'starts with no keyword' do
|
|
33
|
-
expect(model.keyword).to be_nil
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
describe 'model output' do
|
|
42
|
-
|
|
43
|
-
context 'from abstract instantiation' do
|
|
44
|
-
|
|
45
|
-
let(:model) { clazz.new }
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
it 'can output a model that has only a keyword' do
|
|
49
|
-
model.keyword = 'foo'
|
|
50
|
-
|
|
51
|
-
expect { model.to_s }.to_not raise_error
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../../spec_helper"
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a model' do
|
|
4
|
-
|
|
5
|
-
describe 'common behavior' do
|
|
6
|
-
|
|
7
|
-
it_should_behave_like 'a bare bones model'
|
|
8
|
-
it_should_behave_like 'a prepopulated model'
|
|
9
|
-
it_should_behave_like 'a nested model'
|
|
10
|
-
it_should_behave_like 'a containing model'
|
|
11
|
-
it_should_behave_like 'a stringifiable model'
|
|
12
|
-
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../../spec_helper"
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a named model' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:model) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'has a name' do
|
|
11
|
-
expect(model).to respond_to(:name)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'can change its name' do
|
|
15
|
-
expect(model).to respond_to(:name=)
|
|
16
|
-
|
|
17
|
-
model.name = :some_name
|
|
18
|
-
expect(model.name).to eq(:some_name)
|
|
19
|
-
model.name = :some_other_name
|
|
20
|
-
expect(model.name).to eq(:some_other_name)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
describe 'abstract instantiation' do
|
|
25
|
-
|
|
26
|
-
context 'a new named object' do
|
|
27
|
-
|
|
28
|
-
let(:model) { clazz.new }
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
it 'starts with no name' do
|
|
32
|
-
expect(model.name).to be_nil
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
end
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../../spec_helper"
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a nested model' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:nested_model) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'has a parent model' do
|
|
11
|
-
expect(nested_model).to respond_to(:parent_model)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'can change its parent model' do
|
|
15
|
-
expect(nested_model).to respond_to(:parent_model=)
|
|
16
|
-
|
|
17
|
-
nested_model.parent_model = :some_parent_model
|
|
18
|
-
expect(nested_model.parent_model).to eq(:some_parent_model)
|
|
19
|
-
nested_model.parent_model = :some_other_parent_model
|
|
20
|
-
expect(nested_model.parent_model).to eq(:some_other_parent_model)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
describe 'abstract instantiation' do
|
|
25
|
-
|
|
26
|
-
context 'a new nested object' do
|
|
27
|
-
|
|
28
|
-
let(:nested_model) { clazz.new }
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
it 'starts with no parent model' do
|
|
32
|
-
expect(nested_model.parent_model).to be_nil
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it 'has access to its ancestors' do
|
|
40
|
-
expect(nested_model).to respond_to(:get_ancestor)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it 'gets an ancestor based on type' do
|
|
44
|
-
expect(clazz.instance_method(:get_ancestor).arity).to eq(1)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it 'raises and exception if an unknown ancestor type is requested' do
|
|
48
|
-
expect { nested_model.get_ancestor(:bad_ancestor_type) }.to raise_exception(ArgumentError)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../../spec_helper"
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a parsed model' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:model) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'can access its original parsing data' do
|
|
11
|
-
expect(model).to respond_to(:parsing_data)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'can change its parsing data' do
|
|
15
|
-
expect(model).to respond_to(:parsing_data=)
|
|
16
|
-
|
|
17
|
-
model.parsing_data = :some_parsing_data
|
|
18
|
-
expect(model.parsing_data).to eq(:some_parsing_data)
|
|
19
|
-
model.parsing_data = :some_other_parsing_data
|
|
20
|
-
expect(model.parsing_data).to eq(:some_other_parsing_data)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
describe 'abstract instantiation' do
|
|
25
|
-
|
|
26
|
-
context 'a new parsed object' do
|
|
27
|
-
|
|
28
|
-
let(:model) { clazz.new }
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
it 'starts with no parsing data' do
|
|
32
|
-
expect(model.parsing_data).to be_nil
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../../spec_helper"
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a prepopulated model' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:model) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'can take text from which to populate itself' do
|
|
11
|
-
expect(clazz.instance_method(:initialize).arity).to_not eq(0)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'will complain if given non-text input' do
|
|
15
|
-
expect { clazz.new(:not_a_string) }.to raise_error(ArgumentError, 'Can only create models from Strings but was given a Symbol.')
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../../spec_helper"
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a sourced model' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:model) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'has a source line' do
|
|
11
|
-
expect(model).to respond_to(:source_line)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'can change its source line' do
|
|
15
|
-
expect(model).to respond_to(:source_line=)
|
|
16
|
-
|
|
17
|
-
model.source_line = :some_source_line
|
|
18
|
-
expect(model.source_line).to eq(:some_source_line)
|
|
19
|
-
model.source_line = :some_other_source_line
|
|
20
|
-
expect(model.source_line).to eq(:some_other_source_line)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
describe 'abstract instantiation' do
|
|
25
|
-
|
|
26
|
-
context 'a new sourced object' do
|
|
27
|
-
|
|
28
|
-
let(:model) { clazz.new }
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
it 'starts with no source line' do
|
|
32
|
-
expect(model.source_line).to be_nil
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
end
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../../spec_helper"
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a stepped model' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:model) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'has steps' do
|
|
11
|
-
expect(model).to respond_to(:steps)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'can change its steps' do
|
|
15
|
-
expect(model).to respond_to(:steps=)
|
|
16
|
-
|
|
17
|
-
model.steps = :some_steps
|
|
18
|
-
expect(model.steps).to eq(:some_steps)
|
|
19
|
-
model.steps = :some_other_steps
|
|
20
|
-
expect(model.steps).to eq(:some_other_steps)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
describe 'abstract instantiation' do
|
|
25
|
-
|
|
26
|
-
context 'a new stepped object' do
|
|
27
|
-
|
|
28
|
-
let(:model) { clazz.new }
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
it 'starts with no steps' do
|
|
32
|
-
expect(model.steps).to eq([])
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it 'contains steps' do
|
|
40
|
-
steps = [:step_1, :step_2, :step_3]
|
|
41
|
-
model.steps = steps
|
|
42
|
-
|
|
43
|
-
steps.each { |step| expect(model.children).to include(step) }
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../../spec_helper"
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a stringifiable model' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:model) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'can provide a custom string representation of itself' do
|
|
11
|
-
expect(model.method(:to_s).owner).to equal(clazz), "#{clazz} does not override #to_s"
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'represents itself as a string' do
|
|
15
|
-
expect(model.to_s).to be_a(String)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
end
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
require "#{File.dirname(__FILE__)}/../../spec_helper"
|
|
2
|
-
|
|
3
|
-
shared_examples_for 'a tagged model' do
|
|
4
|
-
|
|
5
|
-
# clazz must be defined by the calling file
|
|
6
|
-
|
|
7
|
-
let(:model) { clazz.new }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it 'has tags' do
|
|
11
|
-
expect(model).to respond_to(:tags)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'can change its tags' do
|
|
15
|
-
expect(model).to respond_to(:tags=)
|
|
16
|
-
|
|
17
|
-
model.tags = :some_tags
|
|
18
|
-
expect(model.tags).to eq(:some_tags)
|
|
19
|
-
model.tags = :some_other_tags
|
|
20
|
-
expect(model.tags).to eq(:some_other_tags)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
describe 'abstract instantiation' do
|
|
25
|
-
|
|
26
|
-
context 'a new tagged object' do
|
|
27
|
-
|
|
28
|
-
let(:model) { clazz.new }
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
it 'starts with no tags' do
|
|
32
|
-
expect(model.tags).to eq([])
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it 'starts with no inherited tags' do
|
|
36
|
-
expect(model.applied_tags).to eq([])
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it 'starts with no tags at all' do
|
|
40
|
-
expect(model.all_tags).to eq([])
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it 'has applied tags' do
|
|
48
|
-
expect(model).to respond_to(:applied_tags)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
it 'inherits its applied tags from its ancestors' do
|
|
52
|
-
all_parent_tags = [:parent_tag_1, :parent_tag_2, :grandparent_tag_1]
|
|
53
|
-
parent = double(:all_tags => all_parent_tags)
|
|
54
|
-
|
|
55
|
-
model.parent_model = parent
|
|
56
|
-
|
|
57
|
-
expect(model.applied_tags).to match_array(all_parent_tags)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
it 'knows all of its applicable tags' do
|
|
61
|
-
all_parent_tags = [:parent_tag_1, :parent_tag_2, :grandparent_tag_1]
|
|
62
|
-
own_tags = [:tag_1, :tag_2]
|
|
63
|
-
|
|
64
|
-
parent = double(:all_tags => all_parent_tags)
|
|
65
|
-
|
|
66
|
-
model.parent_model = parent
|
|
67
|
-
model.tags = own_tags
|
|
68
|
-
|
|
69
|
-
expect(model.all_tags).to match_array(all_parent_tags + own_tags)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
end
|