@@ -614,7 +614,7 @@ mod tests {
614614 }
615615
616616 #[ test]
617- fn test_single_select_option_serialization ( ) {
617+ fn single_select_cell_to_serde ( ) {
618618 let options = vec ! [ SelectOption :: new( "Option 1" ) , SelectOption :: new( "Option 2" ) ] ;
619619 let option_1_id = options[ 0 ] . id . clone ( ) ;
620620 let select_type_option = SelectTypeOption {
@@ -630,7 +630,7 @@ mod tests {
630630 }
631631
632632 #[ test]
633- fn test_multi_select_option_serialization ( ) {
633+ fn multi_select_cell_to_serde ( ) {
634634 let options = vec ! [ SelectOption :: new( "Option 1" ) , SelectOption :: new( "Option 2" ) ] ;
635635 let option_1_id = options[ 0 ] . id . clone ( ) ;
636636 let option_2_id = options[ 1 ] . id . clone ( ) ;
@@ -640,13 +640,13 @@ mod tests {
640640 } ;
641641
642642 let multi_selection_type_option = MultiSelectTypeOption ( select_type_option) ;
643- let single_select_cell_reader : Box < dyn TypeOptionCellReader > =
643+ let multi_select_cell_reader : Box < dyn TypeOptionCellReader > =
644644 Box :: new ( multi_selection_type_option) ;
645645 {
646646 // single select
647647 let mut cell: Cell = new_cell_builder ( FieldType :: MultiSelect ) ;
648648 cell. insert ( CELL_DATA . into ( ) , option_1_id. clone ( ) . into ( ) ) ;
649- let serde_val = single_select_cell_reader . json_cell ( & cell) ;
649+ let serde_val = multi_select_cell_reader . json_cell ( & cell) ;
650650 assert_eq ! (
651651 serde_val,
652652 Value :: Array ( vec![ Value :: String ( "Option 1" . to_string( ) ) ] )
@@ -656,7 +656,7 @@ mod tests {
656656 // double select
657657 let mut cell: Cell = new_cell_builder ( FieldType :: MultiSelect ) ;
658658 cell. insert ( CELL_DATA . into ( ) , ( option_1_id + "," + & option_2_id) . into ( ) ) ;
659- let serde_val = single_select_cell_reader . json_cell ( & cell) ;
659+ let serde_val = multi_select_cell_reader . json_cell ( & cell) ;
660660 assert_eq ! (
661661 serde_val,
662662 Value :: Array ( vec![
@@ -668,8 +668,62 @@ mod tests {
668668 {
669669 // no select
670670 let cell: Cell = new_cell_builder ( FieldType :: MultiSelect ) ;
671- let serde_val = single_select_cell_reader . json_cell ( & cell) ;
671+ let serde_val = multi_select_cell_reader . json_cell ( & cell) ;
672672 assert_eq ! ( serde_val, Value :: Array ( vec![ ] ) ) ;
673673 }
674674 }
675+
676+ #[ test]
677+ fn single_select_serde_to_cell ( ) {
678+ let options = vec ! [ SelectOption :: new( "Option 1" ) , SelectOption :: new( "Option 2" ) ] ;
679+ let option_1_id = options[ 0 ] . id . clone ( ) ;
680+ let select_type_option = SelectTypeOption {
681+ options,
682+ disable_color : false ,
683+ } ;
684+ let single_select = SingleSelectTypeOption ( select_type_option) ;
685+
686+ let cell_writer: Box < dyn TypeOptionCellWriter > = Box :: new ( single_select) ;
687+ {
688+ let cell: Cell = cell_writer. convert_json_to_cell ( Value :: String ( "Option 1" . to_string ( ) ) ) ;
689+ let data = cell. get_as :: < String > ( CELL_DATA ) . unwrap ( ) ;
690+ assert_eq ! ( data, option_1_id) ;
691+ }
692+ }
693+
694+ #[ test]
695+ fn multi_select_serde_to_cell ( ) {
696+ let options = vec ! [ SelectOption :: new( "Option 1" ) , SelectOption :: new( "Option 2" ) ] ;
697+ let option_1_id = options[ 0 ] . id . clone ( ) ;
698+ let option_2_id = options[ 1 ] . id . clone ( ) ;
699+ let select_type_option = SelectTypeOption {
700+ options,
701+ disable_color : false ,
702+ } ;
703+ let single_select = SingleSelectTypeOption ( select_type_option) ;
704+
705+ let cell_writer: Box < dyn TypeOptionCellWriter > = Box :: new ( single_select) ;
706+ {
707+ // No select
708+ let cell: Cell = cell_writer. convert_json_to_cell ( Value :: Array ( vec ! [ ] ) ) ;
709+ let data = cell. get_as :: < String > ( CELL_DATA ) . unwrap ( ) ;
710+ assert_eq ! ( data, "" ) ;
711+ }
712+ {
713+ // 1 select
714+ let cell: Cell =
715+ cell_writer. convert_json_to_cell ( Value :: Array ( vec ! [ Value :: String ( "Option 1" . to_string( ) ) ] ) ) ;
716+ let data = cell. get_as :: < String > ( CELL_DATA ) . unwrap ( ) ;
717+ assert_eq ! ( data, option_1_id) ;
718+ }
719+ {
720+ // 2 select
721+ let cell: Cell = cell_writer. convert_json_to_cell ( Value :: Array ( vec ! [
722+ Value :: String ( "Option 1" . to_string( ) ) ,
723+ Value :: String ( "Option 2" . to_string( ) ) ,
724+ ] ) ) ;
725+ let data = cell. get_as :: < String > ( CELL_DATA ) . unwrap ( ) ;
726+ assert_eq ! ( data, option_1_id + "," + & option_2_id) ;
727+ }
728+ }
675729}
0 commit comments