11import { describe , expect , it } from "vitest"
2- import { twMerge } from "tailwind-merge"
3- import { Merger } from "../merger_interface"
42import { createTools } from "../create_tools"
5- import { CreateTailwindest } from "../../create_tailwindest"
6- import { ClassList } from "../to_class"
3+ import type { Merger } from "../merger_interface"
4+ import type { CreateTailwindest } from "../../create_tailwindest"
5+
6+ import { twMerge } from "tailwind-merge"
77
88describe ( "Merger interface" , ( ) => {
99 it ( "1. tailwind-merge" , ( ) => {
@@ -25,25 +25,23 @@ describe("Merger interface", () => {
2525 [ "bg-red-100" , "bg-red-200" , "p-2" ] ,
2626 {
2727 backgroundColor : "bg-red-300" ,
28+ border : [ "border-t-4" ] ,
29+ } ,
30+ {
31+ border : "border-2" ,
2832 }
2933 )
30- expect ( argumentOrderHasPriority ) . toBe ( "p-2 bg-red-300" )
34+ expect ( argumentOrderHasPriority ) . toBe ( "p-2 bg-red-300 border-2" )
35+ const style = t . style ( {
36+ backgroundColor : "bg-red-100" ,
37+ } )
38+
39+ expect ( style . class ( "bg-red-200" , "p-2" ) ) . toBe ( "bg-red-200 p-2" )
3140 } )
3241 it ( "2. custom-merger" , ( ) => {
33- const customMerger : Merger < ClassList > = ( ...args ) => {
34- const res = args
35- . map ( ( e ) => {
36- if ( typeof e === "string" ) {
37- return e
38- }
39- if ( Array . isArray ( e ) ) {
40- return customMerger ( ...e )
41- }
42- throw new Error ( "Invalid merging value" )
43- } )
44- . filter ( Boolean )
45- . join ( " with " )
46- return res
42+ const customMerger : Merger = ( ...args ) => {
43+ const uniqueToken = Array . from ( new Set ( args ) )
44+ return uniqueToken . join ( " with " )
4745 }
4846
4947 const t = createTools < {
@@ -59,11 +57,14 @@ describe("Merger interface", () => {
5957 const style1 = t . def ( [ [ "bg-red-100" , "bg-red-200" ] , "p-2" ] )
6058 expect ( style1 ) . toBe ( "bg-red-100 with bg-red-200 with p-2" )
6159
62- const style2 = t . def ( [ "bg-red-100" , "bg-red-200" , "p-2" ] , {
63- backgroundColor : "bg-red-300" ,
64- } )
60+ const style2 = t . def (
61+ [ "bg-red-100" , "ONCE" , "ONCE" , "ONCE" , "bg-red-200" , "p-2" ] ,
62+ {
63+ backgroundColor : "bg-red-300" ,
64+ }
65+ )
6566 expect ( style2 ) . toBe (
66- "bg-red-100 with bg-red-200 with p-2 with bg-red-300"
67+ "bg-red-100 with ONCE with bg-red-200 with p-2 with bg-red-300"
6768 )
6869 } )
6970} )
0 commit comments