Skip to content
Snippets Groups Projects
Select Git revision
  • e45a3db8628fcc69968dfb20171845ed65615cdf
  • master default protected
  • feature/PRXS-3421-ImplementNewRefAPI
  • refactor/PRXS-3053-Files
  • feature/3149-LocaleCodeAsID-Feature
  • feature/PRXS-3383-CollectionsSort
  • feature/PRXS-3143-3235-ReferenceOptions
  • feature/PRXS-3143-LimitReferenceFields
  • feature/PRXS-3234-FeaturePruneIdents
  • PRXS-3421-RecursiveReferences
  • feature/3109-SerializeFeature
  • release/0.33
  • feature/3109-RecoverySchema
  • feature/3109-feature
  • fix/PRXS-3369-ValidateFields
  • refactor/PRXS-3306-MovePkgGroup1
  • refactor/6-pkg-refactor-expr
  • fix/PRXS-3360-TemplateBuilderPatch
  • feature/3293-MongoV2
  • feature/3272-GoVersionUp
  • feature/PRXS-3218-HideTemplateActions
  • v0.33.1
  • v0.32.0
  • v0.31.1
  • v0.31.0
  • v0.30.0
  • v0.29.0
  • v0.28.0
  • v0.27.0-alpha.1+16
  • v0.27.0-alpha.1+15
  • v0.27.0-alpha.1+14
  • v0.27.0-alpha.1+13
  • v0.27.0-alpha.1+12
  • v0.27.0-alpha.1+11
  • v0.27.0-alpha.1+10
  • v0.27.0-alpha.1+9
  • v0.27.0-alpha.1+8
  • v0.27.0-alpha.1+7
  • v0.27.0-alpha.1+6
  • v0.27.0-alpha.1+5
  • v0.27.0-alpha.1+4
41 results

service.go

