Jermaine McFarlane

use replace with only parent or generic class

@@ -132,7 +132,7 @@ extension Inst on GetInterface { @@ -132,7 +132,7 @@ extension Inst on GetInterface {
132 /// Replace a parent instance of a class in dependency management 132 /// Replace a parent instance of a class in dependency management
133 /// with a [child] instance 133 /// with a [child] instance
134 /// - [tag] optional, if you use a [tag] to register the Instance. 134 /// - [tag] optional, if you use a [tag] to register the Instance.
135 - void replace<P, C extends P>(C child, {String? tag}) { 135 + void replace<P>(P child, {String? tag}) {
136 final info = GetInstance().getInstanceInfo<P>(tag: tag); 136 final info = GetInstance().getInstanceInfo<P>(tag: tag);
137 final permanent = (info.isPermanent ?? false); 137 final permanent = (info.isPermanent ?? false);
138 delete<P>(tag: tag, force: permanent); 138 delete<P>(tag: tag, force: permanent);
@@ -10,7 +10,9 @@ class Mock { @@ -10,7 +10,9 @@ class Mock {
10 } 10 }
11 } 11 }
12 12
13 -class DisposableController extends GetLifeCycle {} 13 +abstract class MyController extends GetLifeCycle {}
  14 +
  15 +class DisposableController extends MyController {}
14 16
15 // ignore: one_member_abstracts 17 // ignore: one_member_abstracts
16 abstract class Service { 18 abstract class Service {
@@ -157,42 +159,49 @@ void main() { @@ -157,42 +159,49 @@ void main() {
157 }); 159 });
158 }); 160 });
159 161
160 - test('Get.replace test for replacing temporary parent instance with child',  
161 - () async {  
162 - Get.put(DisposableController());  
163 - Get.replace<DisposableController, Controller>(Controller());  
164 - final instance = Get.find<DisposableController>();  
165 - expect(instance is Controller, isTrue);  
166 - expect((instance as Controller).init, greaterThan(0));  
167 - }); 162 + group('Get.replace test for replacing parent instance that is', () {
  163 + test('temporary', () async {
  164 + Get.put(DisposableController());
  165 + Get.replace<DisposableController>(Controller());
  166 + final instance = Get.find<DisposableController>();
  167 + expect(instance is Controller, isTrue);
  168 + expect((instance as Controller).init, greaterThan(0));
  169 + });
168 170
169 - test('Get.replace test for replacing permanent parent instance with child',  
170 - () async {  
171 - Get.put(DisposableController(), permanent: true);  
172 - Get.replace<DisposableController, Controller>(Controller());  
173 - final instance = Get.find<DisposableController>();  
174 - expect(instance is Controller, isTrue);  
175 - expect((instance as Controller).init, greaterThan(0));  
176 - }); 171 + test('permanent', () async {
  172 + Get.put(DisposableController(), permanent: true);
  173 + Get.replace<DisposableController>(Controller());
  174 + final instance = Get.find<DisposableController>();
  175 + expect(instance is Controller, isTrue);
  176 + expect((instance as Controller).init, greaterThan(0));
  177 + });
177 178
178 - test('Get.replace test for replacing tagged temporary instance with child',  
179 - () async {  
180 - final tag = 'tag';  
181 - Get.put(DisposableController(), tag: tag);  
182 - Get.replace<DisposableController, Controller>(Controller(), tag: tag);  
183 - final instance = Get.find<DisposableController>(tag: tag);  
184 - expect(instance is Controller, isTrue);  
185 - expect((instance as Controller).init, greaterThan(0));  
186 - }); 179 + test('tagged temporary', () async {
  180 + final tag = 'tag';
  181 + Get.put(DisposableController(), tag: tag);
  182 + Get.replace<DisposableController>(Controller(), tag: tag);
  183 + final instance = Get.find<DisposableController>(tag: tag);
  184 + expect(instance is Controller, isTrue);
  185 + expect((instance as Controller).init, greaterThan(0));
  186 + });
187 187
188 - test('Get.replace test for replacing tagged parent instance with child',  
189 - () async {  
190 - final tag = 'tag';  
191 - Get.put(DisposableController(), permanent: true, tag: tag);  
192 - Get.replace<DisposableController, Controller>(Controller(), tag: tag);  
193 - final instance = Get.find<DisposableController>(tag: tag);  
194 - expect(instance is Controller, isTrue);  
195 - expect((instance as Controller).init, greaterThan(0)); 188 + test('tagged permanent', () async {
  189 + final tag = 'tag';
  190 + Get.put(DisposableController(), permanent: true, tag: tag);
  191 + Get.replace<DisposableController>(Controller(), tag: tag);
  192 + final instance = Get.find<DisposableController>(tag: tag);
  193 + expect(instance is Controller, isTrue);
  194 + expect((instance as Controller).init, greaterThan(0));
  195 + });
  196 +
  197 + test('a generic parent type', () async {
  198 + final tag = 'tag';
  199 + Get.put<MyController>(DisposableController(), permanent: true, tag: tag);
  200 + Get.replace<MyController>(Controller(), tag: tag);
  201 + final instance = Get.find<MyController>(tag: tag);
  202 + expect(instance is Controller, isTrue);
  203 + expect((instance as Controller).init, greaterThan(0));
  204 + });
196 }); 205 });
197 } 206 }
198 207