packages feed

aws-arn-0.3.3.0: test/Network/AWS/ARN/S3Test.hs

{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}

module Network.AWS.ARN.S3Test where

import Data.Text (Text)
import Lens.Micro.Pro (Lens', set, (^?))
import Network.AWS.ARN.S3
import Test.Tasty
import Test.Tasty.HUnit

test_all :: TestTree
test_all =
  testGroup
    "Network.AWS.ARN.S3"
    [ testGroup
        "Object"
        [ testGroup
            "parsing"
            [ testCase "s3 bucket" $
                "bucket-name" ^? _Object @?= Nothing,
              testCase "s3 bucket and object" $
                "bucket-name/my/object" ^? _Object @?= Just (Object (Bucket "bucket-name") "my/object")
            ],
          testGroup
            "updating"
            [ testCase "setting object key" $
                set (_Object . rObjectKey) "my/other/object" "bucket-name/my/object"
                  @?= "bucket-name/my/other/object"
            ]
        ],
      testGroup
        "S3 bucket"
        [ testGroup
            "parsing"
            [ testCase "s3 bucket" $
                "bucket-name" ^? _Bucket @?= Just (Bucket "bucket-name"),
              testCase "s3 bucket and object" $
                "bucket-name/my/object" ^? _Bucket @?= Nothing
            ]
        ]
    ]

rObjectKey :: Lens' Object Text
rObjectKey l r@Object {objectKey} = (\o -> r {objectKey = o}) <$> l objectKey