test(Calendar): add test cases (#8712)

* test(Calendar): add test cases

* test(Calendar): test cases

* test(Calendar): test cases
This commit is contained in:
nemo-shen 2021-05-17 09:52:19 +08:00 committed by GitHub
parent d9c3050542
commit bb7dccfeec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 1628 additions and 595 deletions

View File

@ -1,325 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`color prop when type is range 1`] = `
<div class="van-calendar">
<div class="van-calendar__header">
<div class="van-calendar__header-title">日期选择</div>
<div class="van-calendar__header-subtitle">2010年1月</div>
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
</div>
<div class="van-calendar__body">
<div class="van-calendar__month">
<div role="grid" class="van-calendar__days">
<div class="van-calendar__month-mark" style="">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">2</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">3</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">4</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">5</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">6</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">7</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">8</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">9</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day van-calendar__day--start" style="background: blue;">10<div class="van-calendar__bottom-info">开始</div>
</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day van-calendar__day--middle" style="color: blue;">11</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day van-calendar__day--middle" style="color: blue;">12</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day van-calendar__day--middle" style="color: blue;">13</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day van-calendar__day--middle" style="color: blue;">14</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day van-calendar__day--middle" style="color: blue;">15</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day van-calendar__day--middle" style="color: blue;">16</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day van-calendar__day--middle" style="color: blue;">17</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day van-calendar__day--middle" style="color: blue;">18</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day van-calendar__day--middle" style="color: blue;">19</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day van-calendar__day--end" style="background: blue;">20<div class="van-calendar__bottom-info">结束</div>
</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">21</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">22</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">23</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">24</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">25</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">26</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">27</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">28</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">29</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">30</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">31</div>
</div>
</div>
</div>
<div class="van-calendar__footer"><button type="button" class="van-button van-button--danger van-button--normal van-button--block van-button--round van-calendar__confirm" style="color: white; background: blue; border-color: blue;">
<div class="van-button__content"><span class="van-button__text">确定</span></div>
</button></div>
</div>
`;
exports[`color prop when type is single 1`] = `
<div class="van-calendar">
<div class="van-calendar__header">
<div class="van-calendar__header-title">日期选择</div>
<div class="van-calendar__header-subtitle">2010年1月</div>
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
</div>
<div class="van-calendar__body">
<div class="van-calendar__month">
<div role="grid" class="van-calendar__days">
<div class="van-calendar__month-mark" style="">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">2</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">3</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">4</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">5</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">6</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">7</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">8</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">9</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">
<div class="van-calendar__selected-day" style="background: blue;">10</div>
</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">11</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">12</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">13</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">14</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">15</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">16</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">17</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">18</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">19</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">20</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">21</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">22</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">23</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">24</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">25</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">26</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">27</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">28</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">29</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">30</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">31</div>
</div>
</div>
</div>
<div class="van-calendar__footer"><button type="button" class="van-button van-button--danger van-button--normal van-button--block van-button--round van-calendar__confirm" style="color: white; background: blue; border-color: blue;">
<div class="van-button__content"><span class="van-button__text">确定</span></div>
</button></div>
</div>
`;
exports[`formatter prop 1`] = `
<div class="van-calendar">
<div class="van-calendar__header">
<div class="van-calendar__header-title">日期选择</div>
<div class="van-calendar__header-subtitle">2010年1月</div>
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
</div>
<div class="van-calendar__body">
<div class="van-calendar__month">
<div role="grid" class="van-calendar__days">
<div class="van-calendar__month-mark" style="">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">2</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">3</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">4</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">5</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">6</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">7</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">8</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">9</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">
<div class="van-calendar__selected-day">10</div>
</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">
<div class="van-calendar__top-info">Top Info</div>11
</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">12<div class="van-calendar__bottom-info">Bottom Info</div>
</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">Text</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day test">14</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">15</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">16</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">17</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">18</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">19</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">20</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">21</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">22</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">23</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">24</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">25</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">26</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">27</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">28</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">29</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">30</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">31</div>
</div>
</div>
</div>
<div class="van-calendar__footer"><button type="button" class="van-button van-button--danger van-button--normal van-button--block van-button--round van-calendar__confirm">
<div class="van-button__content"><span class="van-button__text">确定</span></div>
</button></div>
</div>
`;
exports[`popup wrapper 1`] = ``;
exports[`popup wrapper 2`] = `
<div class="van-popup van-popup--round van-popup--bottom van-calendar__popup" name="van-popup-slide-bottom" style="z-index: 2002;">
<div class="van-calendar">
<div class="van-calendar__header">
<div class="van-calendar__header-title">日期选择</div>
<div class="van-calendar__header-subtitle">2010年1月</div>
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
</div>
<div class="van-calendar__body">
<div class="van-calendar__month">
<div role="grid" class="van-calendar__days">
<div class="van-calendar__month-mark" style="">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">2</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">3</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">4</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">5</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">6</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">7</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">8</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">9</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">
<div class="van-calendar__selected-day">10</div>
</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">11</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">12</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">13</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">14</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">15</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">16</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">17</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">18</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">19</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">20</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">21</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">22</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">23</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">24</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">25</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">26</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">27</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">28</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">29</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">30</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">31</div>
</div>
</div>
</div>
<div class="van-calendar__footer"><button type="button" class="van-button van-button--danger van-button--normal van-button--block van-button--round van-calendar__confirm">
<div class="van-button__content"><span class="van-button__text">确定</span></div>
</button></div>
</div><i role="button" tabindex="0" class="van-icon van-icon-cross van-popup__close-icon van-popup__close-icon--top-right">
<!----></i>
</div>
`;
exports[`row-height prop 1`] = `
<div class="van-calendar">
<div class="van-calendar__header">
<div class="van-calendar__header-title">日期选择</div>
<div class="van-calendar__header-subtitle">2010年1月</div>
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
</div>
<div class="van-calendar__body">
<div class="van-calendar__month">
<div role="grid" class="van-calendar__days">
<div class="van-calendar__month-mark" style="">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px; margin-left: 71.42857142857143%;">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">2</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">3</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">4</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">5</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">6</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">7</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">8</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">9</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day" style="height: 50px;">
<div class="van-calendar__selected-day" style="width: 50px; height: 50px;">10</div>
</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day" style="height: 50px;">11</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day" style="height: 50px;">12</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day" style="height: 50px;">13</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day" style="height: 50px;">14</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day" style="height: 50px;">15</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day" style="height: 50px;">16</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day" style="height: 50px;">17</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day" style="height: 50px;">18</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day" style="height: 50px;">19</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day" style="height: 50px;">20</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">21</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">22</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">23</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">24</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">25</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">26</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">27</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">28</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">29</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">30</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px;">31</div>
</div>
</div>
</div>
<div class="van-calendar__footer"><button type="button" class="van-button van-button--danger van-button--normal van-button--block van-button--round van-calendar__confirm">
<div class="van-button__content"><span class="van-button__text">确定</span></div>
</button></div>
</div>
`;
exports[`title & footer slot 1`] = `
<div class="van-calendar">
<div class="van-calendar__header">
<div class="van-calendar__header-title">Custom Title</div>
<div class="van-calendar__header-subtitle">2010年1月</div>
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
</div>
<div class="van-calendar__body">
<div class="van-calendar__month">
<div role="grid" class="van-calendar__days">
<div class="van-calendar__month-mark" style="">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">2</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">3</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">4</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="">5</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">6</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">7</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">8</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">9</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">
<div class="van-calendar__selected-day">10</div>
</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">11</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">12</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">13</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">14</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">15</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">16</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">17</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">18</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">19</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">20</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">21</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">22</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">23</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">24</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">25</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">26</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">27</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">28</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">29</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">30</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">31</div>
</div>
</div>
</div>
<div class="van-calendar__footer">Custom Footer</div>
</div>
`;

