| 
 | 1 | +import css2jsonLoader from "./css2json-loader";  | 
 | 2 | + | 
 | 3 | +const importTestCases = [  | 
 | 4 | +    `@import url("custom.css");`,  | 
 | 5 | +    `@import url('custom.css');`,  | 
 | 6 | +    `@import url('custom.css') print;`,  | 
 | 7 | +    `@import url("custom.css") print;`,  | 
 | 8 | +    `@import url('custom.css') screen and (orientation:landscape);`,  | 
 | 9 | +    `@import url("custom.css") screen and (orientation:landscape);`,  | 
 | 10 | +    `@import 'custom.css';`,  | 
 | 11 | +    `@import "custom.css";`,  | 
 | 12 | +    `@import 'custom.css' screen;`,  | 
 | 13 | +    `@import "custom.css" screen;`,  | 
 | 14 | +    `@import url(custom.css);`,  | 
 | 15 | +]  | 
 | 16 | + | 
 | 17 | +const someCSS = `  | 
 | 18 | +.btn {  | 
 | 19 | +    background-color: #7f9  | 
 | 20 | +}  | 
 | 21 | +`  | 
 | 22 | + | 
 | 23 | +describe("css2jsonLoader", () => {  | 
 | 24 | +    it("converts CSS to JSON", (done) => {  | 
 | 25 | +        const loaderContext = {  | 
 | 26 | +            callback: (error, source: string, map) => {  | 
 | 27 | +                expect(source).toContain(`{"type":"declaration","property":"background-color","value":"#7f9"}`);  | 
 | 28 | + | 
 | 29 | +                done();  | 
 | 30 | +            }  | 
 | 31 | +        }  | 
 | 32 | + | 
 | 33 | +        css2jsonLoader.call(loaderContext, someCSS);  | 
 | 34 | +    })  | 
 | 35 | + | 
 | 36 | +    importTestCases.forEach((importTestCase) => {  | 
 | 37 | +        it(`handles: ${importTestCase}`, (done) => {  | 
 | 38 | + | 
 | 39 | +            const loaderContext = {  | 
 | 40 | +                callback: (error, source: string, map) => {  | 
 | 41 | +                    expect(source).toContain(`global.registerModule("custom.css", () => require("custom.css"))`);  | 
 | 42 | +                    expect(source).toContain(`{"type":"declaration","property":"background-color","value":"#7f9"}`);  | 
 | 43 | + | 
 | 44 | +                    done();  | 
 | 45 | +                },  | 
 | 46 | +            }  | 
 | 47 | + | 
 | 48 | +            css2jsonLoader.call(loaderContext, importTestCase + someCSS);  | 
 | 49 | +        })  | 
 | 50 | +    });  | 
 | 51 | + | 
 | 52 | +    it("inlines css2json loader in imports if option is provided", (done) => {  | 
 | 53 | +        const loaderContext = {  | 
 | 54 | +            callback: (error, source: string, map) => {  | 
 | 55 | +                expect(source).toContain(`global.registerModule("custom.css", () => require("!nativescript-dev-webpack/css2json-loader?useForImports!custom.css"))`);  | 
 | 56 | +                expect(source).toContain(`{"type":"declaration","property":"background-color","value":"#7f9"}`);  | 
 | 57 | + | 
 | 58 | +                done();  | 
 | 59 | +            },  | 
 | 60 | +            query: { useForImports: true }  | 
 | 61 | +        }  | 
 | 62 | + | 
 | 63 | +        css2jsonLoader.call(loaderContext, `@import url("custom.css");` + someCSS);  | 
 | 64 | +    })  | 
 | 65 | + | 
 | 66 | +    it("registers modules for paths starting with ~", (done) => {  | 
 | 67 | +        const loaderContext = {  | 
 | 68 | +            callback: (error, source: string, map) => {  | 
 | 69 | +                expect(source).toContain(`global.registerModule("~custom.css", () => require("custom.css"))`);  | 
 | 70 | +                expect(source).toContain(`global.registerModule("custom.css", () => require("custom.css"))`);  | 
 | 71 | +                expect(source).toContain(`{"type":"declaration","property":"background-color","value":"#7f9"}`);  | 
 | 72 | + | 
 | 73 | +                done();  | 
 | 74 | +            }  | 
 | 75 | +        }  | 
 | 76 | + | 
 | 77 | +        css2jsonLoader.call(loaderContext, `@import url("~custom.css");` + someCSS);  | 
 | 78 | +    })  | 
 | 79 | +});  | 
0 commit comments