summaryrefslogtreecommitdiffstats
path: root/model/command_response_test.go
blob: 131d877895ec1a7b00201022cde4a86f5051738f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.

package model

import (
	"strings"
	"testing"
)

func TestCommandResponseJson(t *testing.T) {
	o := CommandResponse{Text: "test"}
	json := o.ToJson()
	ro := CommandResponseFromJson(strings.NewReader(json))

	if o.Text != ro.Text {
		t.Fatal("Ids do not match")
	}
}

func TestCommandResponseFromJson(t *testing.T) {
	json := `{
		"response_type": "ephemeral",
		"text": "response text",
		"username": "response username",
		"icon_url": "response icon url",
		"goto_location": "response goto location",
		"attachments": [{
			"text": "attachment 1 text",
			"pretext": "attachment 1 pretext"
		},{
			"text": "attachment 2 text",
			"fields": [{
				"title": "field 1",
				"value": "value 1",
				"short": true
			},{
				"title": "field 2",
				"value": [],
				"short": false
			}]
		}]
	}`

	response := CommandResponseFromJson(strings.NewReader(json))

	if response == nil {
		t.Fatal("should've received non-nil CommandResponse")
	}

	if response.ResponseType != "ephemeral" {
		t.Fatal("should've received correct response type")
	} else if response.Text != "response text" {
		t.Fatal("should've received correct response text")
	} else if response.Username != "response username" {
		t.Fatal("should've received correct response username")
	} else if response.IconURL != "response icon url" {
		t.Fatal("should've received correct response icon url")
	} else if response.GotoLocation != "response goto location" {
		t.Fatal("should've received correct response goto location")
	}

	attachments := response.Attachments
	if len(attachments) != 2 {
		t.Fatal("should've received 2 attachments")
	} else if attachments[0].Text != "attachment 1 text" {
		t.Fatal("should've received correct first attachment text")
	} else if attachments[0].Pretext != "attachment 1 pretext" {
		t.Fatal("should've received correct first attachment pretext")
	} else if attachments[1].Text != "attachment 2 text" {
		t.Fatal("should've received correct second attachment text")
	}

	fields := attachments[1].Fields
	if len(fields) != 2 {
		t.Fatal("should've received 2 fields")
	} else if fields[0].Value.(string) != "value 1" {
		t.Fatal("should've received correct first attachment value")
	} else if _, ok := fields[1].Value.(string); !ok {
		t.Fatal("should've received second attachment value parsed as a string")
	} else if fields[1].Value.(string) != "[]" {
		t.Fatal("should've received correct second attachment value")
	}
}