File diff suppressed because it is too large Load Diff

View File

@ -1,54 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`lazy-render prop 1`] = `
<div class="van-calendar">
<div class="van-calendar__header">
<div class="van-calendar__header-title">日期选择</div>
<div class="van-calendar__header-subtitle"></div>
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
</div>
<div class="van-calendar__body">
<div class="van-calendar__month">
<div role="grid" class="van-calendar__days">
<div class="van-calendar__month-mark">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">2</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">3</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">4</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">5</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">6</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">7</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">8</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">9</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">10</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">11</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">12</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">13</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">14</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">15</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">16</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">17</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">18</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">19</div>
<div role="gridcell" tabindex="-1" class="van-calendar__day">
<div class="van-calendar__selected-day">20</div>
</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">21</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">22</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">23</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">24</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">25</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">26</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">27</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">28</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">29</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">30</div>
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">31</div>
</div>
</div>
</div>
<div class="van-calendar__footer"><button type="button" class="van-button van-button--danger van-button--normal van-button--block van-button--round van-calendar__confirm">
<div class="van-button__content"><span class="van-button__text">确定</span></div>
</button></div>
</div>
`;

View File

@ -0,0 +1,227 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`lazy-render prop 1`] = `
<div class="van-calendar">
<div class="van-calendar__header">
<div class="van-calendar__header-title">
Calendar
</div>
<div class="van-calendar__header-subtitle">
</div>
<div class="van-calendar__weekdays">
<span class="van-calendar__weekday">
Sun
</span>
<span class="van-calendar__weekday">
Mon
</span>
<span class="van-calendar__weekday">
Tue
</span>
<span class="van-calendar__weekday">
Wed
</span>
<span class="van-calendar__weekday">
Thu
</span>
<span class="van-calendar__weekday">
Fri
</span>
<span class="van-calendar__weekday">
Sat
</span>
</div>
</div>
<div class="van-calendar__body">
<div class="van-calendar__month">
<div role="grid"
class="van-calendar__days"
>
<div class="van-calendar__month-mark">
1
</div>
<div role="gridcell"
style="margin-left: 71.42857142857143%;"
class="van-calendar__day van-calendar__day--disabled"
>
1
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
2
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
3
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
4
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
5
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
6
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
7
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
8
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
9
</div>
<div role="gridcell"
class="van-calendar__day"
tabindex="-1"
>
10
</div>
<div role="gridcell"
class="van-calendar__day"
tabindex="-1"
>
11
</div>
<div role="gridcell"
class="van-calendar__day"
tabindex="-1"
>
12
</div>
<div role="gridcell"
class="van-calendar__day"
tabindex="-1"
>
13
</div>
<div role="gridcell"
class="van-calendar__day"
tabindex="-1"
>
14
</div>
<div role="gridcell"
class="van-calendar__day"
tabindex="-1"
>
15
</div>
<div role="gridcell"
class="van-calendar__day"
tabindex="-1"
>
16
</div>
<div role="gridcell"
class="van-calendar__day"
tabindex="-1"
>
17
</div>
<div role="gridcell"
class="van-calendar__day"
tabindex="-1"
>
18
</div>
<div role="gridcell"
class="van-calendar__day"
tabindex="-1"
>
19
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--selected"
tabindex="-1"
>
<div class="van-calendar__selected-day">
20
</div>
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
21
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
22
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
23
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
24
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
25
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
26
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
27
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
28
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
29
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
30
</div>
<div role="gridcell"
class="van-calendar__day van-calendar__day--disabled"
>
31
</div>
</div>
</div>
</div>
<div class="van-calendar__footer">
<button type="button"
class="van-button van-button--danger van-button--normal van-button--block van-button--round van-calendar__confirm"
>
<div class="van-button__content">
<span class="van-button__text">
Confirm
</span>
</div>
</button>
</div>
</div>
`;