Blame
  • bson_test.go 5.81 KiB
    package id
    
    import (
    	"testing"
    
    	"github.com/stretchr/testify/assert"
    	"github.com/stretchr/testify/require"
    	"go.mongodb.org/mongo-driver/bson"
    )
    
    func TestID_MarshalBSON(t *testing.T) {
    	tests := []struct {
    		name string
    		id   ID
    		want string
    	}{
    		{
    			name: "OrganizationID",
    			id:   ID{Descriptor: &OrganizationID{OrganizationID: "1"}},
    			want: `"/orgs/1"`,
    		},
    		{
    			name: "UserID",
    			id:   ID{Descriptor: &UserID{UserID: "1"}},
    			want: `"/users/1"`,
    		},
    		{
    			name: "ServiceID",
    			id:   ID{Descriptor: &ServiceID{ServiceID: "1"}},
    			want: `"/services/1"`,
    		},
    		{
    			name: "SpaceID",
    			id:   ID{Descriptor: &SpaceID{SpaceID: "1"}},
    			want: `"/spaces/1"`,
    		},
    		{
    			name: "EnvironmentID",
    			id:   ID{Descriptor: &EnvironmentID{EnvironmentID: "1", SpaceID: SpaceID{SpaceID: "1"}}},
    			want: `"/spaces/1/envs/1"`,
    		},
    		{
    			name: "ClientID",
    			id:   ID{Descriptor: &ClientID{ClientID: "1", SpaceID: SpaceID{SpaceID: "1"}}},
    			want: `"/spaces/1/clients/1"`,
    		},
    		{
    			name: "RoleID",
    			id:   ID{Descriptor: &RoleID{RoleID: "1", SpaceID: SpaceID{SpaceID: "1"}}},
    			want: `"/spaces/1/roles/1"`,
    		},
    		{
    			name: "CollectionID",
    			id:   ID{Descriptor: &CollectionID{CollectionID: "1", EnvironmentID: EnvironmentID{EnvironmentID: "1", SpaceID: SpaceID{SpaceID: "1"}}}},
    			want: `"/spaces/1/envs/1/cols/1"`,
    		},
    		{
    			name: "SchemaID",
    			id:   ID{Descriptor: &SchemaID{CollectionID: "1", EnvironmentID: EnvironmentID{EnvironmentID: "1", SpaceID: SpaceID{SpaceID: "1"}}}},
    			want: `"/spaces/1/envs/1/schema/1"`,
    		},
    		{
    			name: "ItemID",
    			id:   ID{Descriptor: &ItemID{ItemID: "1", CollectionID: CollectionID{CollectionID: "1", EnvironmentID: EnvironmentID{EnvironmentID: "1", SpaceID: SpaceID{SpaceID: "1"}}}}},
    			want: `"/spaces/1/envs/1/cols/1/items/1"`,
    		},
    		{
    			name: "RevisionID",
    			id:   ID{Descriptor: &RevisionID{RevisionID: "1", ItemID: ItemID{ItemID: "1", CollectionID: CollectionID{CollectionID: "1", EnvironmentID: EnvironmentID{EnvironmentID: "1", SpaceID: SpaceID{SpaceID: "1"}}}}}},
    			want: `"/spaces/1/envs/1/cols/1/items/1/revs/1"`,
    		},
    		{
    			name: "FieldID",
    			id:   ID{Descriptor: &FieldID{FieldName: "1", ItemID: ItemID{ItemID: "1", CollectionID: CollectionID{CollectionID: "1", EnvironmentID: EnvironmentID{EnvironmentID: "1", SpaceID: SpaceID{SpaceID: "1"}}}}}},
    			want: `"/spaces/1/envs/1/cols/1/items/1/fields/1"`,
    		},
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			got, err := bson.Marshal(tt.id)
    			require.NoError(t, err)
    			assert.Equal(t, tt.want, string(got))
    		})
    	}
    }
    
    func TestID_UnmarshalBSON(t *testing.T) {
    	tests := []struct {
    		id   string
    		want ID
    		b    []byte
    	}{
    		{
    			id:   "OrganizationID",
    			want: ID{Descriptor: &OrganizationID{OrganizationID: "1"}},
    			b:    []byte(`"/orgs/1"`),
    		},
    		{
    			id:   "UserID",
    			want: ID{Descriptor: &UserID{UserID: "1"}},
    			b:    []byte(`"/users/1"`),
    		},
    		{
    			id:   "ServiceID",
    			want: ID{Descriptor: &ServiceID{ServiceID: "1"}},
    			b:    []byte(`"/services/1"`),
    		},
    		{
    			id:   "SpaceID",
    			want: ID{Descriptor: &SpaceID{SpaceID: "1"}},
    			b:    []byte(`"/spaces/1"`),
    		},
    		{
    			id:   "EnvironmentID",
    			want: ID{Descriptor: &EnvironmentID{EnvironmentID: "1", SpaceID: SpaceID{SpaceID: "1"}}},
    			b:    []byte(`"/spaces/1/envs/1"`),
    		},
    		{
    			id:   "ClientID",
    			want: ID{Descriptor: &ClientID{ClientID: "1", SpaceID: SpaceID{SpaceID: "1"}}},
    			b:    []byte(`"/spaces/1/clients/1"`),
    		},
    		{
    			id:   "RoleID",
    			want: ID{Descriptor: &RoleID{RoleID: "1", SpaceID: SpaceID{SpaceID: "1"}}},
    			b:    []byte(`"/spaces/1/roles/1"`),
    		},
    		{
    			id:   "CollectionID",
    			want: ID{Descriptor: &CollectionID{CollectionID: "1", EnvironmentID: EnvironmentID{EnvironmentID: "1", SpaceID: SpaceID{SpaceID: "1"}}}},
    			b:    []byte(`"/spaces/1/envs/1/cols/1"`),
    		},
    		{
    			id:   "SchemaID",
    			want: ID{Descriptor: &SchemaID{CollectionID: "1", EnvironmentID: EnvironmentID{EnvironmentID: "1", SpaceID: SpaceID{SpaceID: "1"}}}},
    			b:    []byte(`"/spaces/1/envs/1/schema/1"`),
    		},
    		{
    			id:   "ItemID",
    			want: ID{Descriptor: &ItemID{ItemID: "1", CollectionID: CollectionID{CollectionID: "1", EnvironmentID: EnvironmentID{EnvironmentID: "1", SpaceID: SpaceID{SpaceID: "1"}}}}},
    			b:    []byte(`"/spaces/1/envs/1/cols/1/items/1"`),
    		},
    		{
    			id:   "RevisionID",
    			want: ID{Descriptor: &RevisionID{RevisionID: "1", ItemID: ItemID{ItemID: "1", CollectionID: CollectionID{CollectionID: "1", EnvironmentID: EnvironmentID{EnvironmentID: "1", SpaceID: SpaceID{SpaceID: "1"}}}}}},
    			b:    []byte(`"/spaces/1/envs/1/cols/1/items/1/revs/1"`),
    		},
    		{
    			id:   "FieldID",
    			want: ID{Descriptor: &FieldID{FieldName: "1", ItemID: ItemID{ItemID: "1", CollectionID: CollectionID{CollectionID: "1", EnvironmentID: EnvironmentID{EnvironmentID: "1", SpaceID: SpaceID{SpaceID: "1"}}}}}},
    			b:    []byte(`"/spaces/1/envs/1/cols/1/items/1/fields/1"`),
    		},
    	}
    	for _, tt := range tests {
    		t.Run(tt.id, func(t *testing.T) {
    			var i ID
    
    			//require.NoError(t, i.UnmarshalBSON(tt.b))
    			assert.Equal(t, tt.want, i)
    		})
    	}
    }
    
    func TestID_BSON(t *testing.T) {
    	type data struct {
    		ID     *ID
    		Text   string
    		Number int
    	}
    
    	test1 := &data{
    		ID:     &ID{Descriptor: &SpaceID{SpaceID: Space}},
    		Text:   "text",
    		Number: 1,
    	}
    
    	b, err := bson.Marshal(test1)
    	require.NoError(t, err)
    	str := string(b)
    	_ = str
    
    	test2 := new(data)
    	err = bson.Unmarshal(b, &test2)
    	require.NoError(t, err)
    	assert.Equal(t, test1, test2, "после Unmarshal объект должен совпадать с исходным")
    
    	test1 = &data{
    		ID:     &ID{Descriptor: &OrganizationID{OrganizationID: Organization}},
    		Text:   "text2",
    		Number: 2,
    	}
    
    	b, err = bson.Marshal(test1)
    	require.NoError(t, err)
    
    	test2 = new(data)
    	err = bson.Unmarshal(b, &test2)
    	require.NoError(t, err)
    	assert.Equal(t, test1, test2, "после Unmarshal объект должен совпадать с исходным")
    }