~mortenoh/+junk/dhis2-detailed-import-export

« back to all changes in this revision

Viewing changes to gis/dhis-gis-geostat/mfbase/mapfish/tests/widgets/data/test_FeatureStoreMediator.html

  • Committer: larshelge at gmail
  • Date: 2009-03-03 16:46:36 UTC
  • Revision ID: larshelge@gmail.com-20090303164636-2sjlrquo7ib1gf7r
Initial check-in

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE html>
 
2
<html debug="true">
 
3
  <head>
 
4
    <link rel="stylesheet" type="text/css" href="../../../../ext/resources/css/ext-all.css" />
 
5
 
 
6
    <script type="text/javascript" src="../../../../openlayers/lib/Firebug/firebug.js"></script>
 
7
    <script type="text/javascript" src="../../../../openlayers/lib/OpenLayers.js"></script>
 
8
 
 
9
    <script type="text/javascript" src="../../../../ext/adapter/ext/ext-base.js"></script>
 
10
    <script type="text/javascript" src="../../../../ext/ext-all-debug.js"></script>
 
11
 
 
12
    <script type="text/javascript">
 
13
      // Because of a bug in Firefox 2 we need to specify the MapFish base path.
 
14
      // See https://bugzilla.mozilla.org/show_bug.cgi?id=351282
 
15
      var gMfLocation = "../../../../mapfish/";
 
16
    </script>
 
17
    <script type="text/javascript" src="../../../../mapfish/MapFish.js"></script>
 
18
 
 
19
    <link rel="stylesheet" type="text/css" href="style.css" />
 
20
 
 
21
    <script type="text/javascript"><!--
 
22
        function test_constructor(t) {
 
23
            t.plan(1);
 
24
            // setup
 
25
            var mediator, store;
 
26
            store = new Ext.data.Store({
 
27
                reader: new mapfish.widgets.data.FeatureReader(
 
28
                    {}, [{name: "name", type: "string"}]
 
29
                )
 
30
            });
 
31
            // 1 test
 
32
            mediator = new mapfish.widgets.data.FeatureStoreMediator({
 
33
                store: store
 
34
            });
 
35
            t.ok(mediator.store == store,
 
36
                 "ctor correctly sets store");
 
37
        }
 
38
 
 
39
        function test_addFeatures(t) {
 
40
            t.plan(4);
 
41
            // setup
 
42
            var mediator, store, features, flip, filter;
 
43
            store = new Ext.data.Store({
 
44
                reader: new mapfish.widgets.data.FeatureReader(
 
45
                    {}, [{name: "name", type: "string"}]
 
46
                )
 
47
            });
 
48
            mediator = new mapfish.widgets.data.FeatureStoreMediator({
 
49
                store: store
 
50
            });
 
51
            function createFeatures() {
 
52
                return [
 
53
                    new OpenLayers.Feature.Vector(null, {
 
54
                        name: "foo"
 
55
                    }),
 
56
                    new OpenLayers.Feature.Vector()
 
57
                ];
 
58
            }
 
59
            // 2 tests
 
60
            features = createFeatures();
 
61
            mediator.addFeatures(features);
 
62
            t.eq(store.getCount(), 2,
 
63
                 "addFeatures adds correct number of features");
 
64
            var record = store.getById(features[0].id);
 
65
            t.ok(record.get('feature') == features[0],
 
66
                 'addFeatures correctly adds features');
 
67
            // 1 test
 
68
            features = createFeatures();
 
69
            mediator.addFeatures(features, {append: false});
 
70
            t.eq(store.getCount(), 2,
 
71
                 "addFeatures adds correct number of features");
 
72
            // 1 test
 
73
            flip = false;
 
74
            filter = function() { flip = !flip; return flip; };
 
75
            features = createFeatures();
 
76
            mediator.addFeatures(features, 
 
77
                {append: false, filter: filter});
 
78
            t.eq(store.getCount(), 1,
 
79
                 "addFeatures adds correct number of features " +
 
80
                 "with filter passed");
 
81
        }
 
