Hi Tom,
For *no_tag* case you can probably stub ActiveRecord where clause and
assert tag to be present and tag.name is as expected.
def test_create_docker_no_tag
manifest = FactoryGirl.create(:docker_manifest)
tag_name = "docker-tag-#{rand()}"
DockerTag.stubs(:where).returns([])
tag = @fedora_17_x86_64.create_docker_tag(manifest, {:name => tag_name,
:_id => '1234'})
assert_not_nil(tag)
assert_equal tag.name, tag_name
end
For the other case you mostly need to create a docker_tag using factory and
you may stub DockerTag.where to return that object. Once @fedora_17_x86_64.
create_docker_tag has been called, later compare it with expected object
similar to what we did above.
I hope that helps.
On Thursday, 17 November 2016 00:46:25 UTC+5:30, Tom McKay wrote:
>
> I have the following method[1] I want to test.
>
>
>
> def create_docker_tag(manifest, tag_json)
> tag = DockerTag.where(:repository_id => id, :name =>
> tag_json[:name]).first
> if tag
> tag.docker_manifest_id = manifest.id
> tag.uuid = tag_json[:_id]
> tag.save
> else
> tag = DockerTag.create(:repository_id => id, :docker_manifest_id =>
> manifest.id,
> :name => tag_json[:name], :uuid =>
> tag_json[:_id])
> end
> tag
> end
>
>
>
> Here is the original test[2] (note the 'expects' is no longer relevant):
>
>
>
> def test_create_docker_no_tag
> manifest = FactoryGirl.build(:docker_manifest)
>
> @fedora_17_x86_64.expects(:unit_search).returns([])
>
> @fedora_17_x86_64.create_docker_tag(manifest, 'asdf')
> end
>
>
> I would like to write two tests, one where the DockerTag exists already,
> and one where it does not and so is created. I am unsure what to
> FactoryGirl, or stub, or assert, etc.
>
> Pointers to resources that would assist me, and other devs I assume, in
> writing tests for the framework katello uses would be great. Really,
> anything would be great since I feel like I'm just iterating on random
> guesses to try to figure out what to do.
>
> For example, this doesn't work:
>
> def test_create_docker_no_tag
> manifest = FactoryGirl.build(:docker_manifest)
> manifest.id = 1
>
> @fedora_17_x86_64.create_docker_tag(manifest, {:name => 'asdf', :_id =>
> '1234')
> end
>
> 1) Error:
> Katello::GluePulpNonVcrTests#test_create_docker_no_tag:
> ActiveRecord::RecordInvalid: Validation failed: Docker manifest can't be blank
> test_after_commit (1.1.0)
> lib/test_after_commit/database_statements.rb:11:in `block in transaction'
> test_after_commit (1.1.0)
> lib/test_after_commit/database_statements.rb:5:in `transaction'
> /home/vagrant/katello/app/models/katello/glue/pulp/repo.rb:539:in
> `create_docker_tag'
> ./katello/test/glue/pulp/repository_test.rb:67:in
> `test_create_docker_no_tag'
>
>
>
> [1]
> https://github.com/thomasmckay/katello/blob/2ddce0d01b5f50290d446346d7073260e3a3e807/app/models/katello/glue/pulp/repo.rb#L532
>
> [2]
> https://github.com/Katello/katello/blob/master/test/glue/pulp/repository_test.rb#L61
>
--
You received this message because you are subscribed to the Google Groups
"foreman-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.