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.8 KiB

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