packages feed

mangopay-1.0: test/Web/MangoPay/UsersTest.hs

{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -F -pgmF htfpp #-}
module Web.MangoPay.UsersTest where

import Web.MangoPay
import Web.MangoPay.TestUtils

import Test.Framework
import Test.HUnit (Assertion)
import Data.Maybe (fromJust, isJust)

testNaturalUser :: NaturalUser
testNaturalUser=NaturalUser Nothing Nothing "jpmoresmau@gmail.com" "JP" "Moresmau" Nothing 11111 "FR" "FR" 
        (Just "Haskell contractor") (Just IncomeRange2) Nothing Nothing Nothing 

test_NaturalUser :: Assertion
test_NaturalUser = do
        u<-testMP $ storeNaturalUser testNaturalUser
        assertBool (isJust $ uId u)
        assertBool (isJust $ uCreationDate u)
        uf<-testMP $ fetchNaturalUser (fromJust $ uId u)
        assertEqual (uEmail testNaturalUser) (uEmail uf)
        assertEqual Nothing (uAddress uf)
        ue<-testMP $ storeNaturalUser (uf{uAddress=Just "St Guilhem"})
        assertEqual (Just "St Guilhem") (uAddress ue)
        assertEqual (Just IncomeRange2) (uIncomeRange ue)
        eu<-testMP $ getUser (fromJust $ uId u)
        assertEqual (Left ue) eu
        usL<-testMP $ listUsers (Just $ Pagination 1 100)
        assertEqual 1 (length $ filter (((fromJust $ uId u)==) . urId) $ plData usL)

testLegalUser :: LegalUser
testLegalUser = LegalUser Nothing Nothing "jpmoresmau@gmail.com" "JP Moresmau" Business Nothing
        "JP" "Moresmau" (Just "my house") Nothing 222222 "FR" "FR" Nothing Nothing Nothing Nothing
        
test_LegalUser :: Assertion
test_LegalUser = do
        l<-testMP $ storeLegalUser testLegalUser
        assertBool (isJust $ lId l)
        assertBool (isJust $ lCreationDate l)
        lf<-testMP $ fetchLegalUser (fromJust $ lId l)
        assertEqual (lEmail testLegalUser) (lEmail lf)
        assertEqual Nothing (lHeadquartersAddress lf)
        le<-testMP $ storeLegalUser (lf{lHeadquartersAddress=Just "St Guilhem"})
        assertEqual (Just "St Guilhem") (lHeadquartersAddress le)
        assertEqual "Moresmau" (lLegalRepresentativeLastName le)
        assertEqual (Just "my house") (lLegalRepresentativeAddress le) -- this is lost, see https://mangopay.desk.com/customer/portal/questions/5980417-legalrepresentativeaddress-in-legaluser-api
        assertEqual Nothing (lProofOfRegistration le)
        assertEqual Nothing (lShareholderDeclaration le)
        el<-testMP $ getUser (fromJust $ lId l)
        assertEqual (Right le) el
        usL<-testMP $ listUsers  (Just $ Pagination 1 100)
        assertEqual 1 (length $ filter (((fromJust $ lId l)==) . urId) $ plData usL)
   
test_PaginationUsers :: Assertion
test_PaginationUsers = do
  usL<-testMP $ listUsers (Just $ Pagination 1 1)
  print usL
  assertEqual 1 (length $ plData usL)
  assertEqual 2 (plItemCount usL)
  assertEqual 2 (plPageCount usL)
  usL2<-testMP $ listUsers (Just $ Pagination 1 10)
  assertEqual 2 (length $ plData usL2)
  assertEqual 2 (plItemCount usL2)
  assertEqual 1 (plPageCount usL2)
  us<-testMP $ getAll listUsers
  assertEqual 2 (length us)