1+ import { describe , expect , it } from "vitest" ;
2+ import { splitTag } from "~/components/runs/v3/RunTag" ;
3+
4+ describe ( "splitTag" , ( ) => {
5+ it ( "should return the original string when no separator is found" , ( ) => {
6+ expect ( splitTag ( "simpletag" ) ) . toBe ( "simpletag" ) ;
7+ expect ( splitTag ( "tag-with-dashes" ) ) . toBe ( "tag-with-dashes" ) ;
8+ expect ( splitTag ( "tag.with.dots" ) ) . toBe ( "tag.with.dots" ) ;
9+ } ) ;
10+
11+ it ( "should return the original string when key is longer than 12 characters" , ( ) => {
12+ expect ( splitTag ( "verylongcategory:prod" ) ) . toBe ( "verylongcategory:prod" ) ;
13+ expect ( splitTag ( "verylongcategory_prod" ) ) . toBe ( "verylongcategory_prod" ) ;
14+ } ) ;
15+
16+ it ( "should split tag with underscore separator" , ( ) => {
17+ expect ( splitTag ( "env_prod" ) ) . toEqual ( { key : "env" , value : "prod" } ) ;
18+ expect ( splitTag ( "category_batch" ) ) . toEqual ( { key : "category" , value : "batch" } ) ;
19+ } ) ;
20+
21+ it ( "should split tag with colon separator" , ( ) => {
22+ expect ( splitTag ( "env:prod" ) ) . toEqual ( { key : "env" , value : "prod" } ) ;
23+ expect ( splitTag ( "category:batch" ) ) . toEqual ( { key : "category" , value : "batch" } ) ;
24+ expect ( splitTag ( "customer:test_customer" ) ) . toEqual ( { key : "customer" , value : "test_customer" } ) ;
25+ } ) ;
26+
27+ it ( "should handle mixed delimiters" , ( ) => {
28+ expect ( splitTag ( "category:batch_job" ) ) . toEqual ( { key : "category" , value : "batch_job" } ) ;
29+ expect ( splitTag ( "status_error:500" ) ) . toEqual ( { key : "status" , value : "error:500" } ) ;
30+ } ) ;
31+
32+ it ( "should preserve common ID formats" , ( ) => {
33+ expect ( splitTag ( "job_123_456" ) ) . toBe ( "job_123_456" ) ;
34+ expect ( splitTag ( "run:123:456" ) ) . toBe ( "run:123:456" ) ;
35+ expect ( splitTag ( "task123_job_456" ) ) . toBe ( "task123_job_456" ) ;
36+ } ) ;
37+
38+ it ( "should return original string when multiple separators are found" , ( ) => {
39+ expect ( splitTag ( "env:prod:test" ) ) . toBe ( "env:prod:test" ) ;
40+ expect ( splitTag ( "env_prod_test" ) ) . toBe ( "env_prod_test" ) ;
41+ } ) ;
42+
43+ it ( "should handle edge case with exactly 12 character key" , ( ) => {
44+ expect ( splitTag ( "abcdefghijkl:value" ) ) . toEqual ( { key : "abcdefghijkl" , value : "value" } ) ;
45+ expect ( splitTag ( "exactlytwelv_chars" ) ) . toEqual ( { key : "exactlytwelv" , value : "chars" } ) ;
46+ } ) ;
47+
48+ it ( "should handle empty values" , ( ) => {
49+ expect ( splitTag ( "empty:" ) ) . toEqual ( { key : "empty" , value : "" } ) ;
50+ expect ( splitTag ( "nothing_" ) ) . toEqual ( { key : "nothing" , value : "" } ) ;
51+ } ) ;
52+
53+ it ( "should handle special characters in values" , ( ) => {
54+ expect ( splitTag ( "region:us-west-2" ) ) . toEqual ( { key : "region" , value : "us-west-2" } ) ;
55+ expect ( splitTag ( "query:SELECT * FROM users" ) ) . toEqual ( { key : "query" , value : "SELECT * FROM users" } ) ;
56+ expect ( splitTag ( "path:/api/v1/users" ) ) . toEqual ( { key : "path" , value : "/api/v1/users" } ) ;
57+ } ) ;
58+
59+ it ( "should handle values containing numbers and special formats" , ( ) => {
60+ expect ( splitTag ( "uuid:123e4567-e89b-12d3-a456-426614174000" ) ) . toEqual ( {
61+ key : "uuid" ,
62+ value : "123e4567-e89b-12d3-a456-426614174000"
63+ } ) ;
64+ expect ( splitTag ( "ip_192.168.1.1" ) ) . toEqual ( { key : "ip" , value : "192.168.1.1" } ) ;
65+ expect ( splitTag ( "date:2023-04-01T12:00:00Z" ) ) . toEqual ( { key : "date" , value : "2023-04-01T12:00:00Z" } ) ;
66+ } ) ;
67+
68+ it ( "should handle keys with numbers" , ( ) => {
69+ expect ( splitTag ( "env2:staging" ) ) . toEqual ( { key : "env2" , value : "staging" } ) ;
70+ expect ( splitTag ( "v1_endpoint" ) ) . toEqual ( { key : "v1" , value : "endpoint" } ) ;
71+ } ) ;
72+
73+ it ( "should handle particularly complex mixed cases" , ( ) => {
74+ expect ( splitTag ( "env:prod_us-west-2_replica" ) ) . toEqual ( { key : "env" , value : "prod_us-west-2_replica" } ) ;
75+ expect ( splitTag ( "status_error:connection:timeout" ) ) . toEqual ( { key : "status" , value : "error:connection:timeout" } ) ;
76+ } ) ;
77+ } ) ;
0 commit comments