diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-22 02:09:59 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-22 02:09:59 +0900 |
| commit | 822d9a872807a92a5337ee8b7bab96dc9845cdbb (patch) | |
| tree | 4931365df5978caffade69cad2154718a9076f66 /crates/shirabe/tests/installer/suggested_packages_reporter_test.rs | |
| parent | f691b864b687f251c3b266e8cff2774d730567ba (diff) | |
| download | php-shirabe-822d9a872807a92a5337ee8b7bab96dc9845cdbb.tar.gz php-shirabe-822d9a872807a92a5337ee8b7bab96dc9845cdbb.tar.zst php-shirabe-822d9a872807a92a5337ee8b7bab96dc9845cdbb.zip | |
test: port more test cases
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/tests/installer/suggested_packages_reporter_test.rs')
| -rw-r--r-- | crates/shirabe/tests/installer/suggested_packages_reporter_test.rs | 76 |
1 files changed, 62 insertions, 14 deletions
diff --git a/crates/shirabe/tests/installer/suggested_packages_reporter_test.rs b/crates/shirabe/tests/installer/suggested_packages_reporter_test.rs index fbdb16f..bd7672e 100644 --- a/crates/shirabe/tests/installer/suggested_packages_reporter_test.rs +++ b/crates/shirabe/tests/installer/suggested_packages_reporter_test.rs @@ -1,75 +1,123 @@ //! ref: composer/tests/Composer/Test/Installer/SuggestedPackagesReporterTest.php +use std::cell::RefCell; +use std::rc::Rc; + +use indexmap::IndexMap; +use shirabe::installer::SuggestedPackagesReporter; +use shirabe::io::IOInterface; +use shirabe::io::null_io::NullIO; + /// Builds an IO mock and a SuggestedPackagesReporter over it. The IO mock /// (`getIOMock`) is not available here, so this remains a stub. fn set_up() { todo!() } +/// ref: SuggestedPackagesReporterTest::getSuggestedPackageArray +fn get_suggested_package_array() -> IndexMap<String, String> { + let mut entry = IndexMap::new(); + entry.insert("source".to_string(), "a".to_string()); + entry.insert("target".to_string(), "b".to_string()); + entry.insert("reason".to_string(), "c".to_string()); + entry +} + +fn reporter() -> SuggestedPackagesReporter { + let io: Rc<RefCell<dyn IOInterface>> = Rc::new(RefCell::new(NullIO::new())); + SuggestedPackagesReporter::new(io) +} + // These construct a SuggestedPackagesReporter with a mocked IO and assert its accumulated // suggestions and formatted output; mocking is not available here. +#[ignore = "asserts IO mock output via getIOMock()->expects(); no IO mocking infrastructure exists and BufferIO::new/get_output are todo!()"] #[test] -#[ignore = "mocks IO to drive SuggestedPackagesReporter output; mocking is not available"] fn test_constructor() { todo!() } +#[ignore] #[test] -#[ignore = "mocks IO to drive SuggestedPackagesReporter output; mocking is not available"] fn test_get_packages_empty_by_default() { - todo!() + let reporter = reporter(); + assert!(reporter.get_packages().is_empty()); } +#[ignore] #[test] -#[ignore = "mocks IO to drive SuggestedPackagesReporter output; mocking is not available"] fn test_get_packages() { - todo!() + let suggested_package = get_suggested_package_array(); + let mut reporter = reporter(); + reporter.add_package( + suggested_package["source"].clone(), + suggested_package["target"].clone(), + suggested_package["reason"].clone(), + ); + assert_eq!(&vec![suggested_package], reporter.get_packages()); } +#[ignore] #[test] -#[ignore = "mocks IO to drive SuggestedPackagesReporter output; mocking is not available"] fn test_add_package_appends() { - todo!() + let suggested_package_a = get_suggested_package_array(); + let mut suggested_package_b = get_suggested_package_array(); + suggested_package_b.insert("source".to_string(), "different source".to_string()); + suggested_package_b.insert("reason".to_string(), "different reason".to_string()); + let mut reporter = reporter(); + reporter.add_package( + suggested_package_a["source"].clone(), + suggested_package_a["target"].clone(), + suggested_package_a["reason"].clone(), + ); + reporter.add_package( + suggested_package_b["source"].clone(), + suggested_package_b["target"].clone(), + suggested_package_b["reason"].clone(), + ); + assert_eq!( + &vec![suggested_package_a, suggested_package_b], + reporter.get_packages() + ); } +#[ignore = "addSuggestionsFromPackage test mocks Package::getSuggests; set_suggests only exists on RootPackageHandle, so the non-root Package fixture with suggests cannot be expressed"] #[test] -#[ignore = "mocks IO to drive SuggestedPackagesReporter output; mocking is not available"] fn test_add_suggestions_from_package() { todo!() } +#[ignore = "asserts IO mock output via getIOMock()->expects(); no IO mocking infrastructure exists and BufferIO::new/get_output are todo!()"] #[test] -#[ignore = "mocks IO to drive SuggestedPackagesReporter output; mocking is not available"] fn test_output() { todo!() } +#[ignore = "asserts IO mock output via getIOMock()->expects(); no IO mocking infrastructure exists and BufferIO::new/get_output are todo!()"] #[test] -#[ignore = "mocks IO to drive SuggestedPackagesReporter output; mocking is not available"] fn test_output_with_no_suggestion_reason() { todo!() } +#[ignore = "asserts IO mock output via getIOMock()->expects(); no IO mocking infrastructure exists and BufferIO::new/get_output are todo!()"] #[test] -#[ignore = "mocks IO to drive SuggestedPackagesReporter output; mocking is not available"] fn test_output_ignores_formatting() { todo!() } +#[ignore = "asserts IO mock output via getIOMock()->expects(); no IO mocking infrastructure exists and BufferIO::new/get_output are todo!()"] #[test] -#[ignore = "mocks IO to drive SuggestedPackagesReporter output; mocking is not available"] fn test_output_multiple_packages() { todo!() } +#[ignore = "asserts IO mock output via getIOMock()->expects() and uses getMockBuilder mocks of InstalledRepository/PackageInterface; no mocking infrastructure exists"] #[test] -#[ignore = "mocks IO to drive SuggestedPackagesReporter output; mocking is not available"] fn test_output_skip_installed_packages() { todo!() } +#[ignore = "uses getMockBuilder mock of InstalledRepository with ->expects($this->exactly(0)) call-count assertion; no mocking infrastructure exists"] #[test] -#[ignore = "mocks IO to drive SuggestedPackagesReporter output; mocking is not available"] fn test_output_not_getting_installed_packages_when_no_suggestions() { todo!() } |
