@@ -487,12 +487,58 @@ func TestRequest_Ver(t *testing.T) {
487
487
}
488
488
}
489
489
490
+ func TestRequest_StateSession (t * testing.T ) {
491
+ tests := map [string ]struct {
492
+ request * alice.Request
493
+ want interface {}
494
+ }{
495
+ "when state is empty 0" : {
496
+ request : getReq (0 ),
497
+ want : nil ,
498
+ },
499
+ "when state is empty 1" :{
500
+ request : getReq (1 ),
501
+ want : nil ,
502
+ },
503
+ "when state is empty 2" :{
504
+ request : getReq (2 ),
505
+ want : nil ,
506
+ },
507
+ }
508
+ for name , tt := range tests {
509
+ t .Run (name , func (t * testing.T ) {
510
+ req := tt .request
511
+ got := req .StateSession ("" );
512
+ if ! assert .Equal (t , tt .want , got ) {
513
+ t .Errorf ("Request.StateSession() = %v, want %v" , got , tt .want )
514
+ }
515
+
516
+ })
517
+ }
518
+ t .Run ("when state is struct" , func (t * testing.T ) {
519
+ req := getReq (3 )
520
+ want := make (map [string ]interface {})
521
+ want ["int_value" ] = 42
522
+
523
+ assert .Equal (t , 42.0 , req .StateSession ("int_value" ))
524
+ assert .Equal (t , "exampleString" , req .StateSession ("string_value" ))
525
+ assert .Equal (t , []interface {}{1.0 ,2.0 ,3.0 ,4.0 }, req .StateSession ("array_value" ))
526
+ assert .Equal (t , map [string ]interface {}{"one" :"one" }, req .StateSession ("struct_value" ))
527
+ stateJson , err := req .StateSessionAsJson ()
528
+ if assert .NoError (t , err ) {
529
+ assert .Equal (t , `{"array_value":[1,2,3,4],"int_value":42,"string_value":"exampleString","struct_value":{"one":"one"}}` , stateJson )
530
+ }
531
+ })
532
+ }
533
+
490
534
func getReq (n int ) * alice.Request {
491
535
source := []string {`{"meta":{"client_id":"ru.yandex.searchplugin/7.16 (none none; android 4.4.2)","interfaces":{"account_linking":{},"payments":{},"screen":{}},"locale":"ru-RU","timezone":"UTC"},"request":{"command":"съешь еще этих мягких французских булок","nlu":{"entities":[],"tokens":["съешь","еще","этих","мягких","французских","булок"]},"original_utterance":"съешь еще этих мягких французских булок","type":"SimpleUtterance"},"session":{"message_id":0,"new":true,"session_id":"e19e8eee-ae065e8-36e3f907-567a814b","skill_id":"e03f8d5b-35ef-4d57-9450-b721ca17a6c3","user_id":"03B1D487CAA1C7EBF80A195491B78ACA0AC9934CDFB12A29D063A8329BC42BF0"},"version":"1.0"}` ,
492
536
493
537
`{"meta":{"client_id":"ru.yandex.searchplugin/7.16 (none none; android 4.4.2)","interfaces":{"account_linking":{},"payments":{}},"locale":"ru-RU","timezone":"UTC"},"request":{"nlu":{"entities":[],"tokens":[]},"payload":{"msg":"ok"},"type":"ButtonPressed"},"session":{"message_id":1,"new":false,"session_id":"eeb9fa7f-940e2502-1fbf9dfb-9448a1a9","skill_id":"e03f8d5b-35ef-4d57-9450-b721ca17a6c3","user_id":"03B1D487CAA1C7EBF80A195491B78ACA0AC9934CDFB12A29D063A8329BC42BF0"},"version":"1.0"}` ,
494
538
495
539
`{"meta":{"client_id":"ru.yandex.searchplugin/7.16 (none none; android 4.4.2)","interfaces":{"account_linking":{},"payments":{}},"locale":"ru-RU","timezone":"UTC"},"request":{"nlu":{"entities":[],"tokens":[]},"payload":"msg","type":"ButtonPressed"},"session":{"message_id":1,"new":false,"session_id":"eeb9fa7f-940e2502-1fbf9dfb-9448a1a9","skill_id":"e03f8d5b-35ef-4d57-9450-b721ca17a6c3","user_id":"03B1D487CAA1C7EBF80A195491B78ACA0AC9934CDFB12A29D063A8329BC42BF0"},"version":"1.0"}` ,
540
+
541
+ `{"meta":{"client_id":"ru.yandex.searchplugin/7.16 (none none; android 4.4.2)","interfaces":{"account_linking":{},"payments":{}},"locale":"ru-RU","timezone":"UTC"},"request":{"nlu":{"entities":[],"tokens":[]},"payload":"msg","type":"ButtonPressed"},"session":{"message_id":1,"new":false,"session_id":"eeb9fa7f-940e2502-1fbf9dfb-9448a1a9","skill_id":"e03f8d5b-35ef-4d57-9450-b721ca17a6c3","user_id":"03B1D487CAA1C7EBF80A195491B78ACA0AC9934CDFB12A29D063A8329BC42BF0"},"state":{"session":{"array_value":[1,2,3,4],"int_value":42,"string_value":"exampleString","struct_value":{"one":"one"}}},"version":"1.0"}` ,
496
542
}
497
543
498
544
var req = new (alice.Request )
0 commit comments