atlassian-connect-descriptor 0.4.6.0 → 0.4.7.0
raw patch · 4 files changed
+59/−1 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Data.Connect.Descriptor: JIRAIssueContent :: Text -> I18nText -> I18nText -> IconDetails -> JIRAIssueContentTarget -> [Condition] -> JIRAIssueContent
+ Data.Connect.Descriptor: JIRAIssueContentTargetWebPanel :: Text -> JIRAIssueContentTarget
+ Data.Connect.Descriptor: [jicConditions] :: JIRAIssueContent -> [Condition]
+ Data.Connect.Descriptor: [jicIcon] :: JIRAIssueContent -> IconDetails
+ Data.Connect.Descriptor: [jicKey] :: JIRAIssueContent -> Text
+ Data.Connect.Descriptor: [jicName] :: JIRAIssueContent -> I18nText
+ Data.Connect.Descriptor: [jicTarget] :: JIRAIssueContent -> JIRAIssueContentTarget
+ Data.Connect.Descriptor: [jicTooltip] :: JIRAIssueContent -> I18nText
+ Data.Connect.Descriptor: [jictwpUrl] :: JIRAIssueContentTarget -> Text
+ Data.Connect.Descriptor: [jmJiraIssueContents] :: JIRAModules -> Maybe [JIRAIssueContent]
+ Data.Connect.Descriptor: data JIRAIssueContent
+ Data.Connect.Descriptor: data JIRAIssueContentTarget
- Data.Connect.Descriptor: JIRAModules :: Maybe [JIRAWebSection] -> Maybe [WebItem] -> Maybe [WebPanel] -> Maybe [JIRAPage] -> Maybe [JIRAPage] -> Maybe JIRAPage -> Maybe [JIRASearchRequestView] -> Maybe [JIRAGenericTabPanel] -> Maybe [JIRAGenericTabPanel] -> Maybe [JIRAGenericTabPanel] -> Maybe [JIRAProjectAdminTabPanel] -> Maybe [JIRAGenericTabPanel] -> Maybe [JIRAGenericTabPanel] -> Maybe [JIRAIssueGlance] -> Maybe [JIRAReport] -> Maybe [Webhook] -> Maybe [JIRAWorkflowPostFunction] -> Maybe [JIRAEntityProperties] -> JIRAModules
+ Data.Connect.Descriptor: JIRAModules :: Maybe [JIRAWebSection] -> Maybe [WebItem] -> Maybe [WebPanel] -> Maybe [JIRAPage] -> Maybe [JIRAPage] -> Maybe JIRAPage -> Maybe [JIRASearchRequestView] -> Maybe [JIRAGenericTabPanel] -> Maybe [JIRAGenericTabPanel] -> Maybe [JIRAGenericTabPanel] -> Maybe [JIRAProjectAdminTabPanel] -> Maybe [JIRAGenericTabPanel] -> Maybe [JIRAGenericTabPanel] -> Maybe [JIRAIssueContent] -> Maybe [JIRAIssueGlance] -> Maybe [JIRAReport] -> Maybe [Webhook] -> Maybe [JIRAWorkflowPostFunction] -> Maybe [JIRAEntityProperties] -> JIRAModules
Files
- atlassian-connect-descriptor.cabal +1/−1
- src/Data/Connect/Descriptor.hs +2/−0
- src/Data/Connect/Modules.hs +30/−0
- tests/ModulesTest.hs +26/−0
atlassian-connect-descriptor.cabal view
@@ -10,7 +10,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 0.4.6.0+version: 0.4.7.0 -- A short (one-line) description of the package. synopsis: Code that helps you create a valid Atlassian Connect Descriptor.
src/Data/Connect/Descriptor.hs view
@@ -128,6 +128,8 @@ , JIRAProjectAdminTabPanel(..) -- ** JIRA Specific Modules , JIRASearchRequestView(..)+ , JIRAIssueContent(..)+ , JIRAIssueContentTarget(..) , JIRAIssueGlance(..) , JIRAIssueGlanceContent(..) , JIRAIssueGlanceTarget(..)
src/Data/Connect/Modules.hs view
@@ -16,6 +16,8 @@ , JIRAGenericTabPanel(..) , JIRAProjectAdminTabPanel(..) , JIRASearchRequestView(..)+ , JIRAIssueContent(..)+ , JIRAIssueContentTarget(..) , JIRAIssueGlance(..) , JIRAIssueGlanceContent(..) , JIRAIssueGlanceTarget(..)@@ -117,6 +119,7 @@ , jmJiraProjectAdminTabPanels :: Maybe [JIRAProjectAdminTabPanel] , jmJiraIssueTabPanels :: Maybe [JIRAGenericTabPanel] , jmJiraComponentTabPanels :: Maybe [JIRAGenericTabPanel]+ , jmJiraIssueContents :: Maybe [JIRAIssueContent] , jmJiraIssueGlances :: Maybe [JIRAIssueGlance] , jmJiraReports :: Maybe [JIRAReport] , jmWebhooks :: Maybe [Webhook]@@ -163,6 +166,7 @@ Nothing Nothing Nothing+ Nothing -- | Empty Confluence Modules; useful when you only want to define a few modules via Haskell record syntax. emptyConfluenceModules :: ConfluenceModules@@ -411,6 +415,32 @@ toJSON = genericToJSON baseOptions { fieldLabelModifier = stripFieldNamePrefix "jiraPage" }++-- | This module adds a content button to the context area of the new Jira issue view.+-- Content can have an icon, tooltip, and target.+data JIRAIssueContent = JIRAIssueContent+ { jicKey :: T.Text -- ^ The add-on unique key for this module.+ , jicName :: I18nText -- ^ The name of this JIRA Issue Content.+ , jicTooltip :: I18nText -- ^ The tooltip for this JIRA Issue Content.+ , jicIcon :: IconDetails -- ^ The icon for this JIRA Issue Content.+ , jicTarget :: JIRAIssueContentTarget -- ^ Specifies the target action when clicking on the content.+ , jicConditions :: [Condition] -- ^ The conditions under which the content will be shown.+ } deriving (Show, Generic)++instance ToJSON JIRAIssueContent where+ toJSON = genericToJSON baseOptions+ { fieldLabelModifier = stripFieldNamePrefix "jic"+ }++data JIRAIssueContentTarget = JIRAIssueContentTargetWebPanel+ { jictwpUrl :: T.Text -- ^ The url to the content that will be loaded in the glance iframe.+ } deriving (Show)++instance ToJSON JIRAIssueContentTarget where+ toJSON wp@(JIRAIssueContentTargetWebPanel {}) = object+ [ "type" .= T.pack "web_panel"+ , "url" .= (jictwpUrl wp)+ ] -- | This module adds a glance to the context area of the new Jira issue view. -- Glances can have an icon, content, and status.
tests/ModulesTest.hs view
@@ -15,6 +15,7 @@ , testGeneralPageCorrectFormat , testEmptyModulesAreNotShown , testIssueGlanceCorrectFormat+ , testIssueContentCorrectFormat ] testIssueGlanceCorrectFormat :: Test@@ -39,6 +40,31 @@ (getString =<< get "url" =<< get "target" jv) `isEqualTo` "/panel_url" (getString =<< get "type" =<< get "content" jv) `isEqualTo` "label" (getString =<< get "value" =<< get "label" =<< get "content" jv) `isEqualTo` "my label"+ (get "url" =<< get "icon" jv) `isEqualTo` "my_icon.svg"+ (getNumber =<< get "width" =<< get "icon" jv) `isEqualTo` 24+ (getNumber =<< get "height" =<< get "icon" jv) `isEqualTo` 25++testIssueContentCorrectFormat :: Test+testIssueContentCorrectFormat = TestCase $ do+ let jic = JIRAIssueContent+ { jicKey = "jira-issue-content-module"+ , jicName = simpleText "My content"+ , jicTooltip = simpleText "My tooltip"+ , jicIcon = IconDetails+ { iconUrl = "my_icon.svg"+ , iconWidth = Just 24+ , iconHeight = Just 25+ }+ , jicTarget = JIRAIssueContentTargetWebPanel "/panel_url"+ , jicConditions = []+ }+ let jv = toJSON jic+ isObject jv @? "Expected the issue glance to be an object"+ (getString =<< get "key" jv) `isEqualTo` "jira-issue-content-module"+ (getString =<< get "value" =<< get "name" jv) `isEqualTo` "My content"+ (getString =<< get "value" =<< get "tooltip" jv) `isEqualTo` "My tooltip"+ (getString =<< get "type" =<< get "target" jv) `isEqualTo` "web_panel"+ (getString =<< get "url" =<< get "target" jv) `isEqualTo` "/panel_url" (get "url" =<< get "icon" jv) `isEqualTo` "my_icon.svg" (getNumber =<< get "width" =<< get "icon" jv) `isEqualTo` 24 (getNumber =<< get "height" =<< get "icon" jv) `isEqualTo` 25