Have prepared the *with_tag *test case for you.

    def test_create_docker_with_tag                                         
                                                                            
                                      
      manifest = FactoryGirl.create(:docker_manifest)
      docker_tag = FactoryGirl.create(:docker_tag, :repository => 
@fedora_17_x86_64)

      DockerTag.stubs(:where).returns([docker_tag])
      tag = @fedora_17_x86_64.create_docker_tag(manifest, {:_id => '1234'})

      assert_not_nil(tag)
      assert_equal(tag.id, docker_tag.id)
      assert_equal(tag.docker_manifest_id, manifest.id)
      assert_equal(tag.uuid, '1234')
    end

Tested with your changes works fine.

On Thursday, 17 November 2016 14:21:52 UTC+5:30, Swapnil Abnave wrote:
>
> 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.

Reply via email to