82
 
 
83
        // there's a bug in Ext where Ext dereferences an undefined
 
84
        // value, the bug triggers with a grouping store and group
 
85
        // field when store.loadData is called with only one arg
 
86
        // or with false as the second arg. addFeatures works
 
87
        // around that bug, so that test_addFeatures_ExtBug passes
 
88
        //
 
89
        // prefix the function name with test_ if you want to
 
90
        // actually run the test
 
91
        /*
 
92
        function ExtBug(t) {
 
93
            t.plan(1);
 
94
            // setup
 
95
            var store, a;
 
96
            store = new Ext.data.GroupingStore({
 
97
                reader: new Ext.data.ArrayReader({id: 0}, [
 
98
                    {name: "name", mapping: 1},
 
99
                    {name: "occupation", mapping: 2}
 
100
                ]),
 
101
                groupField: "name"
 
102
            });
 
103
            a = [[1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist']];
 
104
            store.loadData(a, false); // same effect with store.loadData(a)
 
105
            // 1 test
 
106
            t.eq(store.getCount(), 2,
 
107
                 "correct number of records loaded");
 
108
        }
 
109
        */
 
110
 
 
111
        function test_addFeatures_ExtBug(t) {
 
112
            t.plan(2);
 
113
            // setup
 
114
            var mediator, store, features, flip, filter;
 
115
            store = new Ext.data.GroupingStore({
 
116
                reader: new mapfish.widgets.data.FeatureReader(
 
117
                    {}, [{name: "name", type: "string"}]
 
118
                ),
 
119
                groupField: "name"
 
120
            });
 
121
            mediator = new mapfish.widgets.data.FeatureStoreMediator({
 
122
                store: store
 
123
            });
 
124
            function createFeatures() {
 
125
                return [
 
126
                    new OpenLayers.Feature.Vector(null, {
 
127
                        name: "foo"
 
128
                    }),
 
129
                    new OpenLayers.Feature.Vector()
 
130
                ];
 
131
            }
 
132
            // 2 tests
 
133
            features = createFeatures();
 
134
            // {append: false} makes Ext panic without the workaround
 
135
            // in FeatureStoreMediator.js, see test_ExtBug for making
 
136
            // Ext panic without MapFish involves
 
137
            mediator.addFeatures(features, {append: false});
 
138
            t.eq(store.getCount(), 2,
 
139
                 "addFeatures adds correct number of features");
 
140
            var record = store.getById(features[0].id);
 
141
            t.ok(record.get('feature') == features[0],
 
142
                 'addFeatures correctly adds features');
 
143
        }
 
144
 
 
145
        function test_removeFeatures(t) {
 
146
            t.plan(1);
 
147
            // setup
 
148
            var mediator, store, features;
 
149
            store = new Ext.data.Store({
 
150
                reader: new mapfish.widgets.data.FeatureReader(
 
151
                    {}, [{name: "name", type: "string"}]
 
152
                )
 
153
            });
 
154
            mediator = new mapfish.widgets.data.FeatureStoreMediator({
 
155
                store: store
 
156
            });
 
157
            function createFeatures() {
 
158
                return [
 
159
                    new OpenLayers.Feature.Vector(null, {
 
160
                        name: "foo"
 
161
                    }),
 
162
                    new OpenLayers.Feature.Vector()
 
163
                ];
 
164
            }
 
165
            // 1 test
 
166
            features = createFeatures();
 
167
            mediator.addFeatures(features);
 
168
            mediator.removeFeatures(features);
 
169
            t.eq(store.getCount(), 0,
 
170
                 'removesFeatures correctly removes features');
 
171
        }
 
172
    --></script>
 
173
 
 
174
  <body>
 
175
    <div id="map"></div>
 
176
  </body>
 
177
</html>