1 package org.paneris.jammyjoes.mvp;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import junit.framework.TestCase;
7
8 import org.melati.poem.JdbcPersistent;
9 import org.melati.poem.Persistable;
10 import org.melati.poem.Persistent;
11 import org.melati.poem.Selectable;
12
13 import com.mockobjects.dynamic.C;
14 import com.mockobjects.dynamic.Mock;
15
16 public class CatalogueEntryTest extends TestCase {
17
18 public void testPresenter() {
19
20 Mock contextControl = new Mock(Context.class);
21 contextControl.expect("put",C.args(C.eq("items"), C.isA(List.class)));
22 contextControl.matchAndReturn("get", C.args(C.isA(IntegerConverter.class), C.isA(String.class)), null);
23 Context context = (Context)contextControl.proxy();
24
25 Presenter unit = new CatalogueEntryPresenter(null, context);
26
27 assertEquals(ProductSelectionFromContext.class, unit.createSelection().getClass());
28 assertEquals(CollectOverTheTopCommand.class, unit.createCommand().getClass());
29
30 contextControl.verify();
31 }
32
33 public void testProductSelectionFromContext() {
34
35 Persistent expected = new JdbcPersistent();
36
37 Mock productTableController = new Mock(Selectable.class);
38 productTableController.expectAndReturn("getObject", new Integer(1), expected);
39
40 Mock contextController = new Mock(Context.class);
41 contextController.matchAndReturn("get", C.args(C.isA(IntegerConverter.class), C.eq("0")), new Integer(1));
42 contextController.matchAndReturn("get", C.args(C.isA(IntegerConverter.class), C.isA(String.class)), null);
43
44 Selection unit = new ProductSelectionFromContext((Selectable)productTableController.proxy(), (Context)contextController.proxy());
45
46 Mock commandController = new Mock(Command.class);
47 commandController.expect("visit", expected);
48
49 unit.visitEach((Command)commandController.proxy());
50
51 productTableController.verify();
52 contextController.verify();
53 commandController.verify();
54 }
55
56 public void testCollectOverTheTopCommand() {
57 int size = 10;
58
59 Mock contextController = new Mock(Context.class);
60 contextController.matchAndReturn("get", C.args(C.isA(IntegerConverter.class), C.isA(String.class)), null);
61
62 Integer expectedTroid = new Integer(1);
63 Mock productController = new Mock(Persistable.class);
64 productController.matchAndReturn("getTroid",expectedTroid);
65 Persistable expected = (Persistable)productController.proxy();
66 ArrayList list = new ArrayList();
67 Command unit = new CollectOverTheTopCommand(list, size, (Context)contextController.proxy());
68 unit.visit(expected);
69 unit.visit(expected);
70 assertEquals(list.size(), size);
71 assertEquals(((UncheckedProduct)list.get(0)).getId(), expectedTroid);
72 assertEquals(((UncheckedProduct)list.get(1)).getId(), expectedTroid);
73 assertEquals(((UncheckedProduct)list.get(9)).getId(), null);
74 }
75 }