packages feed

registry-hedgehog-0.7.0.1: test/Test/Data/Registry/Company.hs

module Test.Data.Registry.Company where

import Protolude

-- Some complex nested data
data Company = Company
  { companyName :: Text,
    departments :: [Department]
  }
  deriving (Eq, Show)

data Department = Department
  { departmentName :: DepartmentName,
    employees :: [Employee]
  }
  deriving (Eq, Show)

newtype DepartmentName = DepartmentName { _departmentName :: Text }
  deriving (Eq, Show)

data Employee = Employee
  { employeeName :: EmployeeName,
    employeeStatus :: EmployeeStatus,
    salary :: Int,
    bonus :: Maybe Int
  }
  deriving (Eq, Show)

newtype EmployeeName = EmployeeName Text
  deriving (Eq, Show)

-- | Note that this is an ADT with several constructors
data EmployeeStatus
  = Permanent
  | Temporary Int -- number of days
  deriving (Eq, Show)