|
5 | 5 | "reflect"
|
6 | 6 | "testing"
|
7 | 7 | "time"
|
| 8 | + |
| 9 | + "go.mongodb.org/mongo-driver/bson/primitive" |
8 | 10 | )
|
9 | 11 |
|
10 | 12 | func TestStoreValue(t *testing.T) {
|
@@ -599,6 +601,97 @@ func TestLoadNumber(t *testing.T) {
|
599 | 601 | }
|
600 | 602 | }
|
601 | 603 |
|
| 604 | +func TestLoadValueMongo(t *testing.T) { |
| 605 | + objectID, _ := primitive.ObjectIDFromHex("5f7c4770582dc480c95ec67e") |
| 606 | + type args struct { |
| 607 | + key string |
| 608 | + state map[string]interface{} |
| 609 | + } |
| 610 | + tests := []struct { |
| 611 | + name string |
| 612 | + args args |
| 613 | + want interface{} |
| 614 | + wantErr bool |
| 615 | + }{ |
| 616 | + { |
| 617 | + name: "string to object id", |
| 618 | + args: args{ |
| 619 | + key: "utils.stringToObjectId(args.string)", |
| 620 | + state: map[string]interface{}{"string": "5f7c4770582dc480c95ec67e"}, |
| 621 | + }, |
| 622 | + want: objectID, |
| 623 | + }, |
| 624 | + { |
| 625 | + name: "string array to object id", |
| 626 | + args: args{ |
| 627 | + key: "utils.stringToObjectId(args.string)", |
| 628 | + state: map[string]interface{}{"string": []interface{}{"5f7c4770582dc480c95ec67e", "5f7c4770582dc480c95ec67e"}}, |
| 629 | + }, |
| 630 | + want: []interface{}{objectID, objectID}, |
| 631 | + }, |
| 632 | + { |
| 633 | + name: "string array (primitive.A) to object id", |
| 634 | + args: args{ |
| 635 | + key: "utils.stringToObjectId(args.string)", |
| 636 | + state: map[string]interface{}{"string": primitive.A{"5f7c4770582dc480c95ec67e", "5f7c4770582dc480c95ec67e"}}, |
| 637 | + }, |
| 638 | + want: []interface{}{objectID, objectID}, |
| 639 | + }, |
| 640 | + { |
| 641 | + name: "object id to object id", |
| 642 | + args: args{ |
| 643 | + key: "utils.stringToObjectId(args.string)", |
| 644 | + state: map[string]interface{}{"string": objectID}, |
| 645 | + }, |
| 646 | + want: objectID, |
| 647 | + }, |
| 648 | + { |
| 649 | + name: "invalid string to object id", |
| 650 | + args: args{ |
| 651 | + key: "utils.stringToObjectId(args.string)", |
| 652 | + state: map[string]interface{}{"string": "5f7c4770582dc480c95ec67edd"}, |
| 653 | + }, |
| 654 | + wantErr: true, |
| 655 | + }, |
| 656 | + { |
| 657 | + name: "string to string", |
| 658 | + args: args{ |
| 659 | + key: "utils.objectIdToString(args.obj)", |
| 660 | + state: map[string]interface{}{"obj": "5f7c4770582dc480c95ec67e"}, |
| 661 | + }, |
| 662 | + want: "5f7c4770582dc480c95ec67e", |
| 663 | + }, |
| 664 | + { |
| 665 | + name: "object id to string", |
| 666 | + args: args{ |
| 667 | + key: "utils.objectIdToString(args.obj)", |
| 668 | + state: map[string]interface{}{"obj": objectID}, |
| 669 | + }, |
| 670 | + want: "5f7c4770582dc480c95ec67e", |
| 671 | + }, |
| 672 | + { |
| 673 | + name: "random stuff to string", |
| 674 | + args: args{ |
| 675 | + key: "utils.objectIdToString(args.obj)", |
| 676 | + state: map[string]interface{}{"obj": 12}, |
| 677 | + }, |
| 678 | + wantErr: true, |
| 679 | + }, |
| 680 | + } |
| 681 | + for _, tt := range tests { |
| 682 | + t.Run(tt.name, func(t *testing.T) { |
| 683 | + got, err := LoadValue(tt.args.key, map[string]interface{}{"args": tt.args.state}) |
| 684 | + if (err != nil) != tt.wantErr { |
| 685 | + t.Errorf("LoadValue() error = %v, wantErr %v", err, tt.wantErr) |
| 686 | + return |
| 687 | + } |
| 688 | + if !tt.wantErr && !reflect.DeepEqual(got, tt.want) { |
| 689 | + t.Errorf("LoadValue() = %v, want %v", got, tt.want) |
| 690 | + } |
| 691 | + }) |
| 692 | + } |
| 693 | +} |
| 694 | + |
602 | 695 | func TestLoadValue(t *testing.T) {
|
603 | 696 | type args struct {
|
604 | 697 | key string
|
|
0 commit comments