package_builder_test.go (2407B)
1 // Copyright 2020 The Hugo Authors. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 // http://www.apache.org/licenses/LICENSE-2.0
7 //
8 // Unless required by applicable law or agreed to in writing, software
9 // distributed under the License is distributed on an "AS IS" BASIS,
10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 // See the License for the specific language governing permissions and
12 // limitations under the License.
13
14 package npm
15
16 import (
17 "strings"
18 "testing"
19
20 qt "github.com/frankban/quicktest"
21 )
22
23 const templ = `{
24 "name": "foo",
25 "version": "0.1.1",
26 "scripts": {},
27 "dependencies": {
28 "react-dom": "1.1.1",
29 "tailwindcss": "1.2.0",
30 "@babel/cli": "7.8.4",
31 "@babel/core": "7.9.0",
32 "@babel/preset-env": "7.9.5"
33 },
34 "devDependencies": {
35 "postcss-cli": "7.1.0",
36 "tailwindcss": "1.2.0",
37 "@babel/cli": "7.8.4",
38 "@babel/core": "7.9.0",
39 "@babel/preset-env": "7.9.5"
40 }
41 }`
42
43 func TestPackageBuilder(t *testing.T) {
44 c := qt.New(t)
45
46 b := newPackageBuilder("", strings.NewReader(templ))
47 c.Assert(b.Err(), qt.IsNil)
48
49 b.Add("mymod", strings.NewReader(`{
50 "dependencies": {
51 "react-dom": "9.1.1",
52 "add1": "1.1.1"
53 },
54 "devDependencies": {
55 "tailwindcss": "error",
56 "add2": "2.1.1"
57 }
58 }`))
59
60 b.Add("mymod", strings.NewReader(`{
61 "dependencies": {
62 "react-dom": "error",
63 "add1": "error",
64 "add3": "3.1.1"
65 },
66 "devDependencies": {
67 "tailwindcss": "error",
68 "add2": "error",
69 "add4": "4.1.1"
70
71 }
72 }`))
73
74 c.Assert(b.Err(), qt.IsNil)
75
76 c.Assert(b.dependencies, qt.DeepEquals, map[string]any{
77 "@babel/cli": "7.8.4",
78 "add1": "1.1.1",
79 "add3": "3.1.1",
80 "@babel/core": "7.9.0",
81 "@babel/preset-env": "7.9.5",
82 "react-dom": "1.1.1",
83 "tailwindcss": "1.2.0",
84 })
85
86 c.Assert(b.devDependencies, qt.DeepEquals, map[string]any{
87 "tailwindcss": "1.2.0",
88 "@babel/cli": "7.8.4",
89 "@babel/core": "7.9.0",
90 "add2": "2.1.1",
91 "add4": "4.1.1",
92 "@babel/preset-env": "7.9.5",
93 "postcss-cli": "7.1.0",
94 })
95 }