Kaynağa Gözat

dashboards: return url in response to save dashboard. #7883

Marcus Efraimsson 8 yıl önce
ebeveyn
işleme
369597f7b2
2 değiştirilmiş dosya ile 30 ekleme ve 22 silme
  1. 15 1
      pkg/api/dashboard.go
  2. 15 21
      pkg/api/dashboard_test.go

+ 15 - 1
pkg/api/dashboard.go

@@ -238,8 +238,22 @@ func PostDashboard(c *middleware.Context, cmd m.SaveDashboardCommand) Response {
 		return ApiError(500, "Invalid alert data. Cannot save dashboard", err)
 	}
 
+	var url string
+	if dash.IsFolder {
+		url = m.GetFolderUrl(dashboard.Uid, dashboard.Slug)
+	} else {
+		url = m.GetDashboardUrl(dashboard.Uid, dashboard.Slug)
+	}
+
 	c.TimeRequest(metrics.M_Api_Dashboard_Save)
-	return Json(200, util.DynMap{"status": "success", "slug": dashboard.Slug, "version": dashboard.Version, "id": dashboard.Id, "uid": dashboard.Uid})
+	return Json(200, util.DynMap{
+		"status":  "success",
+		"slug":    dashboard.Slug,
+		"version": dashboard.Version,
+		"id":      dashboard.Id,
+		"uid":     dashboard.Uid,
+		"url":     url,
+	})
 }
 
 func GetHomeDashboard(c *middleware.Context) Response {

+ 15 - 21
pkg/api/dashboard_test.go

@@ -180,13 +180,7 @@ func TestDashboardApiEndpoint(t *testing.T) {
 			})
 
 			postDashboardScenario("When calling POST on", "/api/dashboards", "/api/dashboards", role, cmd, func(sc *scenarioContext) {
-				CallPostDashboard(sc)
-				So(sc.resp.Code, ShouldEqual, 200)
-				result := sc.ToJson()
-				So(result.Get("status").MustString(), ShouldEqual, "success")
-				So(result.Get("id").MustInt64(), ShouldBeGreaterThan, 0)
-				So(result.Get("uid").MustString(), ShouldNotBeNil)
-				So(result.Get("slug").MustString(), ShouldNotBeNil)
+				CallPostDashboardShouldReturnSuccess(sc)
 			})
 
 			Convey("When saving a dashboard folder in another folder", func() {
@@ -423,13 +417,7 @@ func TestDashboardApiEndpoint(t *testing.T) {
 			})
 
 			postDashboardScenario("When calling POST on", "/api/dashboards", "/api/dashboards", role, cmd, func(sc *scenarioContext) {
-				CallPostDashboard(sc)
-				So(sc.resp.Code, ShouldEqual, 200)
-				result := sc.ToJson()
-				So(result.Get("status").MustString(), ShouldEqual, "success")
-				So(result.Get("id").MustInt64(), ShouldBeGreaterThan, 0)
-				So(result.Get("uid").MustString(), ShouldNotBeNil)
-				So(result.Get("slug").MustString(), ShouldNotBeNil)
+				CallPostDashboardShouldReturnSuccess(sc)
 			})
 		})
 
@@ -544,13 +532,7 @@ func TestDashboardApiEndpoint(t *testing.T) {
 			})
 
 			postDashboardScenario("When calling POST on", "/api/dashboards", "/api/dashboards", role, cmd, func(sc *scenarioContext) {
-				CallPostDashboard(sc)
-				So(sc.resp.Code, ShouldEqual, 200)
-				result := sc.ToJson()
-				So(result.Get("status").MustString(), ShouldEqual, "success")
-				So(result.Get("id").MustInt64(), ShouldBeGreaterThan, 0)
-				So(result.Get("uid").MustString(), ShouldNotBeNil)
-				So(result.Get("slug").MustString(), ShouldNotBeNil)
+				CallPostDashboardShouldReturnSuccess(sc)
 			})
 		})
 
@@ -678,6 +660,18 @@ func CallPostDashboard(sc *scenarioContext) {
 	sc.fakeReqWithParams("POST", sc.url, map[string]string{}).exec()
 }
 
+func CallPostDashboardShouldReturnSuccess(sc *scenarioContext) {
+	CallPostDashboard(sc)
+
+	So(sc.resp.Code, ShouldEqual, 200)
+	result := sc.ToJson()
+	So(result.Get("status").MustString(), ShouldEqual, "success")
+	So(result.Get("id").MustInt64(), ShouldBeGreaterThan, 0)
+	So(result.Get("uid").MustString(), ShouldNotBeNil)
+	So(result.Get("slug").MustString(), ShouldNotBeNil)
+	So(result.Get("url").MustString(), ShouldNotBeNil)
+}
+
 func postDashboardScenario(desc string, url string, routePattern string, role m.RoleType, cmd m.SaveDashboardCommand, fn scenarioFunc) {
 	Convey(desc+" "+url, func() {
 		defer bus.ClearBusHandlers()