Skip to content

Instantly share code, notes, and snippets.

@danhper
Last active January 9, 2016 21:55
Show Gist options
  • Save danhper/8cef4edfa74da6815eb3 to your computer and use it in GitHub Desktop.
Save danhper/8cef4edfa74da6815eb3 to your computer and use it in GitHub Desktop.
defmodule Opencov.CreateBuildService do
def make_changeset(project, params \\ :empty) do
Ecto.Model.build(project, :builds)
|> Opencov.Build.changeset(params)
|> add_previous_values(project)
end
defp add_previous_values(changeset, project) do
if previous_build = search_previous_build(changeset, project) do
change(changeset, %{previous_build_id: previous_build.id, previous_coverage: previous_build.coverage})
else
changeset
end
end
defp search_previous_build(changeset, project) do
Opencov.Build.previous(project.id,
get_change(changeset, :build_number),
get_change(changeset, :branch))
|> Opencov.Repo.one
end
end
defmodule Opencov.Factory do
use ExMachina.Ecto, repo: Opencov.Repo
def factory(:build) do
attrs = %{
build_number: sequence(:build_number, &(&1)),
}
changeset = Opencov.CreateBuildService.make_changeset(create(:project), attrs)
Map.merge(changeset.model, changeset.changes)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment