Created
December 17, 2015 17:32
-
-
Save localshred/84aedec310e59b43f9ed to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ tree test | |
test | |
├── coordinator_test.exs | |
├── data | |
│ ├── post_items.json | |
│ ├── postitems.1.json | |
│ ├── postitems.json | |
│ ├── test_cases | |
│ │ ├── big | |
│ │ │ ├── ferrari.done.json | |
│ │ │ ├── floridawild.done.json | |
│ │ │ └── postgres.done.json | |
│ │ ├── one_post_deletion.json | |
│ │ ├── one_post_one_topic.json | |
│ │ ├── one_post_redundant_deletion.json | |
│ │ ├── one_post_two_topics.json | |
│ │ ├── two_post_deletion.json | |
│ │ ├── two_post_one_profile_one_topic.json | |
│ │ ├── two_post_redundant_deletion.json | |
│ │ ├── two_post_redundant_sentiment_change.json | |
│ │ ├── two_post_sentiment_change.json | |
│ │ └── two_profile_three_post_one_topic.json | |
│ ├── topic_influence.1.json | |
│ └── topic_influence.json | |
├── gretel_test.exs | |
├── helpers | |
│ ├── dict_pipeline_test.exs | |
│ └── epoch_test.exs | |
├── test_helper.exs | |
├── test_helpers | |
│ └── topic_worker_test_case_loader.ex | |
└── topic_worker_test.exs | |
5 directories, 25 files |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# located in test/test_helpers/topic_worker_test_case_loader.exs | |
defmodule TestHelpers.TopicWorkerTestCaseLoader do | |
@test_case_directory "./test/data/test_cases" | |
if System.get_env("TEST_LARGE_FILES") == nil do | |
@wildcard_path "#{@test_case_directory}/*.json" | |
else | |
@wildcard_path "#{@test_case_directory}/**/*.json" | |
end | |
def run_test_cases(define_test_case) do | |
Path.wildcard(@wildcard_path) | |
|> Enum.each fn (file) -> | |
file | |
|> read_file | |
|> decode_json | |
|> load_test_case | |
|> define_test_case.() | |
end | |
end | |
def decode_json({ { :ok, file_content }, filename }) do | |
{ :ok_json, filename, Poison.decode!(file_content) } | |
end | |
def decode_json({ { :error, error }, filename }) do | |
{ :error, filename, "Can't load file #{filename}: #{error}" } | |
end | |
def load_test_case({ :ok_json, filename, %{ "input" => post_items, "output" => expected_stats }}) do | |
{ :ok, filename, post_items, expected_stats } | |
end | |
def load_test_case({ :error, _, _ } = error) do | |
error | |
end | |
def read_file(filename) do | |
{ File.read(filename), filename } | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# located in test/topic_worker_test.exs | |
defmodule TopicWorkerTest do | |
use ExUnit.Case | |
doctest TopicWorker | |
## THIS IS NOT WORKING | |
import TestHelpers.TopicWorkerTestCaseLoader | |
## THIS IS NOT WORKING | |
@doc """ | |
Dynamically define a test for every JSON file in the test_case_directory. | |
""" | |
run_test_cases fn (test_case) -> | |
case test_case do | |
{ :ok, filename, post_items, expected_stats } -> | |
@filename filename | |
@post_items post_items | |
@expected_stats expected_stats | |
test "TopicWorker test case: #{@filename}" do | |
assert(@expected_stats == TopicWorker.process_events(@post_items)) | |
end | |
{ :error, filename, error } -> | |
@filename filename | |
@error error | |
test "TopicWorker test case: #{@filename}" do | |
flunk(@error) | |
end | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment