13
13
use Magento \Authorization \Model \RulesFactory ;
14
14
use Magento \Authorization \Model \UserContextInterface ;
15
15
use Magento \Framework \DataObject ;
16
+ use Magento \TestFramework \Fixture \Api \DataMerger ;
16
17
use Magento \TestFramework \Fixture \Data \ProcessorInterface ;
17
18
use Magento \TestFramework \Fixture \RevertibleDataFixtureInterface ;
18
19
@@ -25,13 +26,16 @@ class Role implements RevertibleDataFixtureInterface
25
26
'role_name ' => 'Role Name %uniqid% ' ,
26
27
'role_type ' => Group::ROLE_TYPE ,
27
28
'user_id ' => 0 ,
28
- 'user_type ' => UserContextInterface::USER_TYPE_ADMIN
29
+ 'user_type ' => UserContextInterface::USER_TYPE_ADMIN ,
30
+ 'pid ' => 0 ,
31
+ 'gws_is_all ' => 1 ,
32
+ 'gws_websites ' => null ,
33
+ 'gws_store_groups ' => null ,
34
+ 'resources ' => self ::RESOURCES
29
35
];
30
36
31
- private const DEFAULT_DATA_RULES = [
32
- 'id ' => null ,
33
- 'role_id ' => null ,
34
- 'resources ' => ['Magento_Backend::all ' ]
37
+ private const RESOURCES = [
38
+ 'Magento_Backend::all '
35
39
];
36
40
37
41
/**
@@ -54,39 +58,59 @@ class Role implements RevertibleDataFixtureInterface
54
58
*/
55
59
private $ rulesFactory ;
56
60
61
+ /**
62
+ * @var DataMerger
63
+ */
64
+ private $ dataMerger ;
65
+
57
66
/**
58
67
* @param RoleFactory $roleFactory
59
68
* @param RoleResource $roleResourceModel
60
69
* @param RulesFactory $rulesFactory
61
70
* @param ProcessorInterface $dataProcessor
71
+ * @param DataMerger $dataMerger
62
72
*/
63
73
public function __construct (
64
74
RoleFactory $ roleFactory ,
65
75
RoleResource $ roleResourceModel ,
66
76
RulesFactory $ rulesFactory ,
67
- ProcessorInterface $ dataProcessor
77
+ ProcessorInterface $ dataProcessor ,
78
+ DataMerger $ dataMerger
68
79
) {
69
80
$ this ->roleFactory = $ roleFactory ;
70
81
$ this ->roleResourceModel = $ roleResourceModel ;
71
82
$ this ->rulesFactory = $ rulesFactory ;
72
83
$ this ->dataProcessor = $ dataProcessor ;
84
+ $ this ->dataMerger = $ dataMerger ;
73
85
}
74
86
75
87
/**
76
88
* @inheritdoc
77
89
*/
78
90
public function apply (array $ data = []): ?DataObject
79
91
{
92
+ $ data = $ this ->prepareData ($ data );
93
+
94
+ $ websites = isset ($ data ['gws_websites ' ]) ? implode (', ' , $ data ['gws_websites ' ]) : implode (', ' , []);
95
+ $ storeGroups = isset ($ data ['gws_store_groups ' ]) ? implode (', ' , $ data ['gws_store_groups ' ]) : implode (', ' , []);
96
+
80
97
$ role = $ this ->roleFactory ->create ();
81
- $ role ->setData ($ this ->prepareData (array_diff_key ($ data , self ::DEFAULT_DATA_RULES )));
82
- $ this ->roleResourceModel ->save ($ role );
98
+ $ role ->setRoleName ($ data ['role_name ' ])
99
+ ->setRoleType ($ data ['role_type ' ])
100
+ ->setPid ($ data ['pid ' ])
101
+ ->setUserType ($ data ['user_type ' ])
102
+ ->setGwsIsAll ($ data ['gws_is_all ' ])
103
+ ->setGwsWebsites ($ websites )
104
+ ->setGwsStoreGroups ($ storeGroups );
105
+
106
+ $ result = $ role ->save ();
83
107
84
- $ rules = $ this ->rulesFactory ->create ();
85
- $ rules ->setRoleId ($ role -> getId () ?? null );
86
- $ rules ->setResources ($ data ['resources ' ] ?? self ::DEFAULT_DATA_RULES [ ' resources ' ]);
87
- $ rules ->saveRel ();
108
+ $ this ->rulesFactory ->create ()
109
+ ->setRoleId ($ result [ ' role_id ' ])
110
+ ->setResources ($ data ['resources ' ] ?? self ::RESOURCES )
111
+ ->saveRel ();
88
112
89
- return $ role ;
113
+ return $ result ;
90
114
}
91
115
92
116
/**
@@ -110,7 +134,7 @@ public function revert(DataObject $data): void
110
134
*/
111
135
private function prepareData (array $ data ): array
112
136
{
113
- $ data = array_merge (self ::DEFAULT_DATA , $ data );
137
+ $ data = $ this -> dataMerger -> merge (self ::DEFAULT_DATA , $ data );
114
138
return $ this ->dataProcessor ->process ($ this , $ data );
115
139
}
116
140
}
0 commit comments