CustomManagerTests.st
changeset 789 9349044a65e8
child 803 95cdac772759
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CustomManagerTests.st	Sun Dec 28 18:22:20 2014 +0100
@@ -0,0 +1,259 @@
+"{ Package: 'jn:refactoring_custom' }"
+
+TestCase subclass:#CustomManagerTests
+	instanceVariableNames:'mock provider manager generatorClassMock'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Refactoring-Custom-Tests'
+!
+
+
+!CustomManagerTests methodsFor:'initialization & release'!
+
+setUp
+    super setUp.
+
+    mock := CustomMock new.
+    provider := mock mockOf: OrderedCollection.
+    provider compileMockMethod: 'generatorsAndRefactoringsDo: aBlock
+        self do: aBlock'.
+
+    manager := CustomManager new.
+    manager generatorsOrRefactoringsProvider: provider.
+
+    generatorClassMock := mock mockClassOf: Object.
+    mock createMockGetters: generatorClassMock forSelectors:
+        {'label'. 'isAbstract'. 'availableInContext:'. 'availableInPerspective:'}.
+
+    "Modified: / 28-12-2014 / 15:34:55 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+tearDown
+
+    mock unmockAll.
+    
+    super tearDown.
+
+    "Modified: / 28-12-2014 / 13:15:15 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomManagerTests methodsFor:'private'!
+
+addGenerator: aLabel
+    "Creates initialized code generator mock and adds it to managers generators"
+    | generator |
+
+    generator := generatorClassMock new
+        objectAttributeAt: #isAbstract put: false;
+        objectAttributeAt: #label put: aLabel;
+        objectAttributeAt: #availableInContext: put: true;
+        objectAttributeAt: #availableInPerspective: put: true;
+        yourself.
+
+    manager generatorsOrRefactoringsProvider add: generator.
+
+    ^ generator
+
+    "Created: / 28-12-2014 / 14:12:45 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+    "Modified: / 28-12-2014 / 15:36:22 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+collectionOfLabels: aCollection
+    "Returns collection of labels from given collection"
+
+    ^ OrderedCollection streamContents: [ :stream |
+        aCollection do: [ :each | 
+            stream nextPut: each label
+        ]
+    ]
+
+    "Created: / 28-12-2014 / 14:23:05 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomManagerTests methodsFor:'tests'!
+
+test_current
+    
+    self assert: manager class current notNil
+
+    "Modified: / 28-12-2014 / 13:17:36 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_generators_and_refactorings
+    | expectedGenerators actualGenerators |
+
+    expectedGenerators := OrderedCollection with: 'Generator_01' with: 'Generator_02'.
+
+    self addGenerator: 'Generator_01';
+        addGenerator: 'Generator_02'.
+
+    actualGenerators := self collectionOfLabels: manager generatorsAndRefactorings.
+
+    self assert: expectedGenerators = actualGenerators
+
+    "Modified: / 28-12-2014 / 14:23:40 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_generators_and_refactorings_do
+    | expectedGenerators actualGenerators |
+
+    self addGenerator: 'Generator_01';
+        addGenerator: 'Generator_02'.
+
+    expectedGenerators := OrderedCollection with: provider first 
+                            with: provider last.
+
+    actualGenerators := OrderedCollection streamContents: [ :stream |
+        manager generatorsAndRefactoringsDo: [ :generator |  
+            stream nextPut: generator
+        ].
+    ].                 
+
+    self assert: expectedGenerators = actualGenerators
+
+    "Modified: / 28-12-2014 / 18:04:40 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_generators_and_refactorings_for_context
+    | expectedGenerators actualGenerators |
+
+    expectedGenerators := OrderedCollection with: 'Generator_02'.
+
+    self addGenerator: 'Generator_01';
+        addGenerator: 'Generator_02'.
+
+    provider first objectAttributeAt: #availableInContext: put: false.    
+
+    actualGenerators := self collectionOfLabels: (manager 
+                            generatorsAndRefactoringsForContext: nil).
+
+    self assert: expectedGenerators = actualGenerators
+
+    "Modified: / 28-12-2014 / 15:38:38 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_generators_and_refactorings_for_context_do
+    | expectedGenerators actualGenerators |
+
+    self addGenerator: 'Generator_01';
+        addGenerator: 'Generator_02'.
+
+    expectedGenerators := OrderedCollection with: provider first. 
+    provider last objectAttributeAt: #availableInContext: put: false.
+
+    actualGenerators := OrderedCollection streamContents: [ :stream |
+        manager generatorsAndRefactoringsForContext: nil do: [ :generator |  
+            stream nextPut: generator
+        ].
+    ].                 
+
+    self assert: expectedGenerators = actualGenerators
+
+    "Modified: / 28-12-2014 / 18:08:01 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_generators_and_refactorings_for_perspective    
+    | expectedGenerators actualGenerators |
+
+    expectedGenerators := OrderedCollection with: 'Generator_01'.
+
+    self addGenerator: 'Generator_01';
+        addGenerator: 'Generator_02'.
+
+    provider second objectAttributeAt: #availableInPerspective: put: false.    
+
+    actualGenerators := self collectionOfLabels: (manager 
+                            generatorsAndRefactoringsForPerspective: nil).
+
+    self assert: expectedGenerators = actualGenerators
+
+    "Modified: / 28-12-2014 / 17:07:58 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_generators_and_refactorings_for_perspective_do
+    | expectedGenerators actualGenerators |
+
+    self addGenerator: 'Generator_01';
+        addGenerator: 'Generator_02'.
+
+    expectedGenerators := OrderedCollection with: provider first. 
+    provider last objectAttributeAt: #availableInPerspective: put: false.
+
+    actualGenerators := OrderedCollection streamContents: [ :stream |
+        manager generatorsAndRefactoringsForPerspective: nil do: [ :generator |  
+            stream nextPut: generator
+        ].
+    ].                 
+
+    self assert: expectedGenerators = actualGenerators
+
+    "Modified: / 28-12-2014 / 18:08:52 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_generators_and_refactorings_select_01    
+    | expectedGenerators actualGenerators |
+
+    expectedGenerators := OrderedCollection with: 'Generator_01'.
+
+    self addGenerator: 'Generator_01';
+        addGenerator: 'Generator_02'.
+
+    provider second objectAttributeAt: #availableInPerspective: put: false.    
+
+    actualGenerators := self collectionOfLabels: (manager 
+                            generatorsAndRefactoringsSelect: [ :generator | 
+                                generator availableInPerspective: nil
+                            ]).
+
+    self assert: expectedGenerators = actualGenerators
+
+    "Modified (comment): / 28-12-2014 / 17:54:06 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_generators_and_refactorings_select_02    
+    | expectedGenerators actualGenerators |
+
+    expectedGenerators := OrderedCollection new.
+
+    self addGenerator: 'Generator_01';
+        addGenerator: 'Generator_02'.
+
+    provider second objectAttributeAt: #availableInPerspective: put: false.    
+
+    actualGenerators := self collectionOfLabels: (manager 
+                            generatorsAndRefactoringsSelect: [ :generator | 
+                                false
+                            ]).
+
+    self assert: expectedGenerators = actualGenerators
+
+    "Created: / 28-12-2014 / 17:55:22 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
+test_generators_and_refactorings_select_03    
+    | expectedGenerators actualGenerators |
+
+    expectedGenerators := OrderedCollection with: 'Generator_01' with: 'Generator_02'.
+
+    self addGenerator: 'Generator_01';
+        addGenerator: 'Generator_02'.
+
+    provider second objectAttributeAt: #availableInPerspective: put: false.    
+
+    actualGenerators := self collectionOfLabels: (manager 
+                            generatorsAndRefactoringsSelect: [ :generator | 
+                                true
+                            ]).
+
+    self assert: expectedGenerators = actualGenerators
+
+    "Created: / 28-12-2014 / 17:55:56 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+! !
+
+!CustomManagerTests class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+