index.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. import { shallowMount } from '@vue/test-utils'
  2. import Disk from '../index'
  3. import { diskValidator } from '@Compute/utils/createServer'
  4. import { isRequired } from '@/utils/validate'
  5. import i18n from '@/locales'
  6. let decorator = null
  7. let typesMap = null
  8. let elements = null
  9. beforeEach(() => {
  10. elements = ['mount-point', 'snapshot', 'schedtag']
  11. decorator = {
  12. type: [
  13. 'dataDiskTypes',
  14. {
  15. rules: [
  16. { validator: isRequired(), message: i18n.t('compute.text_121') },
  17. ],
  18. },
  19. ],
  20. size: [
  21. 'dataDiskSizes',
  22. {
  23. rules: [
  24. { required: true, message: i18n.t('compute.text_122') },
  25. ],
  26. },
  27. ],
  28. schedtag: [
  29. 'dataDiskSchedtags',
  30. {
  31. validateTrigger: ['change', 'blur'],
  32. rules: [{
  33. required: true,
  34. message: i18n.t('compute.text_123'),
  35. }],
  36. },
  37. ],
  38. policy: [
  39. 'dataDiskPolicys',
  40. {
  41. validateTrigger: ['blur', 'change'],
  42. rules: [{
  43. required: true,
  44. message: i18n.t('compute.text_123'),
  45. }],
  46. },
  47. ],
  48. snapshot: [
  49. 'dataDiskSnapshots',
  50. {
  51. validateTrigger: ['blur', 'change'],
  52. rules: [{
  53. required: true,
  54. message: i18n.t('compute.text_124'),
  55. }],
  56. },
  57. ],
  58. filetype: [
  59. 'dataDiskFiletypes',
  60. {
  61. validateTrigger: ['blur', 'change'],
  62. rules: [{
  63. required: true,
  64. message: i18n.t('compute.text_125'),
  65. }],
  66. },
  67. ],
  68. mountPath: [
  69. 'dataDiskMountPaths',
  70. {
  71. validateTrigger: ['blur', 'change'],
  72. rules: [{
  73. required: true,
  74. message: i18n.t('compute.text_126'),
  75. }, {
  76. validator: diskValidator,
  77. }],
  78. },
  79. ],
  80. }
  81. typesMap = {
  82. local: {
  83. label: i18n.t('compute.text_70'),
  84. key: 'local',
  85. min: 1,
  86. max: 3072,
  87. default: true,
  88. sysMin: 30,
  89. sysMax: 500,
  90. unCreateCloud: true,
  91. },
  92. rbd: {
  93. label: 'Ceph RBD',
  94. key: 'rbd',
  95. min: 1,
  96. max: 3072,
  97. sysMin: 30,
  98. sysMax: 500,
  99. },
  100. }
  101. })
  102. describe('Disk', () => {
  103. it('check disk minSize >= snapshot size', () => {
  104. const wrapper = shallowMount(Disk, {
  105. data () {
  106. return {
  107. showSchedtag: false,
  108. showMountpoint: false,
  109. showSnapshot: false,
  110. snapshotObj: {
  111. size: 51200,
  112. name: 'test',
  113. id: 1,
  114. },
  115. }
  116. },
  117. propsData: {
  118. elements,
  119. decorator,
  120. typesMap,
  121. min: 30,
  122. max: 500,
  123. },
  124. })
  125. expect(wrapper.vm.minSize).toBeGreaterThanOrEqual(51200 / 1024)
  126. expect(wrapper.vm.$el).toMatchSnapshot()
  127. })
  128. it('check disk minSize >= min size', () => {
  129. const min = 60
  130. const wrapper = shallowMount(Disk, {
  131. data () {
  132. return {
  133. showSchedtag: false,
  134. showMountpoint: false,
  135. showSnapshot: false,
  136. snapshotObj: {
  137. size: 51200,
  138. name: 'test',
  139. id: 1,
  140. },
  141. }
  142. },
  143. propsData: {
  144. elements,
  145. decorator,
  146. typesMap,
  147. min,
  148. max: 500,
  149. },
  150. })
  151. expect(wrapper.vm.minSize).toBeGreaterThanOrEqual(min)
  152. expect(wrapper.vm.$el).toMatchSnapshot()
  153. })
  154. })