CustomNewClassGeneratorTests.st
changeset 736 cbb808f1f9ff
child 743 79617bd3dbe1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CustomNewClassGeneratorTests.st	Sun Nov 09 01:01:32 2014 +0100
@@ -0,0 +1,101 @@
+"{ Package: 'jn:refactoring_custom' }"
+
+CustomCodeGeneratorOrRefactoringTestCase subclass:#CustomNewClassGeneratorTests
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Refactoring-Custom-Generators-Tests'
+!
+
+!CustomNewClassGeneratorTests methodsFor:'accessing'!
+
+generatorOrRefactoring
+    |generator|
+
+    generator := mock mockOf: CustomNewClassGenerator.
+    generator class compileMockMethod: 'description ^ ''some description''. '.
+    ^ generator
+
+    "Modified: / 09-11-2014 / 00:36:28 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomNewClassGeneratorTests methodsFor:'tests'!
+
+test_available_in_context
+    
+    self assert: (generatorOrRefactoring class availableInContext: context)
+
+    "Modified: / 09-11-2014 / 00:17:07 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_available_in_perspective
+    
+    self assert: (generatorOrRefactoring class availableInPerspective: CustomPerspective classPerspective)
+
+    "Modified (comment): / 09-11-2014 / 00:18:00 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_is_abstract
+    
+    self assert: CustomNewClassGenerator isAbstract
+
+    "Modified (comment): / 09-11-2014 / 00:30:43 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_new_class_generated
+
+    generatorOrRefactoring
+        compileMockMethod: 'buildForClass: aClass ^ self';
+        newClassName: #DummyClass01.
+
+    generatorOrRefactoring executeInContext: context.  
+
+    self assertClassExists: #DummyClass01.
+
+    "Created: / 09-11-2014 / 00:32:14 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_new_class_generated_with_dialog
+
+    dialog := mock mockOf: CustomDialog.
+    dialog compileMockMethod: 'requestClassName: aLabel initialAnswer: anAnswer
+
+        self assert: aLabel = ''some label''.
+        self assert: anAnswer = ''DummyClass01''.
+
+        ^ anAnswer. '.
+
+    generatorOrRefactoring
+        compileMockMethod: 'buildForClass: aClass ^ aClass superclassName: #CustomCodeGenerator';
+        compileMockMethod: 'newClassNameLabel ^ ''some label''. ';
+        compileMockMethod: 'defaultClassName ^ ''DummyClass01''. ';
+        dialog: dialog.
+
+    context := CustomBrowserContext new.
+
+    generatorOrRefactoring executeInContext: context.  
+
+    self assertClassExists: #DummyClass01.
+
+    "Created: / 09-11-2014 / 00:48:03 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_new_class_generated_with_subclass_responsibility
+    | expectedSource |
+
+    generatorOrRefactoring
+        compileMockMethod: 'buildForClass: aClass ^ aClass superclassName: #CustomCodeGenerator';
+        newClassName: #DummyClass01.
+
+    generatorOrRefactoring executeInContext: context.  
+
+    self assertClassExists: #DummyClass01.
+
+    expectedSource := 'buildInContext:aCustomContext
+    self shouldImplement'.
+
+    self assertMethodSource: expectedSource atSelector: #buildInContext: forClass: (Smalltalk at: #DummyClass01).
+
+    "Created: / 09-11-2014 / 00:41:09 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+