}
}
-fn column_header_order<'a>(
+fn column_header_labels<'a>(
config: &'a Config,
columns: &'a [String],
) -> impl Iterator<Item = Option<&'a String>> {
fn render_column_headers(config: &Config, columns: &[String]) -> HTML {
HTML(
String::from(r#"<tr class="key"><th></th>"#)
- + &column_header_order(config, columns).fold(String::new(), |mut acc, ocol| {
+ + &column_header_labels(config, columns).fold(String::new(), |mut acc, ocol| {
match ocol {
Some(col) => {
let col_header = HTML::escape(col);
);
}
+ #[test]
+ fn test_column_header_labels() {
+ let mut cfg = Config::default();
+
+ assert!(column_header_labels(&cfg, &["foo".to_owned()]).eq([Some(&"foo".to_owned())]));
+
+ cfg.static_columns.push(Some("bar".to_owned()));
+ assert!(column_header_labels(&cfg, &["foo".to_owned()])
+ .eq([Some(&"bar".to_owned()), Some(&"foo".to_owned())]));
+
+ cfg.static_columns.push(None);
+ assert!(column_header_labels(&cfg, &["foo".to_owned()]).eq([
+ Some(&"bar".to_owned()),
+ None,
+ Some(&"foo".to_owned())
+ ]));
+
+ cfg.hidden_columns.insert("foo".to_owned());
+ assert!(column_header_labels(&cfg, &["foo".to_owned()]).eq([Some(&"bar".to_owned()), None]));
+
+ cfg.hidden_columns.insert("bar".to_owned());
+ assert!(column_header_labels(&cfg, &["foo".to_owned()]).eq([None]));
+ }
+
#[test]
fn test_render_cell() {
assert_eq!(