| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- package mod_wui
- import (
- "net/http"
- "os"
- "testing"
- "time"
- "gitp78su.ipnodns.ru/svi/kern/krn/kctx"
- "gitp78su.ipnodns.ru/svi/kern/wui/wbutton"
- "gitp78su.ipnodns.ru/svi/kern/wui/wlabel"
- // "gitp78su.ipnodns.ru/svi/kern/krn/kmodule"
- "gitp78su.ipnodns.ru/svi/kern/krn/kmonolit"
- "gitp78su.ipnodns.ru/svi/kern/krn/kserv_http"
- . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
- "gitp78su.ipnodns.ru/svi/kern/mock/mock_env"
- )
- type tester struct {
- t *testing.T
- ctx IKernelCtx
- serv IKernelServerHttp
- mod IKernelModule
- }
- func TestModKernelCtx(t *testing.T) {
- sf := &tester{
- t: t,
- ctx: kctx.GetKernelCtx(),
- }
- sf.ctx.Set("monolitName", "test_monolit", "test")
- sf.new()
- sf.click()
- sf.done()
- }
- // Кто-то кликнул в сети на кнопку
- func (sf *tester) click() {
- sf.t.Log("click")
- sf.clickBad1()
- sf.clickBad2()
- sf.clickGood1()
- }
- func (sf *tester) clickGood1() {
- sf.t.Log("clickGood1")
- btn := wbutton.NewWuiButton("test_btn", sf.fnClick)
- fiberApp := sf.serv.Fiber()
- req, err := http.NewRequest("POST", "/wui/click/"+btn.Id(), nil)
- if err != nil {
- sf.t.Fatalf("clickGood1(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("clickGood1(): in make POST, err=%v", err)
- }
- if resp.StatusCode != 200 {
- sf.t.Fatalf("clickGood1(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Обратный вызов клика
- func (sf *tester) fnClick() string {
- sf.t.Log("fnClick")
- return "test_click"
- }
- // Неправильный тип объекта
- func (sf *tester) clickBad2() {
- sf.t.Log("clickBad2")
- lbl := wlabel.NewWuiLabel("test_lbl")
- fiberApp := sf.serv.Fiber()
- req, err := http.NewRequest("POST", "/wui/click/"+lbl.Id(), nil)
- if err != nil {
- sf.t.Fatalf("clickBad2(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("clickBad2(): in make POST, err=%v", err)
- }
- if resp.StatusCode != 200 {
- sf.t.Fatalf("clickBad2(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Нет такой кнопки
- func (sf *tester) clickBad1() {
- sf.t.Log("clickBad1")
- fiberApp := sf.serv.Fiber()
- req, err := http.NewRequest("POST", "/wui/click/ert", nil)
- if err != nil {
- sf.t.Fatalf("clickBad1(): in net request, err=%v", err)
- }
- resp, err := fiberApp.Test(req)
- if err != nil {
- sf.t.Fatalf("clickBad1(): in make POST, err=%v", err)
- }
- if resp.StatusCode != 200 {
- sf.t.Fatalf("clickBad1(): status(%v)!=200", resp.StatusCode)
- }
- }
- // Завершение работы
- func (sf *tester) done() {
- sf.t.Log("done")
- sf.ctx.Cancel()
- sf.ctx.Wg().Wait()
- if isWork := sf.mod.IsWork(); isWork {
- sf.t.Fatalf("newGood1(): isWork==true")
- }
- }
- // Создание нового модуля HTTP-сервера
- func (sf *tester) new() {
- sf.t.Log("new")
- sf.newBad1()
- sf.newGood1()
- }
- func (sf *tester) newGood1() {
- sf.t.Log("newGood1")
- _ = mock_env.MakeEnv()
- _ = os.Unsetenv("LOCAL_HTTP_URL")
- os.Setenv("LOCAL_HTTP_URL", "http://localhost:18330/")
- sf.mod = GetModuleWui()
- kCtx := kctx.GetKernelCtx()
- kCtx.Set("isLocal", true, "type msg bus")
- _ = kmonolit.GetMonolit("test_monolit")
- sf.serv = kserv_http.GetKernelServHttp()
- _ = GetModuleWui()
- if sf.mod == nil {
- sf.t.Fatalf("newGood1(): mod==nil")
- }
- go sf.mod.Run()
- for {
- time.Sleep(time.Millisecond * 1)
- if sf.mod.IsWork() {
- break
- }
- }
- go sf.serv.Run()
- }
- // нет ничего для создания модуля
- func (sf *tester) newBad1() {
- sf.t.Log("newBad1")
- defer func() {
- if _panic := recover(); _panic == nil {
- sf.t.Fatalf("newBad1(): panic==nil")
- }
- }()
- _ = GetModuleWui()
- }
|