View File

@ -1,50 +0,0 @@
import { Calendar } from '..';
import { mount } from '../../../test';
import { getNextDay, getPrevDay } from '../utils';
import { minDate, maxDate } from './utils';
test('should reset to default date when calling reset method', async () => {
const defaultDate = [minDate, getNextDay(minDate)];
const wrapper = mount(Calendar, {
props: {
minDate,
maxDate,
type: 'range',
poppable: false,
lazyRender: false,
defaultDate,
},
});
const days = wrapper.findAll('.van-calendar__day');
await days[15].trigger('click');
await days[18].trigger('click');
wrapper.vm.reset();
wrapper.find('.van-calendar__confirm').trigger('click');
expect(wrapper.emitted('confirm')[0][0]).toEqual(defaultDate);
});
test('should reset to specific date when calling reset method with date', async () => {
const wrapper = mount(Calendar, {
props: {
minDate,
maxDate,
type: 'range',
poppable: false,
lazyRender: false,
defaultDate: [minDate, getNextDay(minDate)],
},
});
const days = wrapper.findAll('.van-calendar__day');
await days[15].trigger('click');
await days[18].trigger('click');
const newDate = [getPrevDay(maxDate), maxDate];
wrapper.vm.reset(newDate);
wrapper.find('.van-calendar__confirm').trigger('click');
expect(wrapper.emitted('confirm')[0][0]).toEqual(newDate);
});

View File

