Navigation: Add pluginId to standalone plugin page NavLinks (#57769)

* feat(Navigation): add `pluginId` to NavLink and override sibling navlinks with the same URL

* test replacing page from plugin

* chore: fix go lint issues

* fix(NavLink): change `PluginId` to `PluginID`

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>

* fix(NavLink): make the `PluginId` -> `PluginID` change everywhere

* chore(navModel.ts): update explanatory comment for `pluginId`

Co-authored-by: Miklós Tolnai <miklos.tolnai@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
This commit is contained in:
Levente Balogh
2022-11-03 21:19:42 +01:00
committed by GitHub
co-authored by Torkel Ödegaard Miklós Tolnai
parent 6fcc5b42c0
commit 376f4b0cc7
4 changed files with 70 additions and 6 deletions
@@ -65,9 +65,27 @@ func TestAddAppLinks(t *testing.T) {
},
}
testApp3 := plugins.PluginDTO{
JSONData: plugins.JSONData{
ID: "test-app3",
Name: "Test app3 name",
Type: plugins.App,
Includes: []*plugins.Includes{
{
Name: "Hello",
Path: "/connections/connect-data",
Type: "page",
AddToNav: true,
DefaultNav: true,
},
},
},
}
pluginSettings := pluginsettings.FakePluginSettings{Plugins: map[string]*pluginsettings.DTO{
testApp1.ID: {ID: 0, OrgID: 1, PluginID: testApp1.ID, PluginVersion: "1.0.0", Enabled: true},
testApp2.ID: {ID: 0, OrgID: 1, PluginID: testApp2.ID, PluginVersion: "1.0.0", Enabled: true},
testApp3.ID: {ID: 0, OrgID: 1, PluginID: testApp3.ID, PluginVersion: "1.0.0", Enabled: true},
}}
service := ServiceImpl{
@@ -77,7 +95,7 @@ func TestAddAppLinks(t *testing.T) {
pluginSettings: &pluginSettings,
features: featuremgmt.WithFeatures(),
pluginStore: plugins.FakePluginStore{
PluginList: []plugins.PluginDTO{testApp1, testApp2},
PluginList: []plugins.PluginDTO{testApp1, testApp2, testApp3},
},
}
@@ -172,6 +190,27 @@ func TestAddAppLinks(t *testing.T) {
require.Equal(t, "Test app2 name", treeRoot.Children[0].Children[0].Text)
require.Equal(t, "Test app1 name", treeRoot.Children[0].Children[1].Text)
})
t.Run("Should replace page from plugin", func(t *testing.T) {
service.features = featuremgmt.WithFeatures(featuremgmt.FlagTopnav, featuremgmt.FlagDataConnectionsConsole)
service.navigationAppPathConfig = map[string]NavigationAppConfig{
"/connections/connect-data": {SectionID: "connections"},
}
treeRoot := navtree.NavTreeRoot{}
treeRoot.AddSection(service.buildDataConnectionsNavLink(reqCtx))
require.Equal(t, "Connections", treeRoot.Children[0].Text)
require.Equal(t, "Connect Data", treeRoot.Children[0].Children[1].Text)
require.Equal(t, "connections-connect-data", treeRoot.Children[0].Children[1].Id)
require.Equal(t, "", treeRoot.Children[0].Children[1].PluginID)
err := service.addAppLinks(&treeRoot, reqCtx)
require.NoError(t, err)
require.Equal(t, "Connections", treeRoot.Children[0].Text)
require.Equal(t, "Connect Data", treeRoot.Children[0].Children[1].Text)
require.Equal(t, "standalone-plugin-page-/connections/connect-data", treeRoot.Children[0].Children[1].Id)
require.Equal(t, "test-app3", treeRoot.Children[0].Children[1].PluginID)
})
}
func TestReadingNavigationSettings(t *testing.T) {