@@ -15,6 +15,41 @@ use support::{
1515 create_test_state, create_test_state_with_config, ensure_test_home, reset_test_fs, test_mutex,
1616} ;
1717
18+ #[ test]
19+ fn mcode_automatic_sync_preserves_unmanaged_same_name_servers ( ) {
20+ let _guard = test_mutex ( ) . lock ( ) . unwrap ( ) ;
21+ reset_test_fs ( ) ;
22+ let state = create_test_state ( ) . unwrap ( ) ;
23+ let path = ensure_test_home ( ) . join ( ".minimax/mcp.json" ) ;
24+ fs:: create_dir_all ( path. parent ( ) . unwrap ( ) ) . unwrap ( ) ;
25+ let native = json ! ( { "mcpServers" : { "context7" : { "command" : "native-server" , "enabled" : true } } } ) ;
26+ fs:: write ( & path, native. to_string ( ) ) . unwrap ( ) ;
27+ let server = McpServer {
28+ id : "context7" . into ( ) ,
29+ name : "Context7" . into ( ) ,
30+ server : json ! ( { "command" : "managed-server" } ) ,
31+ apps : McpApps {
32+ claude : true ,
33+ ..Default :: default ( )
34+ } ,
35+ description : None ,
36+ homepage : None ,
37+ docs : None ,
38+ tags : vec ! [ ] ,
39+ } ;
40+ state. db . save_mcp_server ( & server) . unwrap ( ) ;
41+ McpService :: sync_enabled_for_app ( & state, & AppType :: Mcode ) . unwrap ( ) ;
42+ assert_eq ! (
43+ serde_json:: from_str:: <serde_json:: Value >( & fs:: read_to_string( & path) . unwrap( ) ) . unwrap( ) ,
44+ native
45+ ) ;
46+ McpService :: toggle_app ( & state, "context7" , AppType :: Mcode , true ) . unwrap ( ) ;
47+ McpService :: toggle_app ( & state, "context7" , AppType :: Mcode , false ) . unwrap ( ) ;
48+ let disabled: serde_json:: Value =
49+ serde_json:: from_str ( & fs:: read_to_string ( & path) . unwrap ( ) ) . unwrap ( ) ;
50+ assert ! ( disabled[ "mcpServers" ] . get( "context7" ) . is_none( ) ) ;
51+ }
52+
1853#[ test]
1954fn import_default_config_claude_persists_provider ( ) {
2055 let _guard = test_mutex ( ) . lock ( ) . expect ( "acquire test mutex" ) ;
0 commit comments