You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

166 lines
5.1 KiB

  1. odoo.define_section('web_readonly_bypass', ['web_readonly_bypass'], function(test) {
  2. "use strict";
  3. test('ignore_readonly', function(assert, ro_bypass){
  4. var data = {};
  5. var mode_create = true;
  6. var options = {};
  7. var context = {};
  8. ro_bypass.ignore_readonly(data, options, mode_create, context);
  9. assert.deepEqual(data,
  10. {},
  11. "Empty context and options mode create"
  12. );
  13. mode_create = false;
  14. data = {};
  15. ro_bypass.ignore_readonly(data, options, mode_create, context);
  16. assert.deepEqual(data,
  17. {},
  18. "Empty context and options mode write"
  19. );
  20. mode_create = false;
  21. data = {};
  22. context = {'readonly_by_pass': true};
  23. options = {'readonly_fields': {'field_1': 'va1-1',
  24. 'field_2': false,
  25. 'field_3': 'val-3'}};
  26. ro_bypass.ignore_readonly(data, options, mode_create, context);
  27. assert.deepEqual(data,
  28. {'field_1': 'va1-1', 'field_2': false, 'field_3': 'val-3'},
  29. "all fields mode write"
  30. );
  31. mode_create = true;
  32. data = {};
  33. context = {'readonly_by_pass': true};
  34. options = {'readonly_fields': {'field_1': 'va1-1',
  35. 'field_2': false,
  36. 'field_3': 'val-3'}};
  37. ro_bypass.ignore_readonly(data, options, mode_create, context);
  38. assert.deepEqual(data,
  39. {'field_1': 'va1-1', 'field_3': 'val-3'},
  40. "all fields mode create (false value are escaped)"
  41. );
  42. mode_create = true;
  43. data = {};
  44. context = {};
  45. options = {'readonly_fields': {'field_1': 'va1-1',
  46. 'field_2': false,
  47. 'field_3': 'val-3'}};
  48. ro_bypass.ignore_readonly(data, options, mode_create, context);
  49. assert.deepEqual(data,
  50. {},
  51. "without context, default, we won't save readonly fields"
  52. );
  53. });
  54. test('retrieve_readonly_by_pass_fields', ['web_readonly_bypass'], function(assert, ro_bypass){
  55. var context = {'readonly_by_pass': true}
  56. var options = {'readonly_fields': {'field_1': 'va1-1',
  57. 'field_2': 'val-2',
  58. 'field_3': 'val-3'}};
  59. assert.deepEqual(
  60. ro_bypass.retrieve_readonly_by_pass_fields(
  61. options, context),
  62. {'field_1': 'va1-1', 'field_2': 'val-2', 'field_3': 'val-3'},
  63. "All fields should be accepted!"
  64. );
  65. context = {'readonly_by_pass': ['field_1', 'field_3']};
  66. assert.deepEqual(
  67. ro_bypass.retrieve_readonly_by_pass_fields(
  68. options, context),
  69. {'field_1': 'va1-1','field_3': 'val-3'},
  70. "two field s1"
  71. );
  72. context = {'readonly_by_pass': ['field_1',]};
  73. assert.deepEqual(
  74. ro_bypass.retrieve_readonly_by_pass_fields(
  75. options, context),
  76. {'field_1': 'va1-1'},
  77. "Only field 1"
  78. );
  79. context = {'readonly_by_pass': []};
  80. assert.deepEqual(
  81. ro_bypass.retrieve_readonly_by_pass_fields(
  82. options, context),
  83. {},
  84. "Empty context field"
  85. );
  86. context = null;
  87. assert.deepEqual(
  88. ro_bypass.retrieve_readonly_by_pass_fields(
  89. options, context),
  90. {},
  91. "Null context"
  92. );
  93. context = false;
  94. assert.deepEqual(
  95. ro_bypass.retrieve_readonly_by_pass_fields(
  96. options, context),
  97. {},
  98. "false context"
  99. );
  100. context = {'readonly_by_pass': true}
  101. options = {'readonly_fields': {'field_1': 'va1-1'}};
  102. assert.deepEqual(
  103. ro_bypass.retrieve_readonly_by_pass_fields(
  104. options, context),
  105. {'field_1': 'va1-1'},
  106. "Only one option"
  107. );
  108. options = {'readonly_fields': {}};
  109. assert.deepEqual(
  110. ro_bypass.retrieve_readonly_by_pass_fields(
  111. options, context),
  112. {},
  113. "Empty readonly_fields option"
  114. );
  115. options = {};
  116. assert.deepEqual(
  117. ro_bypass.retrieve_readonly_by_pass_fields(
  118. options, context),
  119. {},
  120. "Empty option"
  121. );
  122. options = null;
  123. assert.deepEqual(
  124. ro_bypass.retrieve_readonly_by_pass_fields(
  125. options, context),
  126. {},
  127. "null option"
  128. );
  129. options = false;
  130. assert.deepEqual(
  131. ro_bypass.retrieve_readonly_by_pass_fields(
  132. options, context),
  133. {},
  134. "false option"
  135. );
  136. context = false;
  137. assert.deepEqual(
  138. ro_bypass.retrieve_readonly_by_pass_fields(
  139. options, context),
  140. {},
  141. "false option and false context"
  142. );
  143. });
  144. });