@ -1,14 +1,54 @@
import { Calendar } from '..'; import { Calendar, CalendarDayItem } from '..';
import { mount, later } from '../../../test'; import { mount, later } from '../../../test';
import { getNextDay } from '../utils'; import { getNextDay, getPrevDay } from '../utils';
import { import { now, minDate, maxDate } from './utils';
now, import type { ComponentInstance } from '../../utils';
minDate,
maxDate, test('should reset to default date when calling reset method', async () => {
formatDate, const defaultDate = [minDate, getNextDay(minDate)];
formatRange, const wrapper = mount(Calendar, {
formatMultiple, props: {
} from './utils'; minDate,
maxDate,
type: 'range',
poppable: false,
lazyRender: false,
defaultDate,
},
});
const days = wrapper.findAll('.van-calendar__day');
await days[15].trigger('click');
await days[18].trigger('click');
(wrapper.vm as ComponentInstance).reset();
wrapper.find('.van-calendar__confirm').trigger('click');
expect(wrapper.emitted<[Date, Date]>('confirm')![0][0]).toEqual(defaultDate);
});
test('should reset to specific date when calling reset method with date', async () => {
const wrapper = mount(Calendar, {
props: {
minDate,
maxDate,
type: 'range',
poppable: false,
lazyRender: false,
defaultDate: [minDate, getNextDay(minDate)],
},
});
const days = wrapper.findAll('.van-calendar__day');
await days[15].trigger('click');
await days[18].trigger('click');
const newDate = [getPrevDay(maxDate), maxDate];
(wrapper.vm as ComponentInstance).reset(newDate);
wrapper.find('.van-calendar__confirm').trigger('click');
expect(wrapper.emitted<[Date, Date]>('confirm')![0][0]).toEqual(newDate);
});
test('select event when type is single', async () => { test('select event when type is single', async () => {
const wrapper = mount(Calendar, { const wrapper = mount(Calendar, {
@ -16,14 +56,17 @@ test('select event when type is single', async () => {
minDate, minDate,
maxDate, maxDate,
poppable: false, poppable: false,
lazyRender: false,
}, },
}); });
await later(); await later();
wrapper.findAll('.van-calendar__day').at(15).trigger('click'); wrapper.findAll('.van-calendar__day')[15].trigger('click');
expect(formatDate(wrapper.emitted('select')[0][0])).toEqual('2010/1/16'); expect(wrapper.emitted<[Date]>('select')![0][0]).toEqual(
new Date(2010, 0, 16)
);
}); });
test('select event when type is range', async () => { test('select event when type is range', async () => {
@ -33,23 +76,27 @@ test('select event when type is range', async () => {
minDate, minDate,
maxDate, maxDate,
poppable: false, poppable: false,
lazyRender: false,
}, },
}); });
await later(); await later();
const days = wrapper.findAll('.van-calendar__day'); const days = wrapper.findAll('.van-calendar__day');
days.at(15).trigger('click'); days[15].trigger('click');
days.at(15).trigger('click'); days[15].trigger('click');
days.at(16).trigger('click'); days[16].trigger('click');
days.at(15).trigger('click'); days[15].trigger('click');
days.at(12).trigger('click'); days[12].trigger('click');
const emittedSelect = wrapper.emitted('select'); const onSelect = wrapper.emitted<[Date]>('select');
expect(formatRange(emittedSelect[0][0])).toEqual('2010/1/16-'); expect(onSelect![0][0]).toEqual([new Date(2010, 0, 16)]);
expect(formatRange(emittedSelect[1][0])).toEqual('2010/1/16-2010/1/17'); expect(onSelect![1][0]).toEqual([
expect(formatRange(emittedSelect[2][0])).toEqual('2010/1/16-'); new Date(2010, 0, 16),
expect(formatRange(emittedSelect[3][0])).toEqual('2010/1/13-'); new Date(2010, 0, 17),
]);
expect(onSelect![2][0]).toEqual([new Date(2010, 0, 16)]);
expect(onSelect![3][0]).toEqual([new Date(2010, 0, 13)]);
}); });
test('select event when type is multiple', async () => { test('select event when type is multiple', async () => {
@ -60,31 +107,43 @@ test('select event when type is multiple', async () => {
maxDate, maxDate,
poppable: false, poppable: false,
defaultDate: [minDate], defaultDate: [minDate],
lazyRender: false,
}, },
}); });
await later(); await later();
const days = wrapper.findAll('.van-calendar__day'); const days = wrapper.findAll('.van-calendar__day');
days.at(15).trigger('click'); days[15].trigger('click');
days.at(16).trigger('click'); days[16].trigger('click');
days.at(17).trigger('click'); days[17].trigger('click');
await later(); await later();
days.at(15).trigger('click'); days[15].trigger('click');
days.at(12).trigger('click'); days[12].trigger('click');
const emittedSelect = wrapper.emitted('select'); const onSelect = wrapper.emitted<[Date]>('select');
expect(formatMultiple(emittedSelect[0][0])).toEqual('2010/1/10,2010/1/16'); expect(onSelect![0][0]).toEqual([
expect(formatMultiple(emittedSelect[1][0])).toEqual( new Date(2010, 0, 10),
'2010/1/10,2010/1/16,2010/1/17' new Date(2010, 0, 16),
); ]);
expect(formatMultiple(emittedSelect[2][0])).toEqual( expect(onSelect![1][0]).toEqual([
'2010/1/10,2010/1/16,2010/1/17,2010/1/18' new Date(2010, 0, 10),
); new Date(2010, 0, 16),
expect(formatMultiple(emittedSelect[3][0])).toEqual( new Date(2010, 0, 17),
'2010/1/10,2010/1/17,2010/1/18,2010/1/13' ]);
); expect(onSelect![2][0]).toEqual([
new Date(2010, 0, 10),
new Date(2010, 0, 16),
new Date(2010, 0, 17),
new Date(2010, 0, 18),
]);
expect(onSelect![3][0]).toEqual([
new Date(2010, 0, 10),
new Date(2010, 0, 17),
new Date(2010, 0, 18),
new Date(2010, 0, 13),
]);
}); });
test('select event when type is multiple', async () => { test('select event when type is multiple', async () => {
@ -95,17 +154,20 @@ test('select event when type is multiple', async () => {
maxDate, maxDate,
poppable: false, poppable: false,
defaultDate: [minDate], defaultDate: [minDate],
lazyRender: false,
}, },
}); });
await later(); await later();
const days = wrapper.findAll('.van-calendar__day'); const days = wrapper.findAll('.van-calendar__day');
days.at(15).trigger('click'); days[15].trigger('click');
await later(); await later();
days.at(15).trigger('click'); days[15].trigger('click');
expect(formatDate(wrapper.emitted('unselect')[0][0])).toEqual('2010/1/16'); expect(wrapper.emitted<[Date]>('unselect')![0][0]).toEqual(
new Date(2010, 0, 16)
);
}); });
test('should not trigger select event when click disabled day', async () => { test('should not trigger select event when click disabled day', async () => {
@ -114,6 +176,7 @@ test('should not trigger select event when click disabled day', async () => {
minDate, minDate,
maxDate, maxDate,
poppable: false, poppable: false,
lazyRender: false,
}, },
}); });
@ -121,7 +184,7 @@ test('should not trigger select event when click disabled day', async () => {
wrapper.findAll('.van-calendar__day')[1].trigger('click'); wrapper.findAll('.van-calendar__day')[1].trigger('click');
expect(formatDate(wrapper.emitted('select'))).toBeFalsy(); expect(wrapper.emitted('select')).toBeFalsy();
}); });
test('confirm event when type is single', async () => { test('confirm event when type is single', async () => {
@ -130,17 +193,20 @@ test('confirm event when type is single', async () => {
minDate, minDate,
maxDate, maxDate,
poppable: false, poppable: false,
lazyRender: false,
}, },
}); });
await later(); await later();
wrapper.findAll('.van-calendar__day').at(15).trigger('click'); wrapper.findAll('.van-calendar__day')[15].trigger('click');
expect(wrapper.emitted('confirm')).toBeFalsy(); expect(wrapper.emitted('confirm')).toBeFalsy();
wrapper.find('.van-calendar__confirm').trigger('click'); wrapper.find('.van-calendar__confirm').trigger('click');
expect(formatDate(wrapper.emitted('confirm')[0][0])).toEqual('2010/1/16'); expect(wrapper.emitted<[Date]>('confirm')![0][0]).toEqual(
new Date(2010, 0, 16)
);
}); });
test('confirm event when type is range', async () => { test('confirm event when type is range', async () => {
@ -150,34 +216,23 @@ test('confirm event when type is range', async () => {
minDate, minDate,
maxDate, maxDate,
poppable: false, poppable: false,
lazyRender: false,
}, },
}); });
await later(); await later();
const days = wrapper.findAll('.van-calendar__day'); const days = wrapper.findAll('.van-calendar__day');
days.at(15).trigger('click'); days[15].trigger('click');
days.at(18).trigger('click'); days[18].trigger('click');
expect(wrapper.emitted('confirm')).toBeFalsy(); expect(wrapper.emitted('confirm')).toBeFalsy();
wrapper.find('.van-calendar__confirm').trigger('click'); wrapper.find('.van-calendar__confirm').trigger('click');
expect(formatRange(wrapper.emitted('confirm')[0][0])).toEqual( expect(wrapper.emitted<[Date]>('confirm')![0][0]).toEqual([
'2010/1/16-2010/1/19' new Date(2010, 0, 16),
); new Date(2010, 0, 19),
}); ]);
test('default single date', async () => {
const wrapper = mount(Calendar, {
props: {
poppable: false,
},
});
await later();
wrapper.find('.van-calendar__confirm').trigger('click');
expect(formatDate(wrapper.emitted('confirm')[0][0])).toEqual(formatDate(now));
}); });
test('default range date', async () => { test('default range date', async () => {
@ -185,15 +240,31 @@ test('default range date', async () => {
props: { props: {
type: 'range', type: 'range',
poppable: false, poppable: false,
lazyRender: false,
}, },
}); });
await later(); await later();
wrapper.find('.van-calendar__confirm').trigger('click'); wrapper.find('.van-calendar__confirm').trigger('click');
expect(formatRange(wrapper.emitted('confirm')[0][0])).toEqual( expect(wrapper.emitted<[Date]>('confirm')![0][0]).toEqual([
formatRange([now, getNextDay(now)]) now,
); getNextDay(now),
]);
});
test('default single date', async () => {
const wrapper = mount(Calendar, {
props: {
poppable: false,
lazyRender: false,
},
});
await later();
wrapper.find('.van-calendar__confirm').trigger('click');
expect(wrapper.emitted<[Date]>('confirm')![0][0]).toEqual(now);
}); });
test('set show-confirm to false', async () => { test('set show-confirm to false', async () => {
@ -204,18 +275,20 @@ test('set show-confirm to false', async () => {
type: 'range', type: 'range',
poppable: false, poppable: false,
showConfirm: false, showConfirm: false,
lazyRender: false,
}, },
}); });
await later(); await later();
const days = wrapper.findAll('.van-calendar__day'); const days = wrapper.findAll('.van-calendar__day');
days.at(15).trigger('click'); days[15].trigger('click');
days.at(18).trigger('click'); days[18].trigger('click');
expect(formatRange(wrapper.emitted('confirm')[0][0])).toEqual( expect(wrapper.emitted<[Date]>('confirm')![0][0]).toEqual([
'2010/1/16-2010/1/19' new Date(2010, 0, 16),
); new Date(2010, 0, 19),
]);
}); });
test('row-height prop', async () => { test('row-height prop', async () => {
@ -226,6 +299,7 @@ test('row-height prop', async () => {
poppable: false, poppable: false,
rowHeight: 50, rowHeight: 50,
defaultDate: minDate, defaultDate: minDate,
lazyRender: false,
}, },
}); });
@ -241,8 +315,9 @@ test('formatter prop', async () => {
maxDate, maxDate,
poppable: false, poppable: false,
defaultDate: minDate, defaultDate: minDate,
formatter(day) { lazyRender: false,
const date = day.date.getDate(); formatter(day: CalendarDayItem) {
const date = day.date?.getDate();
switch (date) { switch (date) {
case 11: case 11:
@ -276,6 +351,7 @@ test('title & footer slot', async () => {
maxDate, maxDate,
poppable: false, poppable: false,
defaultDate: minDate, defaultDate: minDate,
lazyRender: false,
}, },
slots: { slots: {
title: () => 'Custom Title', title: () => 'Custom Title',
@ -295,22 +371,26 @@ test('should reset when type changed', async () => {
maxDate, maxDate,
poppable: false, poppable: false,
defaultDate: minDate, defaultDate: minDate,
lazyRender: false,
}, },
}); });
await later(); await later();
wrapper.find('.van-calendar__confirm').trigger('click'); wrapper.find('.van-calendar__confirm').trigger('click');
expect(formatDate(wrapper.emitted('confirm')[0][0])).toEqual('2010/1/10'); expect(wrapper.emitted<[Date]>('confirm')![0][0]).toEqual(
new Date(2010, 0, 10)
);
wrapper.setProps({ await wrapper.setProps({
type: 'range', type: 'range',
defaultDate: [minDate, getNextDay(minDate)], defaultDate: [minDate, getNextDay(minDate)],
}); });
wrapper.find('.van-calendar__confirm').trigger('click'); wrapper.find('.van-calendar__confirm').trigger('click');
expect(formatRange(wrapper.emitted('confirm')[1][0])).toEqual( expect(wrapper.emitted<[Date]>('confirm')![1][0]).toEqual([
'2010/1/10-2010/1/11' new Date(2010, 0, 10),
); new Date(2010, 0, 11),
]);
}); });
test('default-date prop in single type', async () => { test('default-date prop in single type', async () => {
@ -320,17 +400,22 @@ test('default-date prop in single type', async () => {
maxDate, maxDate,
defaultDate: getNextDay(minDate), defaultDate: getNextDay(minDate),
poppable: false, poppable: false,
lazyRender: false,
}, },
}); });
await later(); await later();
wrapper.find('.van-calendar__confirm').trigger('click'); wrapper.find('.van-calendar__confirm').trigger('click');
expect(formatDate(wrapper.emitted('confirm')[0][0])).toEqual('2010/1/11'); expect(wrapper.emitted<[Date]>('confirm')![0][0]).toEqual(
new Date(2010, 0, 11)
);
wrapper.setProps({ defaultDate: maxDate }); await wrapper.setProps({ defaultDate: maxDate });
wrapper.find('.van-calendar__confirm').trigger('click'); wrapper.find('.van-calendar__confirm').trigger('click');
expect(formatDate(wrapper.emitted('confirm')[1][0])).toEqual('2010/1/20'); expect(wrapper.emitted<[Date]>('confirm')![1][0]).toEqual(
new Date(2010, 0, 20)
);
}); });
test('default-date prop in range type', async () => { test('default-date prop in range type', async () => {
@ -340,22 +425,24 @@ test('default-date prop in range type', async () => {
minDate, minDate,
maxDate, maxDate,
poppable: false, poppable: false,
lazyRender: false,
}, },
}); });
await later(); await later();
wrapper.setProps({ defaultDate: [] }); await wrapper.setProps({ defaultDate: null });
wrapper.find('.van-calendar__confirm').trigger('click'); wrapper.find('.van-calendar__confirm').trigger('click');
expect(wrapper.emitted('confirm')).toBeFalsy(); expect(wrapper.emitted('confirm')).toBeFalsy();
const days = wrapper.findAll('.van-calendar__day'); const days = wrapper.findAll('.van-calendar__day');
days.at(15).trigger('click'); await days[15].trigger('click');
days.at(18).trigger('click'); await days[18].trigger('click');
wrapper.find('.van-calendar__confirm').trigger('click'); wrapper.find('.van-calendar__confirm').trigger('click');
expect(formatRange(wrapper.emitted('confirm')[0][0])).toEqual( expect(wrapper.emitted<[Date]>('confirm')![0][0]).toEqual([
'2010/1/16-2010/1/19' new Date(2010, 0, 16),
); new Date(2010, 0, 19),
]);
}); });
test('popup wrapper', async () => { test('popup wrapper', async () => {
@ -364,10 +451,9 @@ test('popup wrapper', async () => {
minDate, minDate,
maxDate, maxDate,
defaultDate: minDate, defaultDate: minDate,
}, show: false,
listeners: { 'onUpdate:show': (show: boolean) => {
input(value) { wrapper.setProps({ show });
wrapper.setProps({ value });
}, },
}, },
}); });
@ -375,13 +461,13 @@ test('popup wrapper', async () => {
await later(); await later();
expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.html()).toMatchSnapshot();
wrapper.setProps({ value: true }); await wrapper.setProps({ show: true });
await later(); await later();
expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.html()).toMatchSnapshot();
wrapper.find('.van-popup__close-icon').trigger('click'); await wrapper.find('.van-popup__close-icon').trigger('click');
expect(wrapper.style.display).toEqual('none'); expect(wrapper.find('.van-calendar__popup').style.display).toEqual('none');
}); });
test('set show-mark prop to false', async () => { test('set show-mark prop to false', async () => {
@ -391,12 +477,13 @@ test('set show-mark prop to false', async () => {
maxDate, maxDate,
showMark: false, showMark: false,
poppable: false, poppable: false,
lazyRender: false,
}, },
}); });
await later(); await later();
expect(wrapper.find('.van-calendar__month-mark').element).toBeFalsy(); expect(wrapper.find('.van-calendar__month-mark').exists()).toBeFalsy();
}); });
test('color prop when type is single', async () => { test('color prop when type is single', async () => {
@ -407,6 +494,7 @@ test('color prop when type is single', async () => {
color: 'blue', color: 'blue',
poppable: false, poppable: false,
defaultDate: minDate, defaultDate: minDate,
lazyRender: false,
}, },
}); });
@ -432,13 +520,16 @@ test('color prop when type is range', async () => {
expect(wrapper.html()).toMatchSnapshot(); expect(wrapper.html()).toMatchSnapshot();
}); });
test('close event', () => { test('close event', async () => {
const onClose = jest.fn();
const wrapper = mount(Calendar, { const wrapper = mount(Calendar, {
props: { props: {
value: true, show: true,
onClose,
}, },
}); });
wrapper.setProps({ value: false }); await wrapper.setProps({ show: false });
expect(wrapper.emitted('close')).toBeTruthy();
expect(onClose).toHaveBeenCalledTimes(1);
}); });

