Skip to content

Commit 03b8dff

Browse files
authored
Merge pull request #60 from linkdata/newtestrequest
Newtestrequest
2 parents 6067fb6 + 5cc0329 commit 03b8dff

45 files changed

Lines changed: 523 additions & 353 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

jaws.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package jaws
33
import (
44
"html/template"
55
"io"
6+
"net/http"
67
"sync"
78
"time"
89

@@ -49,6 +50,7 @@ type (
4950
With = pkg.With
5051
Session = pkg.Session
5152
Tag = pkg.Tag
53+
TestRequest = pkg.TestRequest
5254
)
5355

5456
var (
@@ -236,3 +238,7 @@ func NewUiText(vp Setter[string]) *UiText {
236238
func NewUiTr(innerHTML HTMLGetter) *UiTr {
237239
return pkg.NewUiTr(innerHTML)
238240
}
241+
242+
func NewTestRequest(jw *Jaws, hr *http.Request) (tr *TestRequest) {
243+
return pkg.NewTestRequest(jw, hr)
244+
}

jaws/clickhandler_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ var _ ClickHandler = (*testJawsClick)(nil)
2323
func Test_clickHandlerWapper_JawsEvent(t *testing.T) {
2424
th := newTestHelper(t)
2525
nextJid = 0
26-
rq := newTestRequest()
26+
rq := newTestRequest(t)
2727
defer rq.Close()
2828

2929
tjc := &testJawsClick{
@@ -37,16 +37,16 @@ func Test_clickHandlerWapper_JawsEvent(t *testing.T) {
3737
t.Errorf("Request.Div() = %q, want %q", got, want)
3838
}
3939

40-
rq.inCh <- wsMsg{Data: "text", Jid: 1, What: what.Input}
40+
rq.InCh <- wsMsg{Data: "text", Jid: 1, What: what.Input}
4141
select {
4242
case <-th.C:
4343
th.Timeout()
44-
case s := <-rq.outCh:
44+
case s := <-rq.OutCh:
4545
t.Errorf("%q", s)
4646
default:
4747
}
4848

49-
rq.inCh <- wsMsg{Data: "adam", Jid: 1, What: what.Click}
49+
rq.InCh <- wsMsg{Data: "adam", Jid: 1, What: what.Click}
5050
select {
5151
case <-th.C:
5252
th.Timeout()

jaws/element_test.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,12 @@ func (tss *testUi) JawsUpdate(e *Element) {
6666

6767
func TestElement_helpers(t *testing.T) {
6868
is := newTestHelper(t)
69-
rq := newTestRequest()
69+
rq := newTestRequest(t)
7070
defer rq.Close()
7171

7272
tss := &testUi{}
7373
e := rq.NewElement(tss)
74-
is.Equal(e.Jaws, rq.jw.Jaws)
74+
is.Equal(e.Jaws, rq.Jaws)
7575
is.Equal(e.Request, rq.Request)
7676
is.Equal(e.Session(), nil)
7777
e.Set("foo", "bar") // no session, so no effect
@@ -80,7 +80,7 @@ func TestElement_helpers(t *testing.T) {
8080

8181
func TestElement_Tag(t *testing.T) {
8282
is := newTestHelper(t)
83-
rq := newTestRequest()
83+
rq := newTestRequest(t)
8484
defer rq.Close()
8585

8686
tss := &testUi{}
@@ -96,7 +96,7 @@ func TestElement_Tag(t *testing.T) {
9696

9797
func TestElement_Queued(t *testing.T) {
9898
th := newTestHelper(t)
99-
rq := newTestRequest()
99+
rq := newTestRequest(t)
100100
defer rq.Close()
101101

102102
tss := &testUi{
@@ -181,13 +181,12 @@ func TestElement_Queued(t *testing.T) {
181181
time.Sleep(time.Millisecond)
182182
}
183183
}
184-
th.Equal(tss.updateCalled, int32(1))
185184
th.Equal(tss.renderCalled, int32(2))
186185
}
187186

188187
func TestElement_ReplacePanicsOnMissingId(t *testing.T) {
189188
is := newTestHelper(t)
190-
rq := newTestRequest()
189+
rq := newTestRequest(t)
191190
defer rq.Close()
192191
defer func() {
193192
if x := recover(); x == nil {
@@ -202,7 +201,7 @@ func TestElement_ReplacePanicsOnMissingId(t *testing.T) {
202201

203202
func TestElement_maybeDirty(t *testing.T) {
204203
th := newTestHelper(t)
205-
rq := newTestRequest()
204+
rq := newTestRequest(t)
206205
defer rq.Close()
207206
tss := &testUi{s: "foo"}
208207
e := rq.NewElement(tss)
@@ -231,7 +230,7 @@ var _ ClickHandler = testClickHandler{}
231230

232231
func TestElement_ApplyGetter(t *testing.T) {
233232
is := newTestHelper(t)
234-
rq := newTestRequest()
233+
rq := newTestRequest(t)
235234
defer rq.Close()
236235

237236
tss := &testUi{s: "foo"}
@@ -250,7 +249,7 @@ func TestElement_ApplyGetter(t *testing.T) {
250249

251250
func TestElement_JawsInit(t *testing.T) {
252251
is := newTestHelper(t)
253-
rq := newTestRequest()
252+
rq := newTestRequest(t)
254253
defer rq.Close()
255254

256255
tss := &testUi{s: "foo"}

jaws/handler_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88

99
func TestHandler_ServeHTTP(t *testing.T) {
1010
nextJid = 0
11-
rq := newTestRequest()
11+
rq := newTestRequest(t)
1212
defer rq.Close()
1313

1414
dot := Tag("123")

jaws/jawsevent_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ var _ UI = (*testJawsEvent)(nil)
5858
func Test_JawsEvent_ClickUnhandled(t *testing.T) {
5959
th := newTestHelper(t)
6060
nextJid = 0
61-
rq := newTestRequest()
61+
rq := newTestRequest(t)
6262
defer rq.Close()
6363

6464
msgCh := make(chan string, 1)
@@ -68,7 +68,7 @@ func Test_JawsEvent_ClickUnhandled(t *testing.T) {
6868
id := rq.Register(zomgItem, je, "attr1", []string{"attr2"}, template.HTMLAttr("attr3"), []template.HTMLAttr{"attr4"})
6969

7070
je.clickerr = ErrEventUnhandled
71-
rq.inCh <- wsMsg{Data: "name", Jid: id, What: what.Click}
71+
rq.InCh <- wsMsg{Data: "name", Jid: id, What: what.Click}
7272
select {
7373
case <-th.C:
7474
th.Timeout()
@@ -82,7 +82,7 @@ func Test_JawsEvent_ClickUnhandled(t *testing.T) {
8282
func Test_JawsEvent_AllUnhandled(t *testing.T) {
8383
th := newTestHelper(t)
8484
nextJid = 0
85-
rq := newTestRequest()
85+
rq := newTestRequest(t)
8686
defer rq.Close()
8787

8888
msgCh := make(chan string, 1)
@@ -93,7 +93,7 @@ func Test_JawsEvent_AllUnhandled(t *testing.T) {
9393

9494
je.clickerr = ErrEventUnhandled
9595
je.eventerr = ErrEventUnhandled
96-
rq.inCh <- wsMsg{Data: "name", Jid: id, What: what.Click}
96+
rq.InCh <- wsMsg{Data: "name", Jid: id, What: what.Click}
9797
select {
9898
case <-th.C:
9999
th.Timeout()
@@ -126,7 +126,7 @@ func (t *testJawsEventHandler) JawsEvent(e *Element, wht what.What, val string)
126126
func Test_JawsEvent_ExtraHandler(t *testing.T) {
127127
th := newTestHelper(t)
128128
nextJid = 0
129-
rq := newTestRequest()
129+
rq := newTestRequest(t)
130130
defer rq.Close()
131131

132132
msgCh := make(chan string, 1)
@@ -139,7 +139,7 @@ func Test_JawsEvent_ExtraHandler(t *testing.T) {
139139
th.NoErr(je.JawsRender(elem, &sb, nil))
140140
th.Equal(sb.String(), "<div id=\"Jid.1\">tjEH</div>")
141141

142-
rq.inCh <- wsMsg{Data: "name", Jid: 1, What: what.Click}
142+
rq.InCh <- wsMsg{Data: "name", Jid: 1, What: what.Click}
143143
select {
144144
case <-th.C:
145145
th.Timeout()

jaws/jawsjaws_test.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@ func TestJaws_BroadcastFullClosesChannel(t *testing.T) {
178178

179179
go func() {
180180
select {
181+
case <-t.Context().Done():
182+
close(failCh)
181183
case <-th.C:
182184
close(failCh)
183185
case <-subCh2:
@@ -521,18 +523,20 @@ func TestJaws_GenerateHeadHTML(t *testing.T) {
521523

522524
func TestJaws_TemplateLookuper(t *testing.T) {
523525
th := newTestHelper(t)
524-
rq := newTestRequest()
526+
tj := newTestJaws()
527+
defer tj.Close()
528+
rq := NewTestRequest(tj.Jaws, nil)
525529
defer rq.Close()
526530
th.Equal(rq.Jaws.LookupTemplate("nosuchtemplate"), nil)
527-
th.Equal(rq.Jaws.LookupTemplate("testtemplate"), rq.jw.testtmpl)
528-
rq.Jaws.RemoveTemplateLookuper(rq.jw.testtmpl)
531+
th.Equal(rq.Jaws.LookupTemplate("testtemplate"), tj.testtmpl)
532+
rq.Jaws.RemoveTemplateLookuper(tj.testtmpl)
529533
th.Equal(rq.Jaws.LookupTemplate("testtemplate"), nil)
530534
}
531535

532536
func TestJaws_JsCall(t *testing.T) {
533537
th := newTestHelper(t)
534538
nextJid = 0
535-
rq := newTestRequest()
539+
rq := newTestRequest(t)
536540
defer rq.Close()
537541

538542
tss := &testUi{}
@@ -548,7 +552,7 @@ func TestJaws_JsCall(t *testing.T) {
548552
select {
549553
case <-th.C:
550554
th.Timeout()
551-
case msg := <-rq.outCh:
555+
case msg := <-rq.OutCh:
552556
got := msg.Format()
553557
th.Equal(got, "Call\tJid.1\tsomefn=1.3\n")
554558
}

jaws/jsvar_test.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ func (tl *testLocker) Unlock() {
4343

4444
func Test_JsVar_JawsRender(t *testing.T) {
4545
th := newTestHelper(t)
46-
rq := newTestRequest()
46+
rq := newTestRequest(t)
4747
defer rq.Close()
4848

4949
nextJid = 0
50-
rq.jw.AddTemplateLookuper(template.Must(template.New("jsvartemplate").Parse(`{{$.JsVar "` + varname + `" .Dot}}`)))
50+
rq.Jaws.AddTemplateLookuper(template.Must(template.New("jsvartemplate").Parse(`{{$.JsVar "` + varname + `" .Dot}}`)))
5151

5252
var mu deadlock.RWMutex
5353
var val valtype
@@ -88,7 +88,7 @@ func Test_JsVar_Update(t *testing.T) {
8888
var val valtype
8989
dot := NewJsVar(&mu, &val)
9090

91-
rq := newTestRequest()
91+
rq := newTestRequest(t)
9292
defer rq.Close()
9393

9494
elem := rq.NewElement(dot)
@@ -107,7 +107,7 @@ func Test_JsVar_Update(t *testing.T) {
107107
select {
108108
case <-th.C:
109109
th.Timeout()
110-
case gotMsg := <-rq.outCh:
110+
case gotMsg := <-rq.OutCh:
111111
wantMsg := wsMsg{
112112
Data: "={\"String\":\"x\",\"Number\":2}",
113113
Jid: 1,
@@ -166,7 +166,7 @@ func Test_JsVar_Event(t *testing.T) {
166166
select {
167167
case <-th.C:
168168
th.Timeout()
169-
case rq1.inCh <- wsMsg{Jid: 1, What: what.Set, Data: "={\"String\":\"y\",\"Number\":3}"}:
169+
case rq1.InCh <- wsMsg{Jid: 1, What: what.Set, Data: "={\"String\":\"y\",\"Number\":3}"}:
170170
}
171171

172172
select {
@@ -180,7 +180,7 @@ func Test_JsVar_Event(t *testing.T) {
180180
select {
181181
case <-th.C:
182182
th.Timeout()
183-
case msg := <-rq1.outCh:
183+
case msg := <-rq1.OutCh:
184184
s := msg.Format()
185185
after, found := strings.CutPrefix(s, "Set\tJid.1\t=")
186186
th.Equal(found, true)
@@ -197,7 +197,7 @@ func Test_JsVar_Event(t *testing.T) {
197197
select {
198198
case <-th.C:
199199
th.Timeout()
200-
case msg := <-rq2.outCh:
200+
case msg := <-rq2.OutCh:
201201
s := msg.Format()
202202
after, found := strings.CutPrefix(s, "Set\tJid.2\t=")
203203
th.Equal(found, true)
@@ -214,13 +214,13 @@ func Test_JsVar_Event(t *testing.T) {
214214
select {
215215
case <-th.C:
216216
th.Timeout()
217-
case rq1.inCh <- wsMsg{Jid: 1, What: what.Set, Data: "=1"}:
217+
case rq1.InCh <- wsMsg{Jid: 1, What: what.Set, Data: "=1"}:
218218
}
219219

220220
select {
221221
case <-th.C:
222222
th.Timeout()
223-
case msg := <-rq1.outCh:
223+
case msg := <-rq1.OutCh:
224224
s := msg.Format()
225225
if !strings.Contains(s, "jq: expected") {
226226
th.Error(s)
@@ -230,7 +230,7 @@ func Test_JsVar_Event(t *testing.T) {
230230

231231
func Test_JsVar_PanicsOnWrongType(t *testing.T) {
232232
th := newTestHelper(t)
233-
rq := newTestRequest()
233+
rq := newTestRequest(t)
234234
defer rq.Close()
235235
defer func() {
236236
if x := recover(); x == nil {
@@ -255,7 +255,7 @@ var _ JsVarMaker = &testJsVarMaker{}
255255
func Test_JsVar_JsVarMaker(t *testing.T) {
256256
nextJid = 0
257257
th := newTestHelper(t)
258-
rq := newTestRequest()
258+
rq := newTestRequest(t)
259259
defer rq.Close()
260260
err := rq.JsVar("foo", &testJsVarMaker{})
261261
th.NoErr(err)
@@ -286,7 +286,7 @@ var _ SetPather = &testJsVarPathSetter{}
286286
func Test_JsVar_PathSetter_SetPather(t *testing.T) {
287287
nextJid = 0
288288
th := newTestHelper(t)
289-
rq := newTestRequest()
289+
rq := newTestRequest(t)
290290
defer rq.Close()
291291

292292
var mu deadlock.Mutex
@@ -302,7 +302,7 @@ func Test_JsVar_PathSetter_SetPather(t *testing.T) {
302302
func Test_JsVar_Unchanged(t *testing.T) {
303303
nextJid = 0
304304
th := newTestHelper(t)
305-
rq := newTestRequest()
305+
rq := newTestRequest(t)
306306
defer rq.Close()
307307

308308
var mu deadlock.Mutex

jaws/namedbool_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ func TestNamedBool(t *testing.T) {
1212
nba.Add("1", "one")
1313
nb := nba.data[0]
1414

15-
rq := newTestRequest()
15+
rq := newTestRequest(t)
1616
e := rq.NewElement(NewUiCheckbox(nb))
1717
defer rq.Close()
1818

jaws/namedboolarray_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func Test_NamedBoolArray(t *testing.T) {
7878
(nba.data)[1].Set(true)
7979
is.Equal(nba.IsChecked("2"), true)
8080

81-
rq := newTestRequest()
81+
rq := newTestRequest(t)
8282
e := rq.NewElement(NewUiSelect(nba))
8383
defer rq.Close()
8484

jaws/request.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,13 @@ func (rq *Request) NewElement(ui UI) *Element {
395395
return rq.newElementLocked(ui)
396396
}
397397

398+
func (rq *Request) GetElementByJid(jid Jid) (e *Element) {
399+
rq.mu.RLock()
400+
defer rq.mu.RUnlock()
401+
e = rq.getElementByJidLocked(jid)
402+
return
403+
}
404+
398405
func (rq *Request) getElementByJidLocked(jid Jid) (elem *Element) {
399406
for _, e := range rq.elems {
400407
if e.Jid() == jid {

0 commit comments

Comments
 (0)