|
3 | 3 | capitalizeFirstLetter, |
4 | 4 | escapeForSVG, |
5 | 5 | kebabOfStr, |
| 6 | + kebabOfThemeStr, |
6 | 7 | replaceEscapedCharacters, |
7 | 8 | } from "./text"; |
8 | 9 |
|
@@ -184,3 +185,60 @@ describe("kebabOfStr", () => { |
184 | 185 | expect(kebabOfStr("MiXeD cAsE")).toBe("mi-xe-d-c-as-e"); |
185 | 186 | }); |
186 | 187 | }); |
| 188 | + |
| 189 | +describe("kebabOfThemeStr", () => { |
| 190 | + it("should convert spaces to hyphens", () => { |
| 191 | + expect(kebabOfThemeStr("hello world")).toBe("hello-world"); |
| 192 | + expect(kebabOfThemeStr("multiple spaces")).toBe("multiple-spaces"); |
| 193 | + }); |
| 194 | + |
| 195 | + it("should convert underscores to hyphens", () => { |
| 196 | + expect(kebabOfThemeStr("snake_case")).toBe("snake-case"); |
| 197 | + expect(kebabOfThemeStr("multiple___underscores")).toBe( |
| 198 | + "multiple-underscores", |
| 199 | + ); |
| 200 | + }); |
| 201 | + |
| 202 | + it("should convert mixed spaces and underscores", () => { |
| 203 | + expect(kebabOfThemeStr("mixed_ case")).toBe("mixed-case"); |
| 204 | + expect(kebabOfThemeStr("theme name_variant")).toBe("theme-name-variant"); |
| 205 | + }); |
| 206 | + |
| 207 | + it("should convert to lowercase", () => { |
| 208 | + expect(kebabOfThemeStr("UPPERCASE")).toBe("uppercase"); |
| 209 | + expect(kebabOfThemeStr("MiXeD CaSe")).toBe("mixed-case"); |
| 210 | + }); |
| 211 | + |
| 212 | + it("should handle already kebab-case strings", () => { |
| 213 | + expect(kebabOfThemeStr("already-kebab")).toBe("already-kebab"); |
| 214 | + }); |
| 215 | + |
| 216 | + it("should handle empty strings", () => { |
| 217 | + expect(kebabOfThemeStr("")).toBe(""); |
| 218 | + }); |
| 219 | + |
| 220 | + it("should handle single characters", () => { |
| 221 | + expect(kebabOfThemeStr("A")).toBe("a"); |
| 222 | + expect(kebabOfThemeStr("a")).toBe("a"); |
| 223 | + }); |
| 224 | + |
| 225 | + it("should preserve other special characters", () => { |
| 226 | + expect(kebabOfThemeStr("hello@world")).toBe("hello@world"); |
| 227 | + expect(kebabOfThemeStr("test.file.name")).toBe("test.file.name"); |
| 228 | + }); |
| 229 | + |
| 230 | + it("should not convert camelCase (unlike kebabOfStr)", () => { |
| 231 | + expect(kebabOfThemeStr("camelCase")).toBe("camelcase"); |
| 232 | + expect(kebabOfThemeStr("PascalCase")).toBe("pascalcase"); |
| 233 | + }); |
| 234 | + |
| 235 | + it("should handle strings with numbers", () => { |
| 236 | + expect(kebabOfThemeStr("theme_v2 beta")).toBe("theme-v2-beta"); |
| 237 | + expect(kebabOfThemeStr("version_123_FINAL")).toBe("version-123-final"); |
| 238 | + }); |
| 239 | + |
| 240 | + it("should handle strings with parentheses", () => { |
| 241 | + expect(kebabOfThemeStr("theme_v2 (beta)")).toBe("theme-v2-beta"); |
| 242 | + expect(kebabOfThemeStr("Gruvbox Dark (Hard)")).toBe("gruvbox-dark-hard"); |
| 243 | + }); |
| 244 | +}); |
0 commit comments