File tree Expand file tree Collapse file tree 4 files changed +41
-4
lines changed
Expand file tree Collapse file tree 4 files changed +41
-4
lines changed Original file line number Diff line number Diff line change @@ -72,6 +72,8 @@ def add_ensure_column_is_specified(header, column)
7272 @messenger . error ( "invalid_header" , header . value )
7373 end
7474
75+ @messenger . warn ( "ignored_header" , header . value ) if @specification . report_ignored_columns?
76+
7577 false
7678 end
7779
Original file line number Diff line number Diff line change @@ -13,9 +13,10 @@ class MutablePatternError < Errors::SpecError
1313 class DuplicatedPatternError < Errors ::SpecError
1414 end
1515
16- def initialize ( ignore_unspecified_columns : false )
16+ def initialize ( ignore_unspecified_columns : false , report_ignored_columns : false )
1717 @column_by_pattern = { }
1818 @ignore_unspecified_columns = ignore_unspecified_columns
19+ @report_ignored_columns = report_ignored_columns
1920 end
2021
2122 def set ( pattern , column )
@@ -56,6 +57,10 @@ def ignore_unspecified_columns?
5657 @ignore_unspecified_columns
5758 end
5859
60+ def report_ignored_columns?
61+ @report_ignored_columns
62+ end
63+
5964 def freeze
6065 @column_by_pattern . freeze
6166 super
Original file line number Diff line number Diff line change @@ -26,13 +26,17 @@ module Sheetah
2626 # specification, and composite attributes will produce as many columns as
2727 # required by the number of scalar values they hold.
2828 class Template
29- def initialize ( attributes :, ignore_unspecified_columns : false )
29+ def initialize ( attributes :, ignore_unspecified_columns : false , report_ignored_columns : false )
3030 @attributes = build_attributes ( attributes )
3131 @ignore_unspecified_columns = ignore_unspecified_columns
32+ @report_ignored_columns = ignore_unspecified_columns && report_ignored_columns
3233 end
3334
3435 def apply ( config )
35- specification = Specification . new ( ignore_unspecified_columns : @ignore_unspecified_columns )
36+ specification = Specification . new (
37+ ignore_unspecified_columns : @ignore_unspecified_columns ,
38+ report_ignored_columns : @report_ignored_columns
39+ )
3640
3741 @attributes . each do |attribute |
3842 attribute . each_column ( config ) do |column |
Original file line number Diff line number Diff line change 1111 instance_double (
1212 Sheetah ::Specification ,
1313 required_columns : [ ] ,
14- ignore_unspecified_columns? : false
14+ ignore_unspecified_columns? : false ,
15+ report_ignored_columns? : false
1516 )
1617 end
1718
@@ -106,6 +107,31 @@ def stub_specification(column_by_header)
106107 ]
107108 )
108109 end
110+
111+ context "when the ignored columns reporting is enabled" do
112+ let ( :specification ) do
113+ instance_double (
114+ Sheetah ::Specification ,
115+ required_columns : [ ] ,
116+ ignore_unspecified_columns? : true ,
117+ report_ignored_columns? : true
118+ )
119+ end
120+
121+ it "messages a warning" do
122+ expect ( messenger . messages ) . to eq (
123+ [
124+ Sheetah ::Messaging ::Message . new (
125+ severity : "WARN" ,
126+ code : "ignored_header" ,
127+ code_data : sheet_headers [ 4 ] . value ,
128+ scope : "COL" ,
129+ scope_data : { col : sheet_headers [ 4 ] . col }
130+ ) ,
131+ ]
132+ )
133+ end
134+ end
109135 end
110136
111137 context "when there is a duplicate" do
You can’t perform that action at this time.
0 commit comments