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.

167 lines
5.9 KiB

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