Skip to content

Commit 4c0cd0a

Browse files
Add unit tests for dev extension category filtering
Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 4f2d170 commit 4c0cd0a

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

crates/extensions_ui/src/extensions_ui.rs

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1903,3 +1903,79 @@ fn dev_extension_matches_provides(
19031903
ExtensionProvides::DebugAdapters => !manifest.debug_adapters.is_empty(),
19041904
}
19051905
}
1906+
1907+
#[cfg(test)]
1908+
mod tests {
1909+
use super::*;
1910+
use extension::SchemaVersion;
1911+
use std::path::PathBuf;
1912+
1913+
fn empty_manifest() -> ExtensionManifest {
1914+
ExtensionManifest {
1915+
id: "test".into(),
1916+
name: "Test".to_string(),
1917+
version: "1.0.0".into(),
1918+
schema_version: SchemaVersion::ZERO,
1919+
description: None,
1920+
repository: None,
1921+
authors: vec![],
1922+
lib: Default::default(),
1923+
themes: vec![],
1924+
icon_themes: vec![],
1925+
languages: vec![],
1926+
grammars: BTreeMap::default(),
1927+
language_servers: BTreeMap::default(),
1928+
context_servers: BTreeMap::default(),
1929+
agent_servers: BTreeMap::default(),
1930+
slash_commands: BTreeMap::default(),
1931+
snippets: None,
1932+
capabilities: vec![],
1933+
debug_adapters: Default::default(),
1934+
debug_locators: Default::default(),
1935+
language_model_providers: BTreeMap::default(),
1936+
}
1937+
}
1938+
1939+
fn dev_extension_visible(
1940+
manifest: &ExtensionManifest,
1941+
provides_filter: Option<ExtensionProvides>,
1942+
) -> bool {
1943+
match provides_filter {
1944+
Some(provides) => dev_extension_matches_provides(manifest, provides),
1945+
None => true,
1946+
}
1947+
}
1948+
1949+
#[test]
1950+
fn test_dev_extension_shown_without_category_filter() {
1951+
let theme_extension = ExtensionManifest {
1952+
themes: vec![PathBuf::from("themes/dark.json")],
1953+
..empty_manifest()
1954+
};
1955+
assert!(dev_extension_visible(&theme_extension, None));
1956+
}
1957+
1958+
#[test]
1959+
fn test_dev_extension_hidden_when_category_does_not_match() {
1960+
let theme_extension = ExtensionManifest {
1961+
themes: vec![PathBuf::from("themes/dark.json")],
1962+
..empty_manifest()
1963+
};
1964+
assert!(!dev_extension_visible(
1965+
&theme_extension,
1966+
Some(ExtensionProvides::Languages),
1967+
));
1968+
}
1969+
1970+
#[test]
1971+
fn test_dev_extension_shown_when_category_matches() {
1972+
let theme_extension = ExtensionManifest {
1973+
themes: vec![PathBuf::from("themes/dark.json")],
1974+
..empty_manifest()
1975+
};
1976+
assert!(dev_extension_visible(
1977+
&theme_extension,
1978+
Some(ExtensionProvides::Themes),
1979+
));
1980+
}
1981+
}

0 commit comments

Comments
 (0)