View File

@ -1,6 +1,6 @@
import { Calendar } from '..'; import { Calendar } from '..';
import { mount, later } from '../../../test'; import { mount, later } from '../../../test';
import { minDate, maxDate, formatRange, formatDate } from './utils'; import { minDate, maxDate } from './utils';
test('max-range prop when type is range and showConfirm is false', async () => { test('max-range prop when type is range and showConfirm is false', async () => {
const wrapper = mount(Calendar, { const wrapper = mount(Calendar, {
@ -11,19 +11,23 @@ test('max-range prop when type is range and showConfirm is false', async () => {
maxRange: 3, maxRange: 3,
poppable: false, poppable: false,
showConfirm: false, showConfirm: false,
lazyRender: false,
}, },
}); });
await later(); await later();
const days = wrapper.findAll('.van-calendar__day'); const days = wrapper.findAll('.van-calendar__day');
days.at(12).trigger('click'); days[12].trigger('click');
days.at(18).trigger('click'); days[18].trigger('click');
expect(formatRange(wrapper.emitted('select')[0][0])).toEqual('2010/1/13-'); expect(wrapper.emitted<[Date]>('select')![0][0]).toEqual([
expect(formatRange(wrapper.emitted('select')[1][0])).toEqual( new Date(2010, 0, 13),
'2010/1/13-2010/1/19' ]);
); expect(wrapper.emitted<[Date]>('select')![1][0]).toEqual([
new Date(2010, 0, 13),
new Date(2010, 0, 19),
]);
expect(wrapper.emitted('confirm')).toBeFalsy(); expect(wrapper.emitted('confirm')).toBeFalsy();
}); });
@ -35,19 +39,23 @@ test('max-range prop when type is range and showConfirm is true', async () => {
maxDate, maxDate,
maxRange: 3, maxRange: 3,
poppable: false, poppable: false,
lazyRender: false,
}, },
}); });
await later(); await later();
const days = wrapper.findAll('.van-calendar__day'); const days = wrapper.findAll('.van-calendar__day');
days.at(12).trigger('click'); days[12].trigger('click');
days.at(18).trigger('click'); days[18].trigger('click');
expect(formatRange(wrapper.emitted('select')[0][0])).toEqual('2010/1/13-'); expect(wrapper.emitted<[Date]>('select')![0][0]).toEqual([
expect(formatRange(wrapper.emitted('select')[1][0])).toEqual( new Date(2010, 0, 13),
'2010/1/13-2010/1/15' ]);
); expect(wrapper.emitted<[Date]>('select')![1][0]).toEqual([
new Date(2010, 0, 13),
new Date(2010, 0, 15),
]);
expect(wrapper.emitted('confirm')).toBeFalsy(); expect(wrapper.emitted('confirm')).toBeFalsy();
}); });
@ -60,86 +68,87 @@ test('max-range prop when type is multiple', async () => {
maxRange: 2, maxRange: 2,
poppable: false, poppable: false,
showConfirm: false, showConfirm: false,
lazyRender: false,
}, },
}); });
await later(); await later();
const days = wrapper.findAll('.van-calendar__day'); const days = wrapper.findAll('.van-calendar__day');
days.at(13).trigger('click'); days[13].trigger('click');
days.at(14).trigger('click'); days[14].trigger('click');
days[15].trigger('click');
expect(wrapper.emitted('select').length).toEqual(1); expect(wrapper.emitted<[Date]>('select')![0][0]).toHaveLength(2);
}); });
test('show-title prop', () => { test('show-title prop', async () => {
const wrapper = mount(Calendar, { const wrapper = mount(Calendar, {
props: { props: {
value: true, show: true,
}, },
}); });
expect(wrapper.contains('.van-calendar__header-title')).toBeTruthy(); expect(wrapper.find('.van-calendar__header-title').exists()).toBeTruthy();
wrapper.setProps({ showTitle: false }); await wrapper.setProps({ showTitle: false });
expect(wrapper.contains('.van-calendar__header-title')).toBeFalsy(); expect(wrapper.find('.van-calendar__header-title').exists()).toBeFalsy();
}); });
test('show-subtitle prop', () => { test('show-subtitle prop', async () => {
const wrapper = mount(Calendar, { const wrapper = mount(Calendar, {
props: { props: {
value: true, show: true,
}, },
}); });
expect(wrapper.contains('.van-calendar__header-subtitle')).toBeTruthy(); expect(wrapper.find('.van-calendar__header-subtitle').exists()).toBeTruthy();
wrapper.setProps({ showSubtitle: false }); await wrapper.setProps({ showSubtitle: false });
expect(wrapper.contains('.van-calendar__header-subtitle')).toBeFalsy(); expect(wrapper.find('.van-calendar__header-subtitle').exists()).toBeFalsy();
}); });
test('hide close icon when there is no title', () => { test('hide close icon when there is no title', async () => {
const wrapper = mount(Calendar, { const wrapper = mount(Calendar, {
props: { props: {
value: true, show: true,
}, },
}); });
expect(wrapper.contains('.van-popup__close-icon')).toBeTruthy(); expect(wrapper.find('.van-popup__close-icon').exists()).toBeTruthy();
wrapper.setProps({ await wrapper.setProps({
showTitle: false, showTitle: false,
showSubtitle: false, showSubtitle: false,
}); });
expect(wrapper.contains('.van-popup__close-icon')).toBeFalsy(); expect(wrapper.find('.van-popup__close-icon').exists()).toBeFalsy();
}); });
test('allow-same-day prop', async () => { test('allow-same-day prop', async () => {
const select = jest.fn(); const onSelect = jest.fn();
const wrapper = mount(Calendar, { const wrapper = mount(Calendar, {
props: { props: {
type: 'range', type: 'range',
minDate, minDate,
maxDate, maxDate,
poppable: false, poppable: false,
}, lazyRender: false,
listeners: { onSelect,
select,
}, },
}); });
await later(); await later();
const days = wrapper.findAll('.van-calendar__day'); const days = wrapper.findAll('.van-calendar__day');
days.at(9).trigger('click'); days[9].trigger('click');
days.at(9).trigger('click'); days[9].trigger('click');
expect(select).toHaveBeenLastCalledWith([minDate, null]); expect(onSelect).toHaveBeenLastCalledWith([minDate]);
wrapper.setProps({ await wrapper.setProps({
allowSameDay: true, allowSameDay: true,
}); });
days.at(9).trigger('click'); days[9].trigger('click');
expect(select).toHaveBeenLastCalledWith([minDate, minDate]); expect(onSelect).toHaveBeenLastCalledWith([minDate, minDate]);
}); });
test('min-date after current time', () => { test('min-date after current time', () => {
@ -148,11 +157,14 @@ test('min-date after current time', () => {
poppable: false, poppable: false,
minDate: new Date(2200, 0, 1), minDate: new Date(2200, 0, 1),
maxDate: new Date(2200, 0, 2), maxDate: new Date(2200, 0, 2),
lazyRender: false,
}, },
}); });
wrapper.find('.van-calendar__confirm').trigger('click'); wrapper.find('.van-calendar__confirm').trigger('click');
expect(formatDate(wrapper.emitted('confirm')[0][0])).toEqual('2200/1/1'); expect(wrapper.emitted<[Date]>('confirm')![0][0]).toEqual(
new Date(2200, 0, 1)
);
}); });
test('min-date before current time', () => { test('min-date before current time', () => {
@ -161,11 +173,14 @@ test('min-date before current time', () => {
poppable: false, poppable: false,
minDate: new Date(1800, 0, 1), minDate: new Date(1800, 0, 1),
maxDate: new Date(1800, 0, 2), maxDate: new Date(1800, 0, 2),
lazyRender: false,
}, },
}); });
wrapper.find('.van-calendar__confirm').trigger('click'); wrapper.find('.van-calendar__confirm').trigger('click');
expect(formatDate(wrapper.emitted('confirm')[0][0])).toEqual('1800/1/2'); expect(wrapper.emitted<[Date]>('confirm')![0][0]).toEqual(
new Date(1800, 0, 2)
);
}); });
test('lazy-render prop', () => { test('lazy-render prop', () => {
@ -184,10 +199,10 @@ test('lazy-render prop', () => {
test('month-show event', async () => { test('month-show event', async () => {
const wrapper = mount(Calendar, { const wrapper = mount(Calendar, {
props: { props: {
value: true, show: true,
}, },
}); });
await later(); await later(100);
expect(wrapper.emitted('month-show')).toBeTruthy(); expect(wrapper.emitted('month-show')).toBeTruthy();
}); });
@ -200,12 +215,13 @@ test('first day of week', async () => {
minDate: new Date(2020, 7, 1), minDate: new Date(2020, 7, 1),
maxDate: new Date(2020, 7, 30), maxDate: new Date(2020, 7, 30),
firstDayOfWeek: 2, firstDayOfWeek: 2,
lazyRender: false,
}, },
}); });
await later(); await later();
expect(wrapper.find('.van-calendar__weekdays').text()[0]).toEqual('二'); expect(wrapper.findAll('.van-calendar__weekday')[0].text()).toEqual('Tue');
const day = wrapper.find( const day = wrapper.find(
'.van-calendar__month:first-of-type .van-calendar__day' '.van-calendar__month:first-of-type .van-calendar__day'
@ -222,16 +238,17 @@ test('readonly prop', async () => {
maxDate, maxDate,
readonly: true, readonly: true,
poppable: false, poppable: false,
lazyRender: false,
}, },
}); });
await later(); await later();
const days = wrapper.findAll('.van-calendar__day'); const days = wrapper.findAll('.van-calendar__day');
days.at(13).trigger('click'); days[13].trigger('click');
expect(wrapper.emitted('select')).toBeFalsy(); expect(wrapper.emitted('select')).toBeFalsy();
wrapper.setProps({ readonly: false }); await wrapper.setProps({ readonly: false });
days.at(13).trigger('click'); days[13].trigger('click');
expect(wrapper.emitted('select')).toBeTruthy(); expect(wrapper.emitted('select')).toBeTruthy();
}); });

View File

@ -1,19 +0,0 @@
export const now = new Date();
export const minDate = new Date(2010, 0, 10);
export const maxDate = new Date(2010, 0, 20);
export function formatDate(date) {
if (date) {
return `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`;
}
return '';
}
export function formatRange([start, end]) {
return `${formatDate(start)}-${formatDate(end)}`;
}
export function formatMultiple(dates) {
return dates.map(formatDate).join(',');
}

View File

@ -0,0 +1,3 @@
export const now = new Date(new Date().setHours(0, 0, 0, 0));
export const minDate = new Date(2010, 0, 10);
export const maxDate = new Date(2010, 0, 20);