packages feed

atlassian-connect-descriptor 0.4.5.0 → 0.4.6.0

raw patch · 6 files changed

+95/−21 lines, 6 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ Data.Connect.Descriptor: JIRAIssueGlance :: Text -> I18nText -> JIRAIssueGlanceContent -> IconDetails -> JIRAIssueGlanceTarget -> [Condition] -> JIRAIssueGlance
+ Data.Connect.Descriptor: JIRAIssueGlanceContentLabel :: I18nText -> JIRAIssueGlanceContent
+ Data.Connect.Descriptor: JIRAIssueGlanceTargetWebPanel :: Text -> JIRAIssueGlanceTarget
+ Data.Connect.Descriptor: [jigConditions] :: JIRAIssueGlance -> [Condition]
+ Data.Connect.Descriptor: [jigContent] :: JIRAIssueGlance -> JIRAIssueGlanceContent
+ Data.Connect.Descriptor: [jigIcon] :: JIRAIssueGlance -> IconDetails
+ Data.Connect.Descriptor: [jigKey] :: JIRAIssueGlance -> Text
+ Data.Connect.Descriptor: [jigName] :: JIRAIssueGlance -> I18nText
+ Data.Connect.Descriptor: [jigTarget] :: JIRAIssueGlance -> JIRAIssueGlanceTarget
+ Data.Connect.Descriptor: [jigclLabel] :: JIRAIssueGlanceContent -> I18nText
+ Data.Connect.Descriptor: [jigtwpUrl] :: JIRAIssueGlanceTarget -> Text
+ Data.Connect.Descriptor: [jmJiraIssueGlances] :: JIRAModules -> Maybe [JIRAIssueGlance]
+ Data.Connect.Descriptor: data JIRAIssueGlance
+ Data.Connect.Descriptor: data JIRAIssueGlanceContent
+ Data.Connect.Descriptor: data JIRAIssueGlanceTarget
- 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 [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 [JIRAIssueGlance] -> Maybe [JIRAReport] -> Maybe [Webhook] -> Maybe [JIRAWorkflowPostFunction] -> Maybe [JIRAEntityProperties] -> JIRAModules

Files

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.5.0+version:             0.4.6.0  -- A short (one-line) description of the package. synopsis:            Code that helps you create a valid Atlassian Connect Descriptor.@@ -93,9 +93,9 @@  Test-Suite test-descriptor   hs-source-dirs: tests-  type:        detailed-0.9+  type:        exitcode-stdio-1.0 -  test-module: Test+  main-is: Main.hs   other-modules: Util                  , AssertionHelpers                  , ValueExtractors
src/Data/Connect/Descriptor.hs view
@@ -128,6 +128,9 @@    , JIRAProjectAdminTabPanel(..)    -- ** JIRA Specific Modules    , JIRASearchRequestView(..)+   , JIRAIssueGlance(..)+   , JIRAIssueGlanceContent(..)+   , JIRAIssueGlanceTarget(..)    , JIRAReport(..)    , JIRAReportCategory(..)    , Target(..)
src/Data/Connect/Modules.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveGeneric     #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE OverloadedStrings #-} module Data.Connect.Modules    ( Modules(..)    , JIRAModules(..)@@ -15,6 +16,9 @@    , JIRAGenericTabPanel(..)    , JIRAProjectAdminTabPanel(..)    , JIRASearchRequestView(..)+   , JIRAIssueGlance(..)+   , JIRAIssueGlanceContent(..)+   , JIRAIssueGlanceTarget(..)    , JIRAReport(..)    , JIRAReportCategory(..)    , Target(..)@@ -113,6 +117,7 @@    , jmJiraProjectAdminTabPanels :: Maybe [JIRAProjectAdminTabPanel]    , jmJiraIssueTabPanels        :: Maybe [JIRAGenericTabPanel]    , jmJiraComponentTabPanels    :: Maybe [JIRAGenericTabPanel]+   , jmJiraIssueGlances          :: Maybe [JIRAIssueGlance]    , jmJiraReports               :: Maybe [JIRAReport]    , jmWebhooks                  :: Maybe [Webhook]    , jmJiraWorkflowPostFunctions :: Maybe [JIRAWorkflowPostFunction]@@ -157,6 +162,7 @@       Nothing       Nothing       Nothing+      Nothing  -- | Empty Confluence Modules; useful when you only want to define a few modules via Haskell record syntax. emptyConfluenceModules :: ConfluenceModules@@ -405,6 +411,42 @@    toJSON = genericToJSON baseOptions       { fieldLabelModifier = stripFieldNamePrefix "jiraPage"       }++-- | This module adds a glance to the context area of the new Jira issue view.+-- Glances can have an icon, content, and status.+data JIRAIssueGlance = JIRAIssueGlance+   { jigKey             :: T.Text -- ^ The add-on unique key for this module.+   , jigName            :: I18nText -- ^ The name of this JIRA Glance.+   , jigContent         :: JIRAIssueGlanceContent -- ^ This content becomes the label next to the icon. It's handy for communicating a small amount of information.+   , jigIcon            :: IconDetails -- ^ Specifies an icon to display at the left of the glance view control. The icon resource provided in this field should be 24x24 pixels or larger, preferably in .SVG format.+   , jigTarget          :: JIRAIssueGlanceTarget -- ^ Specifies the target action when clicking on the glance.+   , jigConditions      :: [Condition] -- ^ The conditions under which the glance will be shown.+   } deriving (Show, Generic)++instance ToJSON JIRAIssueGlance where+   toJSON = genericToJSON baseOptions+      { fieldLabelModifier = stripFieldNamePrefix "jig"+      }++data JIRAIssueGlanceContent = JIRAIssueGlanceContentLabel+   { jigclLabel :: I18nText+   } deriving (Show)++instance ToJSON JIRAIssueGlanceContent where+   toJSON label@(JIRAIssueGlanceContentLabel {}) = object+      [ "type" .= T.pack "label"+      , "label" .= (jigclLabel label)            +      ]++data JIRAIssueGlanceTarget = JIRAIssueGlanceTargetWebPanel+   { jigtwpUrl :: T.Text -- ^ The url to the content that will be loaded in the glance iframe.+   } deriving (Show)++instance ToJSON JIRAIssueGlanceTarget where+   toJSON wp@(JIRAIssueGlanceTargetWebPanel {}) = object+      [ "type" .= T.pack "web_panel"+      , "url" .= (jigtwpUrl wp)+      ]  -- |  A Search Request View allows you to render a custom representation of a search result. Rendering a custom XML -- format is a common example.
+ tests/Main.hs view
@@ -0,0 +1,20 @@+module Main where++import           ConditionsTest+import           DescriptorTest+import           ModulesTest+import qualified Test.HUnit             as HU+import           System.Exit (exitWith, ExitCode(..))++hunitTests :: HU.Test+hunitTests = HU.TestList+    [ HU.TestLabel "Condition Tests" conditionsTests+    , HU.TestLabel "Module Tests" moduleTests+    , HU.TestLabel "Descriptor Tests" descriptorTests+    ]++main :: IO ()+main = do+    counts <- HU.runTestTT hunitTests+    let mistakes = HU.errors counts + HU.failures counts+    exitWith (if mistakes > 0 then ExitFailure mistakes else ExitSuccess)
tests/ModulesTest.hs view
@@ -14,7 +14,34 @@     [ testWebPanelCorrectFormat     , testGeneralPageCorrectFormat     , testEmptyModulesAreNotShown+    , testIssueGlanceCorrectFormat     ]++testIssueGlanceCorrectFormat :: Test+testIssueGlanceCorrectFormat = TestCase $ do+    let jig = JIRAIssueGlance+                { jigKey = "jira-issue-glance-module"+                , jigName = simpleText "My glance"+                , jigContent = JIRAIssueGlanceContentLabel (simpleText "my label")+                , jigIcon = IconDetails+                    { iconUrl = "my_icon.svg"+                    , iconWidth = Just 24+                    , iconHeight = Just 25+                    }+                , jigTarget = JIRAIssueGlanceTargetWebPanel ("/panel_url")+                , jigConditions = []+                }+    let jv = toJSON jig+    isObject jv @? "Expected the issue glance to be an object"+    (getString =<< get "key" jv) `isEqualTo` "jira-issue-glance-module"+    (getString =<< get "value" =<< get "name" jv) `isEqualTo` "My glance"+    (getString =<< get "type" =<< get "target" jv) `isEqualTo` "web_panel"+    (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  testWebPanelCorrectFormat :: Test testWebPanelCorrectFormat = TestCase $ do
− tests/Test.hs
@@ -1,18 +0,0 @@-module Test where--import           ConditionsTest-import           DescriptorTest-import qualified Distribution.TestSuite as TS-import           ModulesTest-import qualified Test.HUnit             as HU-import           Util--hunitTests :: HU.Test-hunitTests = HU.TestList-    [ HU.TestLabel "Condition Tests" conditionsTests-    , HU.TestLabel "Module Tests" moduleTests-    , HU.TestLabel "Descriptor Tests" descriptorTests-    ]--tests :: IO [TS.Test]-tests = return [ TS.Test (hunitTestInstance hunitTests) ]