core_workflow_examples.rb 49 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682
  1. # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. RSpec.shared_examples 'core workflow' do
  3. let(:field_name) { SecureRandom.uuid }
  4. let(:screens) do
  5. {
  6. create_middle: {
  7. '-all-' => {
  8. shown: true,
  9. required: false,
  10. },
  11. },
  12. create: {
  13. '-all-' => {
  14. shown: true,
  15. required: false,
  16. },
  17. },
  18. edit: {
  19. '-all-' => {
  20. shown: true,
  21. required: false,
  22. },
  23. },
  24. }
  25. end
  26. describe 'modify input attribute', authenticated_as: :authenticate, db_strategy: :reset do
  27. def authenticate
  28. create(:object_manager_attribute_text, object_name: object_name, name: field_name, display: field_name, screens: screens)
  29. ObjectManager::Attribute.migration_execute
  30. true
  31. end
  32. describe 'action - show' do
  33. before do
  34. create(:core_workflow,
  35. object: object_name,
  36. perform: {
  37. "#{object_name.downcase}.#{field_name}": {
  38. operator: 'show',
  39. show: 'true'
  40. },
  41. })
  42. end
  43. it 'does perform' do
  44. before_it.call
  45. expect(page).to have_selector("input[name='#{field_name}']")
  46. end
  47. end
  48. describe 'action - hide' do
  49. before do
  50. create(:core_workflow,
  51. object: object_name,
  52. perform: {
  53. "#{object_name.downcase}.#{field_name}": {
  54. operator: 'hide',
  55. hide: 'true'
  56. },
  57. })
  58. end
  59. it 'does perform' do
  60. before_it.call
  61. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-hidden", visible: :hidden)
  62. end
  63. end
  64. describe 'action - remove' do
  65. before do
  66. create(:core_workflow,
  67. object: object_name,
  68. perform: {
  69. "#{object_name.downcase}.#{field_name}": {
  70. operator: 'remove',
  71. remove: 'true'
  72. },
  73. })
  74. end
  75. it 'does perform' do
  76. before_it.call
  77. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-removed", visible: :hidden)
  78. end
  79. end
  80. describe 'action - set_optional' do
  81. before do
  82. create(:core_workflow,
  83. object: object_name,
  84. perform: {
  85. "#{object_name.downcase}.#{field_name}": {
  86. operator: 'set_optional',
  87. set_optional: 'true'
  88. },
  89. })
  90. end
  91. it 'does perform' do
  92. before_it.call
  93. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_no_text('*')
  94. end
  95. end
  96. describe 'action - set_mandatory' do
  97. before do
  98. create(:core_workflow,
  99. object: object_name,
  100. perform: {
  101. "#{object_name.downcase}.#{field_name}": {
  102. operator: 'set_mandatory',
  103. set_mandatory: 'true'
  104. },
  105. })
  106. end
  107. it 'does perform' do
  108. before_it.call
  109. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_text('*')
  110. end
  111. end
  112. describe 'action - unset_readonly' do
  113. before do
  114. create(:core_workflow,
  115. object: object_name,
  116. perform: {
  117. "#{object_name.downcase}.#{field_name}": {
  118. operator: 'unset_readonly',
  119. unset_readonly: 'true'
  120. },
  121. })
  122. end
  123. it 'does perform' do
  124. before_it.call
  125. expect(page).to have_no_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  126. end
  127. end
  128. describe 'action - set_readonly' do
  129. before do
  130. create(:core_workflow,
  131. object: object_name,
  132. perform: {
  133. "#{object_name.downcase}.#{field_name}": {
  134. operator: 'set_readonly',
  135. set_readonly: 'true'
  136. },
  137. })
  138. end
  139. it 'does perform' do
  140. before_it.call
  141. expect(page).to have_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  142. end
  143. end
  144. describe 'action - fill_in' do
  145. before do
  146. create(:core_workflow,
  147. object: object_name,
  148. perform: {
  149. "#{object_name.downcase}.#{field_name}": {
  150. operator: 'fill_in',
  151. fill_in: '4cddb2twza'
  152. },
  153. })
  154. end
  155. it 'does perform' do
  156. before_it.call
  157. expect(page).to have_field(field_name, with: '4cddb2twza')
  158. end
  159. end
  160. describe 'action - fill_in_empty' do
  161. describe 'with match' do
  162. before do
  163. create(:core_workflow,
  164. object: object_name,
  165. perform: {
  166. "#{object_name.downcase}.#{field_name}": {
  167. operator: 'fill_in_empty',
  168. fill_in_empty: '9999'
  169. },
  170. })
  171. end
  172. it 'does perform' do
  173. before_it.call
  174. expect(page).to have_field(field_name, with: '9999')
  175. end
  176. end
  177. describe 'without match' do
  178. before do
  179. create(:core_workflow,
  180. object: object_name,
  181. perform: {
  182. "#{object_name.downcase}.#{field_name}": {
  183. operator: 'fill_in',
  184. fill_in: '4cddb2twza'
  185. },
  186. })
  187. create(:core_workflow,
  188. object: object_name,
  189. perform: {
  190. "#{object_name.downcase}.#{field_name}": {
  191. operator: 'fill_in_empty',
  192. fill_in_empty: '9999'
  193. },
  194. })
  195. end
  196. it 'does perform' do
  197. before_it.call
  198. expect(page).to have_no_field(field_name, with: '9999')
  199. end
  200. end
  201. end
  202. end
  203. describe 'modify textarea attribute', authenticated_as: :authenticate, db_strategy: :reset do
  204. def authenticate
  205. create(:object_manager_attribute_textarea, object_name: object_name, name: field_name, display: field_name, screens: screens)
  206. ObjectManager::Attribute.migration_execute
  207. true
  208. end
  209. describe 'action - show' do
  210. before do
  211. create(:core_workflow,
  212. object: object_name,
  213. perform: {
  214. "#{object_name.downcase}.#{field_name}": {
  215. operator: 'show',
  216. show: 'true'
  217. },
  218. })
  219. end
  220. it 'does perform' do
  221. before_it.call
  222. expect(page).to have_selector("textarea[name='#{field_name}']")
  223. end
  224. end
  225. describe 'action - hide' do
  226. before do
  227. create(:core_workflow,
  228. object: object_name,
  229. perform: {
  230. "#{object_name.downcase}.#{field_name}": {
  231. operator: 'hide',
  232. hide: 'true'
  233. },
  234. })
  235. end
  236. it 'does perform' do
  237. before_it.call
  238. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-hidden", visible: :hidden)
  239. end
  240. end
  241. describe 'action - remove' do
  242. before do
  243. create(:core_workflow,
  244. object: object_name,
  245. perform: {
  246. "#{object_name.downcase}.#{field_name}": {
  247. operator: 'remove',
  248. remove: 'true'
  249. },
  250. })
  251. end
  252. it 'does perform' do
  253. before_it.call
  254. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-removed", visible: :hidden)
  255. end
  256. end
  257. describe 'action - set_optional' do
  258. before do
  259. create(:core_workflow,
  260. object: object_name,
  261. perform: {
  262. "#{object_name.downcase}.#{field_name}": {
  263. operator: 'set_optional',
  264. set_optional: 'true'
  265. },
  266. })
  267. end
  268. it 'does perform' do
  269. before_it.call
  270. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_no_text('*')
  271. end
  272. end
  273. describe 'action - set_mandatory' do
  274. before do
  275. create(:core_workflow,
  276. object: object_name,
  277. perform: {
  278. "#{object_name.downcase}.#{field_name}": {
  279. operator: 'set_mandatory',
  280. set_mandatory: 'true'
  281. },
  282. })
  283. end
  284. it 'does perform' do
  285. before_it.call
  286. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_text('*')
  287. end
  288. end
  289. describe 'action - unset_readonly' do
  290. before do
  291. create(:core_workflow,
  292. object: object_name,
  293. perform: {
  294. "#{object_name.downcase}.#{field_name}": {
  295. operator: 'unset_readonly',
  296. unset_readonly: 'true'
  297. },
  298. })
  299. end
  300. it 'does perform' do
  301. before_it.call
  302. expect(page).to have_no_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  303. end
  304. end
  305. describe 'action - set_readonly' do
  306. before do
  307. create(:core_workflow,
  308. object: object_name,
  309. perform: {
  310. "#{object_name.downcase}.#{field_name}": {
  311. operator: 'set_readonly',
  312. set_readonly: 'true'
  313. },
  314. })
  315. end
  316. it 'does perform' do
  317. before_it.call
  318. expect(page).to have_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  319. end
  320. end
  321. describe 'action - fill_in' do
  322. before do
  323. create(:core_workflow,
  324. object: object_name,
  325. perform: {
  326. "#{object_name.downcase}.#{field_name}": {
  327. operator: 'fill_in',
  328. fill_in: '4cddb2twza'
  329. },
  330. })
  331. end
  332. it 'does perform' do
  333. before_it.call
  334. expect(page).to have_field(field_name, with: '4cddb2twza')
  335. end
  336. end
  337. describe 'action - fill_in_empty' do
  338. describe 'with match' do
  339. before do
  340. create(:core_workflow,
  341. object: object_name,
  342. perform: {
  343. "#{object_name.downcase}.#{field_name}": {
  344. operator: 'fill_in_empty',
  345. fill_in_empty: '9999'
  346. },
  347. })
  348. end
  349. it 'does perform' do
  350. before_it.call
  351. expect(page).to have_field(field_name, with: '9999')
  352. end
  353. end
  354. describe 'without match' do
  355. before do
  356. create(:core_workflow,
  357. object: object_name,
  358. perform: {
  359. "#{object_name.downcase}.#{field_name}": {
  360. operator: 'fill_in',
  361. fill_in: '4cddb2twza'
  362. },
  363. })
  364. create(:core_workflow,
  365. object: object_name,
  366. perform: {
  367. "#{object_name.downcase}.#{field_name}": {
  368. operator: 'fill_in_empty',
  369. fill_in_empty: '9999'
  370. },
  371. })
  372. end
  373. it 'does perform' do
  374. before_it.call
  375. expect(page).to have_no_field(field_name, with: '9999')
  376. end
  377. end
  378. end
  379. end
  380. describe 'modify select attribute', authenticated_as: :authenticate, db_strategy: :reset do
  381. def authenticate
  382. create(:object_manager_attribute_select, object_name: object_name, name: field_name, display: field_name, screens: screens)
  383. ObjectManager::Attribute.migration_execute
  384. true
  385. end
  386. describe 'action - show' do
  387. before do
  388. create(:core_workflow,
  389. object: object_name,
  390. perform: {
  391. "#{object_name.downcase}.#{field_name}": {
  392. operator: 'show',
  393. show: 'true'
  394. },
  395. })
  396. end
  397. it 'does perform' do
  398. before_it.call
  399. expect(page).to have_selector("select[name='#{field_name}']")
  400. end
  401. end
  402. describe 'action - hide' do
  403. before do
  404. create(:core_workflow,
  405. object: object_name,
  406. perform: {
  407. "#{object_name.downcase}.#{field_name}": {
  408. operator: 'hide',
  409. hide: 'true'
  410. },
  411. })
  412. end
  413. it 'does perform' do
  414. before_it.call
  415. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-hidden", visible: :hidden)
  416. end
  417. end
  418. describe 'action - remove' do
  419. before do
  420. create(:core_workflow,
  421. object: object_name,
  422. perform: {
  423. "#{object_name.downcase}.#{field_name}": {
  424. operator: 'remove',
  425. remove: 'true'
  426. },
  427. })
  428. end
  429. it 'does perform' do
  430. before_it.call
  431. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-removed", visible: :hidden)
  432. end
  433. end
  434. describe 'action - set_optional' do
  435. before do
  436. create(:core_workflow,
  437. object: object_name,
  438. perform: {
  439. "#{object_name.downcase}.#{field_name}": {
  440. operator: 'set_optional',
  441. set_optional: 'true'
  442. },
  443. })
  444. end
  445. it 'does perform' do
  446. before_it.call
  447. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_no_text('*')
  448. end
  449. end
  450. describe 'action - set_mandatory' do
  451. before do
  452. create(:core_workflow,
  453. object: object_name,
  454. perform: {
  455. "#{object_name.downcase}.#{field_name}": {
  456. operator: 'set_mandatory',
  457. set_mandatory: 'true'
  458. },
  459. })
  460. end
  461. it 'does perform' do
  462. before_it.call
  463. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_text('*')
  464. end
  465. end
  466. describe 'action - unset_readonly' do
  467. before do
  468. create(:core_workflow,
  469. object: object_name,
  470. perform: {
  471. "#{object_name.downcase}.#{field_name}": {
  472. operator: 'unset_readonly',
  473. unset_readonly: 'true'
  474. },
  475. })
  476. end
  477. it 'does perform' do
  478. before_it.call
  479. expect(page).to have_no_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  480. end
  481. end
  482. describe 'action - set_readonly' do
  483. before do
  484. create(:core_workflow,
  485. object: object_name,
  486. perform: {
  487. "#{object_name.downcase}.#{field_name}": {
  488. operator: 'set_readonly',
  489. set_readonly: 'true'
  490. },
  491. })
  492. end
  493. it 'does perform' do
  494. before_it.call
  495. expect(page).to have_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  496. end
  497. end
  498. describe 'action - restrict values' do
  499. before do
  500. create(:core_workflow,
  501. object: object_name,
  502. perform: {
  503. "#{object_name.downcase}.#{field_name}": {
  504. operator: 'set_fixed_to',
  505. set_fixed_to: %w[key_1 key_3]
  506. },
  507. })
  508. end
  509. it 'does perform' do
  510. before_it.call
  511. expect(page).to have_selector("select[name='#{field_name}'] option[value='key_1']")
  512. expect(page).to have_no_selector("select[name='#{field_name}'] option[value='key_2']")
  513. expect(page).to have_selector("select[name='#{field_name}'] option[value='key_3']")
  514. end
  515. end
  516. describe 'action - select' do
  517. before do
  518. create(:core_workflow,
  519. object: object_name,
  520. perform: {
  521. "#{object_name.downcase}.#{field_name}": {
  522. operator: 'select',
  523. select: ['key_3']
  524. },
  525. })
  526. end
  527. it 'does perform' do
  528. before_it.call
  529. expect(page).to have_selector("select[name='#{field_name}'] option[value='key_3'][selected]")
  530. end
  531. end
  532. describe 'action - auto select' do
  533. before do
  534. create(:core_workflow,
  535. object: object_name,
  536. perform: {
  537. "#{object_name.downcase}.#{field_name}": {
  538. operator: 'set_fixed_to',
  539. set_fixed_to: ['', 'key_3'],
  540. },
  541. })
  542. create(:core_workflow,
  543. object: object_name,
  544. perform: {
  545. "#{object_name.downcase}.#{field_name}": {
  546. operator: 'auto_select',
  547. auto_select: 'true',
  548. },
  549. })
  550. end
  551. it 'does perform' do
  552. before_it.call
  553. expect(page).to have_selector("select[name='#{field_name}'] option[value='key_3'][selected]")
  554. end
  555. end
  556. end
  557. describe 'modify multiselect attribute', authenticated_as: :authenticate, db_strategy: :reset do
  558. def authenticate
  559. create(:object_manager_attribute_multiselect, object_name: object_name, name: field_name, display: field_name, screens: screens)
  560. ObjectManager::Attribute.migration_execute
  561. true
  562. end
  563. describe 'action - show' do
  564. before do
  565. create(:core_workflow,
  566. object: object_name,
  567. perform: {
  568. "#{object_name.downcase}.#{field_name}": {
  569. operator: 'show',
  570. show: 'true'
  571. },
  572. })
  573. end
  574. it 'does perform' do
  575. before_it.call
  576. expect(page).to have_selector("select[name='#{field_name}']")
  577. end
  578. end
  579. describe 'action - hide' do
  580. before do
  581. create(:core_workflow,
  582. object: object_name,
  583. perform: {
  584. "#{object_name.downcase}.#{field_name}": {
  585. operator: 'hide',
  586. hide: 'true'
  587. },
  588. })
  589. end
  590. it 'does perform' do
  591. before_it.call
  592. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-hidden", visible: :hidden)
  593. end
  594. end
  595. describe 'action - remove' do
  596. before do
  597. create(:core_workflow,
  598. object: object_name,
  599. perform: {
  600. "#{object_name.downcase}.#{field_name}": {
  601. operator: 'remove',
  602. remove: 'true'
  603. },
  604. })
  605. end
  606. it 'does perform' do
  607. before_it.call
  608. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-removed", visible: :hidden)
  609. end
  610. end
  611. describe 'action - set_optional' do
  612. before do
  613. create(:core_workflow,
  614. object: object_name,
  615. perform: {
  616. "#{object_name.downcase}.#{field_name}": {
  617. operator: 'set_optional',
  618. set_optional: 'true'
  619. },
  620. })
  621. end
  622. it 'does perform' do
  623. before_it.call
  624. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_no_text('*')
  625. end
  626. end
  627. describe 'action - set_mandatory' do
  628. before do
  629. create(:core_workflow,
  630. object: object_name,
  631. perform: {
  632. "#{object_name.downcase}.#{field_name}": {
  633. operator: 'set_mandatory',
  634. set_mandatory: 'true'
  635. },
  636. })
  637. end
  638. it 'does perform' do
  639. before_it.call
  640. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_text('*')
  641. end
  642. end
  643. describe 'action - unset_readonly' do
  644. before do
  645. create(:core_workflow,
  646. object: object_name,
  647. perform: {
  648. "#{object_name.downcase}.#{field_name}": {
  649. operator: 'unset_readonly',
  650. unset_readonly: 'true'
  651. },
  652. })
  653. end
  654. it 'does perform' do
  655. before_it.call
  656. expect(page).to have_no_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  657. end
  658. end
  659. describe 'action - set_readonly' do
  660. before do
  661. create(:core_workflow,
  662. object: object_name,
  663. perform: {
  664. "#{object_name.downcase}.#{field_name}": {
  665. operator: 'set_readonly',
  666. set_readonly: 'true'
  667. },
  668. })
  669. end
  670. it 'does perform' do
  671. before_it.call
  672. expect(page).to have_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  673. end
  674. end
  675. describe 'action - restrict values' do
  676. before do
  677. create(:core_workflow,
  678. object: object_name,
  679. perform: {
  680. "#{object_name.downcase}.#{field_name}": {
  681. operator: 'set_fixed_to',
  682. set_fixed_to: %w[key_1 key_3]
  683. },
  684. })
  685. end
  686. it 'does perform' do
  687. before_it.call
  688. expect(page).to have_selector("select[name='#{field_name}'] option[value='key_1']")
  689. expect(page).to have_no_selector("select[name='#{field_name}'] option[value='key_2']")
  690. expect(page).to have_selector("select[name='#{field_name}'] option[value='key_3']")
  691. end
  692. end
  693. describe 'action - select' do
  694. before do
  695. create(:core_workflow,
  696. object: object_name,
  697. perform: {
  698. "#{object_name.downcase}.#{field_name}": {
  699. operator: 'select',
  700. select: ['key_3']
  701. },
  702. })
  703. end
  704. it 'does perform' do
  705. before_it.call
  706. wait.until { page.find("select[name='#{field_name}']").value == ['key_3'] }
  707. expect(page.find("select[name='#{field_name}']").value).to eq(['key_3'])
  708. end
  709. end
  710. describe 'action - auto select' do
  711. before do
  712. create(:core_workflow,
  713. object: object_name,
  714. perform: {
  715. "#{object_name.downcase}.#{field_name}": {
  716. operator: 'set_fixed_to',
  717. set_fixed_to: ['', 'key_3'],
  718. },
  719. })
  720. create(:core_workflow,
  721. object: object_name,
  722. perform: {
  723. "#{object_name.downcase}.#{field_name}": {
  724. operator: 'auto_select',
  725. auto_select: 'true',
  726. },
  727. })
  728. end
  729. it 'does perform' do
  730. before_it.call
  731. wait.until { page.find("select[name='#{field_name}']").value == ['key_3'] }
  732. expect(page.find("select[name='#{field_name}']").value).to eq(['key_3'])
  733. end
  734. end
  735. end
  736. describe 'modify boolean attribute', authenticated_as: :authenticate, db_strategy: :reset do
  737. def authenticate
  738. create(:object_manager_attribute_boolean, object_name: object_name, name: field_name, display: field_name, screens: screens)
  739. ObjectManager::Attribute.migration_execute
  740. true
  741. end
  742. describe 'action - show' do
  743. before do
  744. create(:core_workflow,
  745. object: object_name,
  746. perform: {
  747. "#{object_name.downcase}.#{field_name}": {
  748. operator: 'show',
  749. show: 'true'
  750. },
  751. })
  752. end
  753. it 'does perform' do
  754. before_it.call
  755. expect(page).to have_selector("select[name='#{field_name}']")
  756. end
  757. end
  758. describe 'action - hide' do
  759. before do
  760. create(:core_workflow,
  761. object: object_name,
  762. perform: {
  763. "#{object_name.downcase}.#{field_name}": {
  764. operator: 'hide',
  765. hide: 'true'
  766. },
  767. })
  768. end
  769. it 'does perform' do
  770. before_it.call
  771. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-hidden", visible: :hidden)
  772. end
  773. end
  774. describe 'action - remove' do
  775. before do
  776. create(:core_workflow,
  777. object: object_name,
  778. perform: {
  779. "#{object_name.downcase}.#{field_name}": {
  780. operator: 'remove',
  781. remove: 'true'
  782. },
  783. })
  784. end
  785. it 'does perform' do
  786. before_it.call
  787. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-removed", visible: :hidden)
  788. end
  789. end
  790. describe 'action - set_optional' do
  791. before do
  792. create(:core_workflow,
  793. object: object_name,
  794. perform: {
  795. "#{object_name.downcase}.#{field_name}": {
  796. operator: 'set_optional',
  797. set_optional: 'true'
  798. },
  799. })
  800. end
  801. it 'does perform' do
  802. before_it.call
  803. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_no_text('*')
  804. end
  805. end
  806. describe 'action - set_mandatory' do
  807. before do
  808. create(:core_workflow,
  809. object: object_name,
  810. perform: {
  811. "#{object_name.downcase}.#{field_name}": {
  812. operator: 'set_mandatory',
  813. set_mandatory: 'true'
  814. },
  815. })
  816. end
  817. it 'does perform' do
  818. before_it.call
  819. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_text('*')
  820. end
  821. end
  822. describe 'action - restrict values' do
  823. before do
  824. create(:core_workflow,
  825. object: object_name,
  826. perform: {
  827. "#{object_name.downcase}.#{field_name}": {
  828. operator: 'set_fixed_to',
  829. set_fixed_to: %w[false]
  830. },
  831. })
  832. end
  833. it 'does perform' do
  834. before_it.call
  835. expect(page).to have_selector("select[name='#{field_name}'] option[value='false']")
  836. expect(page).to have_no_selector("select[name='#{field_name}'] option[value='true']")
  837. end
  838. end
  839. describe 'action - select' do
  840. before do
  841. create(:core_workflow,
  842. object: object_name,
  843. perform: {
  844. "#{object_name.downcase}.#{field_name}": {
  845. operator: 'select',
  846. select: ['true']
  847. },
  848. })
  849. end
  850. it 'does perform' do
  851. before_it.call
  852. expect(page).to have_selector("select[name='#{field_name}'] option[value='true'][selected]")
  853. end
  854. end
  855. describe 'action - auto select' do
  856. before do
  857. create(:core_workflow,
  858. object: object_name,
  859. perform: {
  860. "#{object_name.downcase}.#{field_name}": {
  861. operator: 'set_fixed_to',
  862. set_fixed_to: ['', 'false'],
  863. },
  864. })
  865. create(:core_workflow,
  866. object: object_name,
  867. perform: {
  868. "#{object_name.downcase}.#{field_name}": {
  869. operator: 'auto_select',
  870. auto_select: 'true',
  871. },
  872. })
  873. end
  874. it 'does perform' do
  875. before_it.call
  876. expect(page).to have_selector("select[name='#{field_name}'] option[value='false'][selected]")
  877. end
  878. end
  879. end
  880. describe 'modify tree select attribute', authenticated_as: :authenticate, db_strategy: :reset do
  881. def authenticate
  882. create(:object_manager_attribute_tree_select, object_name: object_name, name: field_name, display: field_name, screens: screens)
  883. ObjectManager::Attribute.migration_execute
  884. true
  885. end
  886. describe 'action - show' do
  887. before do
  888. create(:core_workflow,
  889. object: object_name,
  890. perform: {
  891. "#{object_name.downcase}.#{field_name}": {
  892. operator: 'show',
  893. show: 'true'
  894. },
  895. })
  896. end
  897. it 'does perform' do
  898. before_it.call
  899. expect(page).to have_selector("input[name='#{field_name}']", visible: :all)
  900. end
  901. end
  902. describe 'action - hide' do
  903. before do
  904. create(:core_workflow,
  905. object: object_name,
  906. perform: {
  907. "#{object_name.downcase}.#{field_name}": {
  908. operator: 'hide',
  909. hide: 'true'
  910. },
  911. })
  912. end
  913. it 'does perform' do
  914. before_it.call
  915. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-hidden", visible: :all)
  916. end
  917. end
  918. describe 'action - remove' do
  919. before do
  920. create(:core_workflow,
  921. object: object_name,
  922. perform: {
  923. "#{object_name.downcase}.#{field_name}": {
  924. operator: 'remove',
  925. remove: 'true'
  926. },
  927. })
  928. end
  929. it 'does perform' do
  930. before_it.call
  931. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-removed", visible: :hidden)
  932. end
  933. end
  934. describe 'action - set_optional' do
  935. before do
  936. create(:core_workflow,
  937. object: object_name,
  938. perform: {
  939. "#{object_name.downcase}.#{field_name}": {
  940. operator: 'set_optional',
  941. set_optional: 'true'
  942. },
  943. })
  944. end
  945. it 'does perform' do
  946. before_it.call
  947. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_no_text('*')
  948. end
  949. end
  950. describe 'action - set_mandatory' do
  951. before do
  952. create(:core_workflow,
  953. object: object_name,
  954. perform: {
  955. "#{object_name.downcase}.#{field_name}": {
  956. operator: 'set_mandatory',
  957. set_mandatory: 'true'
  958. },
  959. })
  960. end
  961. it 'does perform' do
  962. before_it.call
  963. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_text('*')
  964. end
  965. end
  966. describe 'action - unset_readonly' do
  967. before do
  968. create(:core_workflow,
  969. object: object_name,
  970. perform: {
  971. "#{object_name.downcase}.#{field_name}": {
  972. operator: 'unset_readonly',
  973. unset_readonly: 'true'
  974. },
  975. })
  976. end
  977. it 'does perform' do
  978. before_it.call
  979. expect(page).to have_no_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  980. end
  981. end
  982. describe 'action - set_readonly' do
  983. before do
  984. create(:core_workflow,
  985. object: object_name,
  986. perform: {
  987. "#{object_name.downcase}.#{field_name}": {
  988. operator: 'set_readonly',
  989. set_readonly: 'true'
  990. },
  991. })
  992. end
  993. it 'does perform' do
  994. before_it.call
  995. expect(page).to have_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  996. end
  997. end
  998. describe 'action - restrict values' do
  999. before do
  1000. create(:core_workflow,
  1001. object: object_name,
  1002. perform: {
  1003. "#{object_name.downcase}.#{field_name}": {
  1004. operator: 'set_fixed_to',
  1005. set_fixed_to: ['Incident', 'Incident::Hardware', 'Incident::Hardware::Monitor']
  1006. },
  1007. })
  1008. end
  1009. it 'does perform' do
  1010. before_it.call
  1011. expect(page).to have_selector('span.searchableSelect-option-text', text: 'Incident', visible: :all)
  1012. expect(page).to have_selector('span.searchableSelect-option-text', text: 'Hardware', visible: :all)
  1013. expect(page).to have_selector('span.searchableSelect-option-text', text: 'Monitor', visible: :all)
  1014. expect(page).to have_no_selector('span.searchableSelect-option-text', text: 'Mouse', visible: :all)
  1015. expect(page).to have_no_selector('span.searchableSelect-option-text', text: 'Softwareproblem', visible: :all)
  1016. end
  1017. end
  1018. describe 'action - select' do
  1019. before do
  1020. create(:core_workflow,
  1021. object: object_name,
  1022. perform: {
  1023. "#{object_name.downcase}.#{field_name}": {
  1024. operator: 'select',
  1025. select: ['Incident::Hardware::Monitor']
  1026. },
  1027. })
  1028. end
  1029. it 'does perform' do
  1030. before_it.call
  1031. expect(page).to have_selector("input[name='#{field_name}'][value='Incident::Hardware::Monitor']", visible: :all)
  1032. end
  1033. end
  1034. describe 'action - auto select' do
  1035. before do
  1036. create(:core_workflow,
  1037. object: object_name,
  1038. perform: {
  1039. "#{object_name.downcase}.#{field_name}": {
  1040. operator: 'set_fixed_to',
  1041. set_fixed_to: ['', 'Incident'],
  1042. },
  1043. })
  1044. create(:core_workflow,
  1045. object: object_name,
  1046. perform: {
  1047. "#{object_name.downcase}.#{field_name}": {
  1048. operator: 'auto_select',
  1049. auto_select: 'true',
  1050. },
  1051. })
  1052. end
  1053. it 'does perform' do
  1054. before_it.call
  1055. expect(page).to have_selector("input[name='#{field_name}'][value='Incident']", visible: :all)
  1056. end
  1057. end
  1058. end
  1059. describe 'modify multi tree select attribute', authenticated_as: :authenticate, db_strategy: :reset do
  1060. def authenticate
  1061. create(:object_manager_attribute_multi_tree_select, object_name: object_name, name: field_name, display: field_name, screens: screens)
  1062. ObjectManager::Attribute.migration_execute
  1063. true
  1064. end
  1065. describe 'action - show' do
  1066. before do
  1067. create(:core_workflow,
  1068. object: object_name,
  1069. perform: {
  1070. "#{object_name.downcase}.#{field_name}": {
  1071. operator: 'show',
  1072. show: 'true'
  1073. },
  1074. })
  1075. end
  1076. it 'does perform' do
  1077. before_it.call
  1078. expect(page).to have_selector("input[name='#{field_name}_completion']", visible: :all)
  1079. end
  1080. end
  1081. describe 'action - hide' do
  1082. before do
  1083. create(:core_workflow,
  1084. object: object_name,
  1085. perform: {
  1086. "#{object_name.downcase}.#{field_name}": {
  1087. operator: 'hide',
  1088. hide: 'true'
  1089. },
  1090. })
  1091. end
  1092. it 'does perform' do
  1093. before_it.call
  1094. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-hidden", visible: :all)
  1095. end
  1096. end
  1097. describe 'action - remove' do
  1098. before do
  1099. create(:core_workflow,
  1100. object: object_name,
  1101. perform: {
  1102. "#{object_name.downcase}.#{field_name}": {
  1103. operator: 'remove',
  1104. remove: 'true'
  1105. },
  1106. })
  1107. end
  1108. it 'does perform' do
  1109. before_it.call
  1110. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-removed", visible: :hidden)
  1111. end
  1112. end
  1113. describe 'action - set_optional' do
  1114. before do
  1115. create(:core_workflow,
  1116. object: object_name,
  1117. perform: {
  1118. "#{object_name.downcase}.#{field_name}": {
  1119. operator: 'set_optional',
  1120. set_optional: 'true'
  1121. },
  1122. })
  1123. end
  1124. it 'does perform' do
  1125. before_it.call
  1126. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_no_text('*')
  1127. end
  1128. end
  1129. describe 'action - set_mandatory' do
  1130. before do
  1131. create(:core_workflow,
  1132. object: object_name,
  1133. perform: {
  1134. "#{object_name.downcase}.#{field_name}": {
  1135. operator: 'set_mandatory',
  1136. set_mandatory: 'true'
  1137. },
  1138. })
  1139. end
  1140. it 'does perform' do
  1141. before_it.call
  1142. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_text('*')
  1143. end
  1144. end
  1145. describe 'action - unset_readonly' do
  1146. before do
  1147. create(:core_workflow,
  1148. object: object_name,
  1149. perform: {
  1150. "#{object_name.downcase}.#{field_name}": {
  1151. operator: 'unset_readonly',
  1152. unset_readonly: 'true'
  1153. },
  1154. })
  1155. end
  1156. it 'does perform' do
  1157. before_it.call
  1158. expect(page).to have_no_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  1159. end
  1160. end
  1161. describe 'action - set_readonly' do
  1162. before do
  1163. create(:core_workflow,
  1164. object: object_name,
  1165. perform: {
  1166. "#{object_name.downcase}.#{field_name}": {
  1167. operator: 'set_readonly',
  1168. set_readonly: 'true'
  1169. },
  1170. })
  1171. end
  1172. it 'does perform' do
  1173. before_it.call
  1174. expect(page).to have_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  1175. end
  1176. end
  1177. describe 'action - restrict values' do
  1178. before do
  1179. create(:core_workflow,
  1180. object: object_name,
  1181. perform: {
  1182. "#{object_name.downcase}.#{field_name}": {
  1183. operator: 'set_fixed_to',
  1184. set_fixed_to: ['Incident', 'Incident::Hardware', 'Incident::Hardware::Monitor']
  1185. },
  1186. })
  1187. end
  1188. it 'does perform' do
  1189. before_it.call
  1190. expect(page).to have_selector('span.searchableSelect-option-text', text: 'Incident', visible: :all)
  1191. expect(page).to have_selector('span.searchableSelect-option-text', text: 'Hardware', visible: :all)
  1192. expect(page).to have_selector('span.searchableSelect-option-text', text: 'Monitor', visible: :all)
  1193. expect(page).to have_no_selector('span.searchableSelect-option-text', text: 'Mouse', visible: :all)
  1194. expect(page).to have_no_selector('span.searchableSelect-option-text', text: 'Softwareproblem', visible: :all)
  1195. end
  1196. end
  1197. describe 'action - select' do
  1198. before do
  1199. create(:core_workflow,
  1200. object: object_name,
  1201. perform: {
  1202. "#{object_name.downcase}.#{field_name}": {
  1203. operator: 'select',
  1204. select: ['Incident::Hardware::Monitor']
  1205. },
  1206. })
  1207. end
  1208. it 'does perform' do
  1209. before_it.call
  1210. expect(page).to have_selector('span.token-label', text: 'Incident › Hardware › Monitor')
  1211. end
  1212. end
  1213. describe 'action - auto select' do
  1214. before do
  1215. create(:core_workflow,
  1216. object: object_name,
  1217. perform: {
  1218. "#{object_name.downcase}.#{field_name}": {
  1219. operator: 'set_fixed_to',
  1220. set_fixed_to: ['', 'Incident'],
  1221. },
  1222. })
  1223. create(:core_workflow,
  1224. object: object_name,
  1225. perform: {
  1226. "#{object_name.downcase}.#{field_name}": {
  1227. operator: 'auto_select',
  1228. auto_select: 'true',
  1229. },
  1230. })
  1231. end
  1232. it 'does perform' do
  1233. before_it.call
  1234. expect(page).to have_selector('span.token-label', text: 'Incident')
  1235. end
  1236. end
  1237. end
  1238. describe 'modify date attribute', authenticated_as: :authenticate, db_strategy: :reset do
  1239. def authenticate
  1240. create(:object_manager_attribute_date, object_name: object_name, name: field_name, display: field_name, screens: screens)
  1241. ObjectManager::Attribute.migration_execute
  1242. true
  1243. end
  1244. describe 'action - show' do
  1245. before do
  1246. create(:core_workflow,
  1247. object: object_name,
  1248. perform: {
  1249. "#{object_name.downcase}.#{field_name}": {
  1250. operator: 'show',
  1251. show: 'true'
  1252. },
  1253. })
  1254. end
  1255. it 'does perform' do
  1256. before_it.call
  1257. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}']")
  1258. end
  1259. end
  1260. describe 'action - hide' do
  1261. before do
  1262. create(:core_workflow,
  1263. object: object_name,
  1264. perform: {
  1265. "#{object_name.downcase}.#{field_name}": {
  1266. operator: 'hide',
  1267. hide: 'true'
  1268. },
  1269. })
  1270. end
  1271. it 'does perform' do
  1272. before_it.call
  1273. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-hidden", visible: :hidden)
  1274. end
  1275. end
  1276. describe 'action - remove' do
  1277. before do
  1278. create(:core_workflow,
  1279. object: object_name,
  1280. perform: {
  1281. "#{object_name.downcase}.#{field_name}": {
  1282. operator: 'remove',
  1283. remove: 'true'
  1284. },
  1285. })
  1286. end
  1287. it 'does perform' do
  1288. before_it.call
  1289. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-removed", visible: :hidden)
  1290. end
  1291. end
  1292. describe 'action - set_optional' do
  1293. before do
  1294. create(:core_workflow,
  1295. object: object_name,
  1296. perform: {
  1297. "#{object_name.downcase}.#{field_name}": {
  1298. operator: 'set_optional',
  1299. set_optional: 'true'
  1300. },
  1301. })
  1302. end
  1303. it 'does perform' do
  1304. before_it.call
  1305. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_no_text('*')
  1306. end
  1307. end
  1308. describe 'action - set_mandatory' do
  1309. before do
  1310. create(:core_workflow,
  1311. object: object_name,
  1312. perform: {
  1313. "#{object_name.downcase}.#{field_name}": {
  1314. operator: 'set_mandatory',
  1315. set_mandatory: 'true'
  1316. },
  1317. })
  1318. end
  1319. it 'does perform' do
  1320. before_it.call
  1321. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_text('*')
  1322. end
  1323. end
  1324. describe 'action - unset_readonly' do
  1325. before do
  1326. create(:core_workflow,
  1327. object: object_name,
  1328. perform: {
  1329. "#{object_name.downcase}.#{field_name}": {
  1330. operator: 'unset_readonly',
  1331. unset_readonly: 'true'
  1332. },
  1333. })
  1334. end
  1335. it 'does perform' do
  1336. before_it.call
  1337. expect(page).to have_no_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  1338. end
  1339. end
  1340. describe 'action - set_readonly' do
  1341. before do
  1342. create(:core_workflow,
  1343. object: object_name,
  1344. perform: {
  1345. "#{object_name.downcase}.#{field_name}": {
  1346. operator: 'set_readonly',
  1347. set_readonly: 'true'
  1348. },
  1349. })
  1350. end
  1351. it 'does perform' do
  1352. before_it.call
  1353. expect(page).to have_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  1354. end
  1355. end
  1356. end
  1357. describe 'modify datetime attribute', authenticated_as: :authenticate, db_strategy: :reset do
  1358. def authenticate
  1359. create(:object_manager_attribute_datetime, object_name: object_name, name: field_name, display: field_name, screens: screens)
  1360. ObjectManager::Attribute.migration_execute
  1361. true
  1362. end
  1363. describe 'action - show' do
  1364. before do
  1365. create(:core_workflow,
  1366. object: object_name,
  1367. perform: {
  1368. "#{object_name.downcase}.#{field_name}": {
  1369. operator: 'show',
  1370. show: 'true'
  1371. },
  1372. })
  1373. end
  1374. it 'does perform' do
  1375. before_it.call
  1376. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}']")
  1377. end
  1378. end
  1379. describe 'action - hide' do
  1380. before do
  1381. create(:core_workflow,
  1382. object: object_name,
  1383. perform: {
  1384. "#{object_name.downcase}.#{field_name}": {
  1385. operator: 'hide',
  1386. hide: 'true'
  1387. },
  1388. })
  1389. end
  1390. it 'does perform' do
  1391. before_it.call
  1392. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-hidden", visible: :hidden)
  1393. end
  1394. end
  1395. describe 'action - remove' do
  1396. before do
  1397. create(:core_workflow,
  1398. object: object_name,
  1399. perform: {
  1400. "#{object_name.downcase}.#{field_name}": {
  1401. operator: 'remove',
  1402. remove: 'true'
  1403. },
  1404. })
  1405. end
  1406. it 'does perform' do
  1407. before_it.call
  1408. expect(page).to have_selector(".form-group[data-attribute-name='#{field_name}'].is-removed", visible: :hidden)
  1409. end
  1410. end
  1411. describe 'action - set_optional' do
  1412. before do
  1413. create(:core_workflow,
  1414. object: object_name,
  1415. perform: {
  1416. "#{object_name.downcase}.#{field_name}": {
  1417. operator: 'set_optional',
  1418. set_optional: 'true'
  1419. },
  1420. })
  1421. end
  1422. it 'does perform' do
  1423. before_it.call
  1424. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_no_text('*')
  1425. end
  1426. end
  1427. describe 'action - set_mandatory' do
  1428. before do
  1429. create(:core_workflow,
  1430. object: object_name,
  1431. perform: {
  1432. "#{object_name.downcase}.#{field_name}": {
  1433. operator: 'set_mandatory',
  1434. set_mandatory: 'true'
  1435. },
  1436. })
  1437. end
  1438. it 'does perform' do
  1439. before_it.call
  1440. expect(page.find("div[data-attribute-name='#{field_name}'] div.formGroup-label label")).to have_text('*')
  1441. end
  1442. end
  1443. describe 'action - unset_readonly' do
  1444. before do
  1445. create(:core_workflow,
  1446. object: object_name,
  1447. perform: {
  1448. "#{object_name.downcase}.#{field_name}": {
  1449. operator: 'unset_readonly',
  1450. unset_readonly: 'true'
  1451. },
  1452. })
  1453. end
  1454. it 'does perform' do
  1455. before_it.call
  1456. expect(page).to have_no_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  1457. end
  1458. end
  1459. describe 'action - set_readonly' do
  1460. before do
  1461. create(:core_workflow,
  1462. object: object_name,
  1463. perform: {
  1464. "#{object_name.downcase}.#{field_name}": {
  1465. operator: 'set_readonly',
  1466. set_readonly: 'true'
  1467. },
  1468. })
  1469. end
  1470. it 'does perform' do
  1471. before_it.call
  1472. expect(page).to have_selector("div[data-attribute-name='#{field_name}'].is-readonly")
  1473. end
  1474. end
  1475. end
  1476. describe 'Unable to close tickets in certran cases if core workflow is used #3710', authenticated_as: :authenticate, db_strategy: :reset do
  1477. def authenticate
  1478. create(:object_manager_attribute_text, object_name: object_name, name: field_name, display: field_name, screens: screens)
  1479. ObjectManager::Attribute.migration_execute
  1480. true
  1481. end
  1482. before do
  1483. create(:core_workflow,
  1484. object: object_name,
  1485. perform: {
  1486. "#{object_name.downcase}.#{field_name}": {
  1487. operator: 'set_mandatory',
  1488. set_mandatory: 'true'
  1489. },
  1490. })
  1491. create(:core_workflow,
  1492. object: object_name,
  1493. perform: {
  1494. "#{object_name.downcase}.#{field_name}": {
  1495. operator: 'hide',
  1496. hide: 'true'
  1497. },
  1498. })
  1499. end
  1500. it 'does not display hidden fields as mandatory' do
  1501. before_it.call
  1502. expect(page.find("input[name='#{field_name}']", visible: :hidden)[:required]).not_to eq('true')
  1503. end
  1504. end
  1505. end