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.

Reply via email to