evt-schema-fixtures 0.0.0.0 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc9111e97989d9438e3bf7de94bf6873a6d4b1b838f1c42812c5b0a1acd8912a
4
- data.tar.gz: 33fa35056749cd4b9849ca76482536dbe5c45e2c9b8949c449945b3ec5b03a58
3
+ metadata.gz: 783a3842c3daedef33a37e3aa3e2fc9ba3a124008d8b965687b7e985d1e359c5
4
+ data.tar.gz: e228cc08b885e8b8456aabc38ce1831aaff7dc9ba24a50924e33a3bd3e1ad16a
5
5
  SHA512:
6
- metadata.gz: bb515269536abacc5960c134a4c58d7bebdd428a901685bc8351b13804bda7f1dd1ca9bfc07039f59c6f83faf718a2a9e75be684a3eb6db48c1feae323436d70
7
- data.tar.gz: b82cc17779017eaafbccaa264c681320195230e43f849111d2c9370e11d35fa50c54d237e5d91ca51b38ae690b95f265265c1b9b21060d73f031d27d2e6280c8
6
+ metadata.gz: 12edf0070476d0cbdf33c4506111afe09a2a19b0d5e17eec71c3f99801212a6dee8fe1d78103a35182ac4d533b0f8c931b411950a6b621cdb7891f55da4a92b6
7
+ data.tar.gz: d097d45abb8646a815f93a9d4ed308309a810cff871816b20c6462b93ea480d52d6caed51711547bc744afb900cb9703c88889e88a2b50c491a954c7ec75b849
@@ -1 +1,7 @@
1
+ require 'test_bench/fixture'
2
+
1
3
  require 'schema'
4
+
5
+ require 'schema/fixtures/attribute'
6
+ require 'schema/fixtures/equality'
7
+ require 'schema/fixtures/assignment'
@@ -0,0 +1,61 @@
1
+ module Schema
2
+ module Fixtures
3
+ class Assignment
4
+ include TestBench::Fixture
5
+ include Initializer
6
+
7
+ def print_title_context?
8
+ if @print_title_context.nil?
9
+ @print_title_context = true
10
+ end
11
+ @print_title_context
12
+ end
13
+
14
+ def title_context_name
15
+ @title_context_name ||= "Schema Assignment: #{comparison.compare_class.type}"
16
+ end
17
+
18
+ def attributes_context_name
19
+ @attributes_context_name ||= 'Attributes'
20
+ end
21
+
22
+ initializer :comparison, na(:print_title_context), na(:title_context_name), na(:attributes_context_name)
23
+
24
+ def self.build(compare, attribute_names=nil, print_title_context: nil, title_context_name: nil, attributes_context_name: nil)
25
+ control = compare.class.new
26
+ comparison = Schema::Compare.(control, compare, attribute_names)
27
+ new(comparison, print_title_context, title_context_name, attributes_context_name)
28
+ end
29
+
30
+ def call()
31
+ schema_class = comparison.control_class
32
+
33
+ test_attributes = proc do
34
+ context attributes_context_name do
35
+ comparison.entries.each do |entry|
36
+ default_attribute_value = entry.control_value
37
+ attribute_value = entry.compare_value
38
+
39
+ test "#{entry.compare_name}" do
40
+ detail "Default Value: #{default_attribute_value.inspect}"
41
+ detail "Assigned Value: #{attribute_value.inspect}"
42
+
43
+ refute(attribute_value == default_attribute_value)
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
+ if print_title_context?
50
+ context "#{title_context_name}" do
51
+ detail "Class: #{schema_class.name}"
52
+
53
+ test_attributes.()
54
+ end
55
+ else
56
+ test_attributes.()
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,16 @@
1
+ module Schema
2
+ module Fixtures
3
+ module Attribute
4
+ def self.printed_name(entry)
5
+ control_name = entry.control_name
6
+ compare_name = entry.compare_name
7
+
8
+ if control_name == compare_name
9
+ return control_name.to_s
10
+ else
11
+ return "#{control_name} => #{compare_name}"
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1 +1,7 @@
1
1
  require 'schema/controls'
2
+
3
+ module Schema
4
+ module Fixtures
5
+ Controls = Schema::Controls
6
+ end
7
+ end
@@ -0,0 +1,76 @@
1
+ module Schema
2
+ module Fixtures
3
+ class Equality
4
+ include TestBench::Fixture
5
+ include Initializer
6
+
7
+ def ignore_class?
8
+ @ignore_class ||= false
9
+ end
10
+
11
+ def print_title_context?
12
+ if @print_title_context.nil?
13
+ @print_title_context = true
14
+ end
15
+ @print_title_context
16
+ end
17
+
18
+ def title_context_name
19
+ @title_context_name ||= "Schema Equality: #{comparison.control_class.type}, #{comparison.compare_class.type}"
20
+ end
21
+
22
+ def attributes_context_name
23
+ @attributes_context_name ||= 'Attributes'
24
+ end
25
+
26
+ initializer :comparison, na(:ignore_class), na(:print_title_context), na(:title_context_name), na(:attributes_context_name)
27
+
28
+ def self.build(control, compare, attribute_names=nil, ignore_class: nil, print_title_context: nil, title_context_name: nil, attributes_context_name: nil)
29
+ comparison = Schema::Compare.(control, compare, attribute_names)
30
+ new(comparison, ignore_class, print_title_context, title_context_name, attributes_context_name)
31
+ end
32
+
33
+ def call()
34
+ control_class = comparison.control_class
35
+ compare_class = comparison.compare_class
36
+
37
+ test_attributes = proc do
38
+ context attributes_context_name do
39
+ comparison.entries.each do |entry|
40
+ printed_attribute_name = Attribute.printed_name(entry)
41
+
42
+ control_attribute_value = entry.control_value
43
+ compare_attribute_value = entry.compare_value
44
+
45
+ test printed_attribute_name do
46
+ detail "#{control_class.name.split('::').last} Value: #{control_attribute_value.inspect}"
47
+ detail "#{compare_class.name.split('::').last} Value: #{compare_attribute_value.inspect}"
48
+
49
+ assert(compare_attribute_value == control_attribute_value)
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ if print_title_context?
56
+ context "#{title_context_name}" do
57
+ detail "Control Class: #{control_class.name}"
58
+ detail "Compare Class: #{compare_class.name}"
59
+
60
+ if not ignore_class?
61
+ test "Classes are the same" do
62
+ assert(control_class == compare_class)
63
+ end
64
+ else
65
+ detail 'Class comparison is ignored'
66
+ end
67
+
68
+ test_attributes.()
69
+ end
70
+ else
71
+ test_attributes.()
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-schema-fixtures
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.0
4
+ version: 0.0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-09 00:00:00.000000000 Z
11
+ date: 2020-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-schema
@@ -59,7 +59,10 @@ extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
61
  - lib/schema/fixtures.rb
62
+ - lib/schema/fixtures/assignment.rb
63
+ - lib/schema/fixtures/attribute.rb
62
64
  - lib/schema/fixtures/controls.rb
65
+ - lib/schema/fixtures/equality.rb
63
66
  homepage: https://github.com/eventide-project/schema-fixtures
64
67
  licenses:
65
68
  - MIT