defmodule Tests do
def compilePrivFolder() do
files = :filelib.wildcard('priv/erp.uno/' ++ '{bpe,form,kvs,nitro}/**/*')
:lists.map(fn file -> case file do 'priv/erp.uno/' ++ f ->
FT.load(f) |> FT.compileFile |> FT.compileForms end end, files)
end
# Test manually created AST forms
def testForms() do
testForm() |> FT.compileForms
[{:routeProc, [], [], [], [], "approval", [:to], [], _, [], []}]
= apply :inputProcTest2, :routeTo, [{:request, 'gwConfirmation', 'Implementation'}, []]
[{:routeProc, [], [], [], [], "out", [:registered_by], [], [], [], []}]
= apply :inputProcTest2, :routeTo, [{:request, 'Created', 'Registration'}, []]
end
# Test AST forms parsed from files
def testFiles() do
[{:routeProc, [], [], [], [], "approval", [:to], [], _, [], []}]
= apply :'bpe.input', :routeTo, [{:request, 'gwConfirmation', 'Implementation'}, []]
[{:routeProc, [], [], [], [], "out", [:registered_by], [], [], [], []}]
= apply :'bpe.input', :routeTo, [{:request, 'Created', 'Registration'}, []]
end
# Run tests
def run do
compilePrivFolder()
testForms()
testFiles()
:passed
end
# Manually created AST sample
def testForm do
[
FT.mod(:inputProcTest2),
FT.compile_all(),
FT.record(:routeProc, :lists.flatten(
[{:id,[],{:type,1,:list,[]}},
{:operation,[],{:type,1,:term,[]}},
{:feed,[],{:type,1,:term,[]}},
{:type,[],{:type,1,:term,[]}},
{:folder,[],{:type,1,:term,[]}},
{:users,[],{:type,1,:term,[]}},
{:folderType,[],{:type,1,:term,[]}},
{:callback,[],{:type,1,:term,[]}},
{:reject,[],{:type,1,:term,[]}},
{:options,[],{:type,1,:term,[]}}
])),
FT.routeFun(:routeTo, :lists.flatten(
[{'gwConfirmation','Implementation',[{'approval', ['to'], [], {'Elixir.CRM.KEP','toExecutors'}}]},
{'Created','Registration',[{'out', ['registered_by'], [], []}]}
])),
]
end
end