188c88e8eSopenharmony_civar chai = require('chai')
288c88e8eSopenharmony_civar sinon = require('sinon')
388c88e8eSopenharmony_civar sinonChai = require('sinon-chai')
488c88e8eSopenharmony_civar expect = chai.expect
588c88e8eSopenharmony_cichai.use(sinonChai)
688c88e8eSopenharmony_ci
788c88e8eSopenharmony_civar styler = require('../')
888c88e8eSopenharmony_ci
988c88e8eSopenharmony_cidescribe('validate', function () {
1088c88e8eSopenharmony_ci
1188c88e8eSopenharmony_ci  it('parse normal style code', function (done) {
1288c88e8eSopenharmony_ci    var code = {
1388c88e8eSopenharmony_ci      foo: {
1488c88e8eSopenharmony_ci        color: '#FF0000',
1588c88e8eSopenharmony_ci        width: '200',
1688c88e8eSopenharmony_ci        position: 'sticky',
1788c88e8eSopenharmony_ci        zIndex: 4
1888c88e8eSopenharmony_ci      }
1988c88e8eSopenharmony_ci    }
2088c88e8eSopenharmony_ci    styler.validate(code, function (err, data) {
2188c88e8eSopenharmony_ci      expect(err).is.undefined
2288c88e8eSopenharmony_ci      expect(data).is.an.object
2388c88e8eSopenharmony_ci      expect(data.jsonStyle).eql({foo: {color: '#FF0000', width: 200, position: 'sticky', zIndex: 4}})
2488c88e8eSopenharmony_ci      expect(data.log).eql([])
2588c88e8eSopenharmony_ci      done()
2688c88e8eSopenharmony_ci    })
2788c88e8eSopenharmony_ci  })
2888c88e8eSopenharmony_ci
2988c88e8eSopenharmony_ci  it('parse length', function (done) {
3088c88e8eSopenharmony_ci    var code = {
3188c88e8eSopenharmony_ci      foo: {
3288c88e8eSopenharmony_ci        width: '200px',
3388c88e8eSopenharmony_ci        paddingLeft: '300',
3488c88e8eSopenharmony_ci        borderWidth: '1pt',
3588c88e8eSopenharmony_ci        left: '0',
3688c88e8eSopenharmony_ci        right: '0px',
3788c88e8eSopenharmony_ci        marginRight: 'asdf'
3888c88e8eSopenharmony_ci      }
3988c88e8eSopenharmony_ci    }
4088c88e8eSopenharmony_ci    styler.validate(code, function (err, data) {
4188c88e8eSopenharmony_ci      expect(err).is.undefined
4288c88e8eSopenharmony_ci      expect(data).is.an.object
4388c88e8eSopenharmony_ci      expect(data.jsonStyle).eql({foo: {
4488c88e8eSopenharmony_ci        width: '200px',
4588c88e8eSopenharmony_ci        paddingLeft: 300,
4688c88e8eSopenharmony_ci        borderWidth: '1pt',
4788c88e8eSopenharmony_ci        left: 0,
4888c88e8eSopenharmony_ci        right: '0px'
4988c88e8eSopenharmony_ci      }})
5088c88e8eSopenharmony_ci      expect(data.log).eql([
5188c88e8eSopenharmony_ci        {reason: 'ERROR: property value `asdf` is not supported for `margin-right` (only number and pixel values are supported)'}
5288c88e8eSopenharmony_ci      ])
5388c88e8eSopenharmony_ci      done()
5488c88e8eSopenharmony_ci    })
5588c88e8eSopenharmony_ci  })
5688c88e8eSopenharmony_ci
5788c88e8eSopenharmony_ci  it('parse number', function (done) {
5888c88e8eSopenharmony_ci    var code = {
5988c88e8eSopenharmony_ci      foo: {
6088c88e8eSopenharmony_ci        opacity: '1'
6188c88e8eSopenharmony_ci      },
6288c88e8eSopenharmony_ci      bar: {
6388c88e8eSopenharmony_ci        opacity: '0.5'
6488c88e8eSopenharmony_ci      },
6588c88e8eSopenharmony_ci      baz: {
6688c88e8eSopenharmony_ci        opacity: 'a'
6788c88e8eSopenharmony_ci      },
6888c88e8eSopenharmony_ci      boo: {
6988c88e8eSopenharmony_ci        opacity: '0.5a'
7088c88e8eSopenharmony_ci      },
7188c88e8eSopenharmony_ci      zero: {
7288c88e8eSopenharmony_ci        opacity: '0'
7388c88e8eSopenharmony_ci      }
7488c88e8eSopenharmony_ci    }
7588c88e8eSopenharmony_ci    styler.validate(code, function (err, data) {
7688c88e8eSopenharmony_ci      expect(err).is.undefined
7788c88e8eSopenharmony_ci      expect(data).is.an.object
7888c88e8eSopenharmony_ci      expect(data.jsonStyle).eql({
7988c88e8eSopenharmony_ci        foo: {
8088c88e8eSopenharmony_ci          opacity: 1
8188c88e8eSopenharmony_ci        },
8288c88e8eSopenharmony_ci        bar: {
8388c88e8eSopenharmony_ci          opacity: 0.5
8488c88e8eSopenharmony_ci        },
8588c88e8eSopenharmony_ci        baz: {},
8688c88e8eSopenharmony_ci        boo: {},
8788c88e8eSopenharmony_ci        zero: {
8888c88e8eSopenharmony_ci          opacity: 0
8988c88e8eSopenharmony_ci        }
9088c88e8eSopenharmony_ci      })
9188c88e8eSopenharmony_ci      expect(data.log).eql([
9288c88e8eSopenharmony_ci        {reason: 'ERROR: property value `a` is not supported for `opacity` (only number is supported)'},
9388c88e8eSopenharmony_ci        {reason: 'ERROR: property value `0.5a` is not supported for `opacity` (only number is supported)'}
9488c88e8eSopenharmony_ci      ])
9588c88e8eSopenharmony_ci      done()
9688c88e8eSopenharmony_ci    })
9788c88e8eSopenharmony_ci  })
9888c88e8eSopenharmony_ci
9988c88e8eSopenharmony_ci  it('parse integer', function (done) {
10088c88e8eSopenharmony_ci    var code = {
10188c88e8eSopenharmony_ci      foo: {
10288c88e8eSopenharmony_ci        zIndex: '1'
10388c88e8eSopenharmony_ci      },
10488c88e8eSopenharmony_ci      bar: {
10588c88e8eSopenharmony_ci        zIndex: '0.5'
10688c88e8eSopenharmony_ci      },
10788c88e8eSopenharmony_ci      baz: {
10888c88e8eSopenharmony_ci        zIndex: 'a'
10988c88e8eSopenharmony_ci      },
11088c88e8eSopenharmony_ci      boo: {
11188c88e8eSopenharmony_ci        zIndex: '0.5a'
11288c88e8eSopenharmony_ci      },
11388c88e8eSopenharmony_ci      zero: {
11488c88e8eSopenharmony_ci        zIndex: '0'
11588c88e8eSopenharmony_ci      }
11688c88e8eSopenharmony_ci    }
11788c88e8eSopenharmony_ci    styler.validate(code, function (err, data) {
11888c88e8eSopenharmony_ci      expect(err).is.undefined
11988c88e8eSopenharmony_ci      expect(data).is.an.object
12088c88e8eSopenharmony_ci      expect(data.jsonStyle).eql({
12188c88e8eSopenharmony_ci        foo: {
12288c88e8eSopenharmony_ci          zIndex: 1
12388c88e8eSopenharmony_ci        },
12488c88e8eSopenharmony_ci        bar: {},
12588c88e8eSopenharmony_ci        baz: {},
12688c88e8eSopenharmony_ci        boo: {},
12788c88e8eSopenharmony_ci        zero: {
12888c88e8eSopenharmony_ci          zIndex: 0
12988c88e8eSopenharmony_ci        }
13088c88e8eSopenharmony_ci      })
13188c88e8eSopenharmony_ci      expect(data.log).eql([
13288c88e8eSopenharmony_ci        {reason: 'ERROR: property value `0.5` is not supported for `z-index` (only integer is supported)'},
13388c88e8eSopenharmony_ci        {reason: 'ERROR: property value `a` is not supported for `z-index` (only integer is supported)'},
13488c88e8eSopenharmony_ci        {reason: 'ERROR: property value `0.5a` is not supported for `z-index` (only integer is supported)'}
13588c88e8eSopenharmony_ci      ])
13688c88e8eSopenharmony_ci      done()
13788c88e8eSopenharmony_ci    })
13888c88e8eSopenharmony_ci  })
13988c88e8eSopenharmony_ci
14088c88e8eSopenharmony_ci  it('parse color', function (done) {
14188c88e8eSopenharmony_ci    var code = {
14288c88e8eSopenharmony_ci      foo: {
14388c88e8eSopenharmony_ci        color: '#FF0000',
14488c88e8eSopenharmony_ci        backgroundColor: '#ff0000'
14588c88e8eSopenharmony_ci      },
14688c88e8eSopenharmony_ci      bar: {
14788c88e8eSopenharmony_ci        color: '#F00',
14888c88e8eSopenharmony_ci        backgroundColor: '#f00'
14988c88e8eSopenharmony_ci      },
15088c88e8eSopenharmony_ci      baz: {
15188c88e8eSopenharmony_ci        color: 'red',
15288c88e8eSopenharmony_ci        backgroundColor: 'lightpink'
15388c88e8eSopenharmony_ci      },
15488c88e8eSopenharmony_ci      rgba: {
15588c88e8eSopenharmony_ci        color: 'rgb(23, 0, 255)',
15688c88e8eSopenharmony_ci        backgroundColor: 'rgba(234, 45, 99, .4)'
15788c88e8eSopenharmony_ci      },
15888c88e8eSopenharmony_ci      transparent: {
15988c88e8eSopenharmony_ci        color: 'transparent',
16088c88e8eSopenharmony_ci        backgroundColor: 'asdf'
16188c88e8eSopenharmony_ci      },
16288c88e8eSopenharmony_ci      errRgba: {
16388c88e8eSopenharmony_ci        color: 'rgb(266,0,255)',
16488c88e8eSopenharmony_ci        backgroundColor: 'rgba(234,45,99,1.3)'
16588c88e8eSopenharmony_ci      }
16688c88e8eSopenharmony_ci    }
16788c88e8eSopenharmony_ci    styler.validate(code, function (err, data) {
16888c88e8eSopenharmony_ci      expect(err).is.undefined
16988c88e8eSopenharmony_ci      expect(data).is.an.object
17088c88e8eSopenharmony_ci      expect(data.jsonStyle).eql({
17188c88e8eSopenharmony_ci        foo: {
17288c88e8eSopenharmony_ci          color: '#FF0000',
17388c88e8eSopenharmony_ci          backgroundColor: '#ff0000'
17488c88e8eSopenharmony_ci        },
17588c88e8eSopenharmony_ci        bar: {
17688c88e8eSopenharmony_ci          color: '#FF0000',
17788c88e8eSopenharmony_ci          backgroundColor: '#ff0000'
17888c88e8eSopenharmony_ci        },
17988c88e8eSopenharmony_ci        baz: {
18088c88e8eSopenharmony_ci          color: '#FF0000',
18188c88e8eSopenharmony_ci          backgroundColor: '#FFB6C1'
18288c88e8eSopenharmony_ci        },
18388c88e8eSopenharmony_ci        rgba: {
18488c88e8eSopenharmony_ci          color: 'rgb(23,0,255)',
18588c88e8eSopenharmony_ci          backgroundColor: 'rgba(234,45,99,0.4)'
18688c88e8eSopenharmony_ci        },
18788c88e8eSopenharmony_ci        transparent: {
18888c88e8eSopenharmony_ci          color: 'rgba(0,0,0,0)'
18988c88e8eSopenharmony_ci        },
19088c88e8eSopenharmony_ci        errRgba: {}
19188c88e8eSopenharmony_ci      })
19288c88e8eSopenharmony_ci      expect(data.log).eql([
19388c88e8eSopenharmony_ci        {reason: 'NOTE: property value `#F00` is autofixed to `#FF0000`'},
19488c88e8eSopenharmony_ci        {reason: 'NOTE: property value `#f00` is autofixed to `#ff0000`'},
19588c88e8eSopenharmony_ci        {reason: 'NOTE: property value `red` is autofixed to `#FF0000`'},
19688c88e8eSopenharmony_ci        {reason: 'NOTE: property value `lightpink` is autofixed to `#FFB6C1`'},
19788c88e8eSopenharmony_ci        {reason: 'ERROR: property value `asdf` is not valid for `background-color`'},
19888c88e8eSopenharmony_ci        {reason: 'ERROR: property value `rgb(266,0,255)` is not valid for `color`'},
19988c88e8eSopenharmony_ci        {reason: 'ERROR: property value `rgba(234,45,99,1.3)` is not valid for `background-color`'}
20088c88e8eSopenharmony_ci      ])
20188c88e8eSopenharmony_ci      done()
20288c88e8eSopenharmony_ci    })
20388c88e8eSopenharmony_ci  })
20488c88e8eSopenharmony_ci
20588c88e8eSopenharmony_ci  it('parse color', function (done) {
20688c88e8eSopenharmony_ci    var code = {
20788c88e8eSopenharmony_ci      foo: {
20888c88e8eSopenharmony_ci        color: '#FF0000',
20988c88e8eSopenharmony_ci        backgroundColor: '#ff0000'
21088c88e8eSopenharmony_ci      },
21188c88e8eSopenharmony_ci      bar: {
21288c88e8eSopenharmony_ci        color: '#F00',
21388c88e8eSopenharmony_ci        backgroundColor: '#f00'
21488c88e8eSopenharmony_ci      },
21588c88e8eSopenharmony_ci      baz: {
21688c88e8eSopenharmony_ci        color: 'red',
21788c88e8eSopenharmony_ci        backgroundColor: 'lightpink'
21888c88e8eSopenharmony_ci      },
21988c88e8eSopenharmony_ci      rgba: {
22088c88e8eSopenharmony_ci        color: 'rgb(23, 0, 255)',
22188c88e8eSopenharmony_ci        backgroundColor: 'rgba(234, 45, 99, .4)'
22288c88e8eSopenharmony_ci      },
22388c88e8eSopenharmony_ci      transparent: {
22488c88e8eSopenharmony_ci        color: 'transparent',
22588c88e8eSopenharmony_ci        backgroundColor: 'asdf'
22688c88e8eSopenharmony_ci      },
22788c88e8eSopenharmony_ci      errRgba: {
22888c88e8eSopenharmony_ci        color: 'rgb(266,0,255)',
22988c88e8eSopenharmony_ci        backgroundColor: 'rgba(234,45,99,1.3)'
23088c88e8eSopenharmony_ci      }
23188c88e8eSopenharmony_ci    }
23288c88e8eSopenharmony_ci    styler.validate(code, function (err, data) {
23388c88e8eSopenharmony_ci      expect(err).is.undefined
23488c88e8eSopenharmony_ci      expect(data).is.an.object
23588c88e8eSopenharmony_ci      expect(data.jsonStyle).eql({
23688c88e8eSopenharmony_ci        foo: {
23788c88e8eSopenharmony_ci          color: '#FF0000',
23888c88e8eSopenharmony_ci          backgroundColor: '#ff0000'
23988c88e8eSopenharmony_ci        },
24088c88e8eSopenharmony_ci        bar: {
24188c88e8eSopenharmony_ci          color: '#FF0000',
24288c88e8eSopenharmony_ci          backgroundColor: '#ff0000'
24388c88e8eSopenharmony_ci        },
24488c88e8eSopenharmony_ci        baz: {
24588c88e8eSopenharmony_ci          color: '#FF0000',
24688c88e8eSopenharmony_ci          backgroundColor: '#FFB6C1'
24788c88e8eSopenharmony_ci        },
24888c88e8eSopenharmony_ci        rgba: {
24988c88e8eSopenharmony_ci          color: 'rgb(23,0,255)',
25088c88e8eSopenharmony_ci          backgroundColor: 'rgba(234,45,99,0.4)'
25188c88e8eSopenharmony_ci        },
25288c88e8eSopenharmony_ci        transparent: {
25388c88e8eSopenharmony_ci          color: 'rgba(0,0,0,0)'
25488c88e8eSopenharmony_ci        },
25588c88e8eSopenharmony_ci        errRgba: {}
25688c88e8eSopenharmony_ci      })
25788c88e8eSopenharmony_ci      expect(data.log).eql([
25888c88e8eSopenharmony_ci        {reason: 'NOTE: property value `#F00` is autofixed to `#FF0000`'},
25988c88e8eSopenharmony_ci        {reason: 'NOTE: property value `#f00` is autofixed to `#ff0000`'},
26088c88e8eSopenharmony_ci        {reason: 'NOTE: property value `red` is autofixed to `#FF0000`'},
26188c88e8eSopenharmony_ci        {reason: 'NOTE: property value `lightpink` is autofixed to `#FFB6C1`'},
26288c88e8eSopenharmony_ci        {reason: 'ERROR: property value `asdf` is not valid for `background-color`'},
26388c88e8eSopenharmony_ci        {reason: 'ERROR: property value `rgb(266,0,255)` is not valid for `color`'},
26488c88e8eSopenharmony_ci        {reason: 'ERROR: property value `rgba(234,45,99,1.3)` is not valid for `background-color`'}
26588c88e8eSopenharmony_ci      ])
26688c88e8eSopenharmony_ci      done()
26788c88e8eSopenharmony_ci    })
26888c88e8eSopenharmony_ci  })
26988c88e8eSopenharmony_ci
27088c88e8eSopenharmony_ci  it('parse flex-wrap', function (done) {
27188c88e8eSopenharmony_ci    var code = {
27288c88e8eSopenharmony_ci      foo: { flexWrap: 'nowrap' },
27388c88e8eSopenharmony_ci      bar: { flexWrap: 'wrap' }
27488c88e8eSopenharmony_ci    }
27588c88e8eSopenharmony_ci    styler.validate(code, function (err, data) {
27688c88e8eSopenharmony_ci      expect(err).is.undefined
27788c88e8eSopenharmony_ci      expect(data).is.an.object
27888c88e8eSopenharmony_ci      expect(data.jsonStyle).eql({
27988c88e8eSopenharmony_ci        foo: { flexWrap: 'nowrap' },
28088c88e8eSopenharmony_ci        bar: { flexWrap: 'wrap' }
28188c88e8eSopenharmony_ci      })
28288c88e8eSopenharmony_ci      expect(data.log).eql([
28388c88e8eSopenharmony_ci        {reason: 'NOTE: property value `nowrap` is the DEFAULT value for `flex-wrap` (could be removed)'},
28488c88e8eSopenharmony_ci        {reason: 'NOTE: the flex-wrap property may have compatibility problem on native'},
28588c88e8eSopenharmony_ci      ])
28688c88e8eSopenharmony_ci      done()
28788c88e8eSopenharmony_ci    })
28888c88e8eSopenharmony_ci  })
28988c88e8eSopenharmony_ci
29088c88e8eSopenharmony_ci  it('parse transition-property', function (done) {
29188c88e8eSopenharmony_ci    var code = {
29288c88e8eSopenharmony_ci      foo: {
29388c88e8eSopenharmony_ci        transitionProperty: 'margin-top'
29488c88e8eSopenharmony_ci      },
29588c88e8eSopenharmony_ci      bar: {
29688c88e8eSopenharmony_ci        transitionProperty: 'height'
29788c88e8eSopenharmony_ci      },
29888c88e8eSopenharmony_ci      foobar: {
29988c88e8eSopenharmony_ci        transitionProperty: 'margin-top, height'
30088c88e8eSopenharmony_ci      },
30188c88e8eSopenharmony_ci      baz: {
30288c88e8eSopenharmony_ci        transitionProperty: 'abc'
30388c88e8eSopenharmony_ci      }
30488c88e8eSopenharmony_ci    }
30588c88e8eSopenharmony_ci    styler.validate(code, function (err, data) {
30688c88e8eSopenharmony_ci      expect(err).is.undefined
30788c88e8eSopenharmony_ci      expect(data).is.an.object
30888c88e8eSopenharmony_ci      expect(data.jsonStyle).eql({
30988c88e8eSopenharmony_ci        foo: {
31088c88e8eSopenharmony_ci          transitionProperty: 'marginTop'
31188c88e8eSopenharmony_ci        },
31288c88e8eSopenharmony_ci        bar: {
31388c88e8eSopenharmony_ci          transitionProperty: 'height'
31488c88e8eSopenharmony_ci        },
31588c88e8eSopenharmony_ci        foobar: {
31688c88e8eSopenharmony_ci          transitionProperty: 'marginTop,height'
31788c88e8eSopenharmony_ci        },
31888c88e8eSopenharmony_ci        baz: {}
31988c88e8eSopenharmony_ci      })
32088c88e8eSopenharmony_ci      expect(data.log).eql([
32188c88e8eSopenharmony_ci        {reason: 'ERROR: property value `abc` is not supported for `transition-property` (only css property is valid)'}
32288c88e8eSopenharmony_ci      ])
32388c88e8eSopenharmony_ci      done()
32488c88e8eSopenharmony_ci    })
32588c88e8eSopenharmony_ci  })
32688c88e8eSopenharmony_ci
32788c88e8eSopenharmony_ci  it('parse transition-duration & transition-delay', function (done) {
32888c88e8eSopenharmony_ci    var code = {
32988c88e8eSopenharmony_ci      foo: {
33088c88e8eSopenharmony_ci        transitionDuration: '200ms',
33188c88e8eSopenharmony_ci        transitionDelay: '0.5s'
33288c88e8eSopenharmony_ci      },
33388c88e8eSopenharmony_ci      bar: {
33488c88e8eSopenharmony_ci        transitionDuration: '200',
33588c88e8eSopenharmony_ci        transitionDelay: 'abc'
33688c88e8eSopenharmony_ci      }
33788c88e8eSopenharmony_ci    }
33888c88e8eSopenharmony_ci    styler.validate(code, function (err, data) {
33988c88e8eSopenharmony_ci      expect(err).is.undefined
34088c88e8eSopenharmony_ci      expect(data).is.an.object
34188c88e8eSopenharmony_ci      expect(data.jsonStyle).eql({
34288c88e8eSopenharmony_ci        foo: {
34388c88e8eSopenharmony_ci          transitionDuration: 200,
34488c88e8eSopenharmony_ci          transitionDelay: 500
34588c88e8eSopenharmony_ci        },
34688c88e8eSopenharmony_ci        bar: {
34788c88e8eSopenharmony_ci          transitionDuration: 200
34888c88e8eSopenharmony_ci        }
34988c88e8eSopenharmony_ci      })
35088c88e8eSopenharmony_ci      expect(data.log).eql([
35188c88e8eSopenharmony_ci        {reason: 'NOTE: property value `200ms` is autofixed to `200`'},
35288c88e8eSopenharmony_ci        {reason: 'NOTE: property value `0.5s` is autofixed to `500`'},
35388c88e8eSopenharmony_ci        {reason: 'ERROR: property value `abc` is not supported for `transition-delay` (only number of seconds and milliseconds is valid)'}
35488c88e8eSopenharmony_ci      ])
35588c88e8eSopenharmony_ci      done()
35688c88e8eSopenharmony_ci    })
35788c88e8eSopenharmony_ci  })
35888c88e8eSopenharmony_ci
35988c88e8eSopenharmony_ci  it('parse transition-timing-function', function (done) {
36088c88e8eSopenharmony_ci    var code = {
36188c88e8eSopenharmony_ci      foo: {
36288c88e8eSopenharmony_ci        transitionTimingFunction: 'ease-in-out'
36388c88e8eSopenharmony_ci      },
36488c88e8eSopenharmony_ci      bar: {
36588c88e8eSopenharmony_ci        transitionTimingFunction: 'cubic-bezier(.88, 1.0, -0.67, 1.37)'
36688c88e8eSopenharmony_ci      },
36788c88e8eSopenharmony_ci      baz: {
36888c88e8eSopenharmony_ci        transitionTimingFunction: 'abc'
36988c88e8eSopenharmony_ci      }
37088c88e8eSopenharmony_ci    }
37188c88e8eSopenharmony_ci    styler.validate(code, function (err, data) {
37288c88e8eSopenharmony_ci      expect(err).is.undefined
37388c88e8eSopenharmony_ci      expect(data).is.an.object
37488c88e8eSopenharmony_ci      expect(data.jsonStyle).eql({
37588c88e8eSopenharmony_ci        foo: {
37688c88e8eSopenharmony_ci          transitionTimingFunction: 'ease-in-out'
37788c88e8eSopenharmony_ci        },
37888c88e8eSopenharmony_ci        bar: {
37988c88e8eSopenharmony_ci          transitionTimingFunction: 'cubic-bezier(0.88,1,-0.67,1.37)'
38088c88e8eSopenharmony_ci        },
38188c88e8eSopenharmony_ci        baz: {}
38288c88e8eSopenharmony_ci      })
38388c88e8eSopenharmony_ci      expect(data.log).eql([
38488c88e8eSopenharmony_ci        {reason: 'ERROR: property value `abc` is not supported for `transition-timing-function` (supported values are: `linear`|`ease`|`ease-in`|`ease-out`|`ease-in-out`|`cubic-bezier(n,n,n,n)`)'}
38588c88e8eSopenharmony_ci      ])
38688c88e8eSopenharmony_ci      done()
38788c88e8eSopenharmony_ci    })
38888c88e8eSopenharmony_ci  })
38988c88e8eSopenharmony_ci
39088c88e8eSopenharmony_ci  it('parse unknown', function (done) {
39188c88e8eSopenharmony_ci    var code = {
39288c88e8eSopenharmony_ci      foo: {
39388c88e8eSopenharmony_ci        background: '#ff0000',
39488c88e8eSopenharmony_ci        abc: '123',
39588c88e8eSopenharmony_ci        def: '456px',
39688c88e8eSopenharmony_ci        ghi: '789pt',
39788c88e8eSopenharmony_ci        AbcDef: '456',
39888c88e8eSopenharmony_ci        abcDef: 'abc'
39988c88e8eSopenharmony_ci      }
40088c88e8eSopenharmony_ci    }
40188c88e8eSopenharmony_ci    styler.validate(code, function (err, data) {
40288c88e8eSopenharmony_ci      expect(err).is.undefined
40388c88e8eSopenharmony_ci      expect(data).is.an.object
40488c88e8eSopenharmony_ci      expect(data.jsonStyle).eql({
40588c88e8eSopenharmony_ci        foo: {
40688c88e8eSopenharmony_ci          background: '#ff0000',
40788c88e8eSopenharmony_ci          abc: 123,
40888c88e8eSopenharmony_ci          def: '456px',
40988c88e8eSopenharmony_ci          ghi: '789pt',
41088c88e8eSopenharmony_ci          AbcDef: 456,
41188c88e8eSopenharmony_ci          abcDef: 'abc'
41288c88e8eSopenharmony_ci        }
41388c88e8eSopenharmony_ci      })
41488c88e8eSopenharmony_ci      expect(data.log).eql([
41588c88e8eSopenharmony_ci        {reason: 'WARNING: `background` is not a standard property name (may not be supported), suggest `background-color`'},
41688c88e8eSopenharmony_ci        {reason: 'WARNING: `abc` is not a standard property name (may not be supported)'},
41788c88e8eSopenharmony_ci        {reason: 'WARNING: `def` is not a standard property name (may not be supported)'},
41888c88e8eSopenharmony_ci        {reason: 'WARNING: `ghi` is not a standard property name (may not be supported)'},
41988c88e8eSopenharmony_ci        {reason: 'WARNING: `-abc-def` is not a standard property name (may not be supported)'},
42088c88e8eSopenharmony_ci        {reason: 'WARNING: `abc-def` is not a standard property name (may not be supported)'}
42188c88e8eSopenharmony_ci      ])
42288c88e8eSopenharmony_ci      done()
42388c88e8eSopenharmony_ci    })
42488c88e8eSopenharmony_ci  })
42588c88e8eSopenharmony_ci
42688c88e8eSopenharmony_ci  it('parse complex style code', function (done) {
42788c88e8eSopenharmony_ci    var code = {
42888c88e8eSopenharmony_ci      foo: {
42988c88e8eSopenharmony_ci        color: 'red',
43088c88e8eSopenharmony_ci        WebkitTransform: 'rotate(90deg)',
43188c88e8eSopenharmony_ci        width: '200px'
43288c88e8eSopenharmony_ci      }
43388c88e8eSopenharmony_ci    }
43488c88e8eSopenharmony_ci    styler.validate(code, function (err, data) {
43588c88e8eSopenharmony_ci      expect(err).is.undefined
43688c88e8eSopenharmony_ci      expect(data).is.an.object
43788c88e8eSopenharmony_ci      expect(data.jsonStyle).eql({foo: {color: '#FF0000', WebkitTransform: 'rotate(90deg)', width: '200px'}})
43888c88e8eSopenharmony_ci      expect(data.log).eql([
43988c88e8eSopenharmony_ci        {reason: 'NOTE: property value `red` is autofixed to `#FF0000`'},
44088c88e8eSopenharmony_ci        {reason: 'WARNING: `-webkit-transform` is not a standard property name (may not be supported)'}
44188c88e8eSopenharmony_ci      ])
44288c88e8eSopenharmony_ci      done()
44388c88e8eSopenharmony_ci    })
44488c88e8eSopenharmony_ci  })
44588c88e8eSopenharmony_ci})
446