From 736d31e62e6a5ae2c42a8ca749ff527232dbd499 Mon Sep 17 00:00:00 2001 From: Roberto Soares Date: Fri, 14 Jun 2013 16:57:31 -0300 Subject: [PATCH 1/2] added gitignore file (vendor/cache) --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a131db3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +vendor/cache From 7d098ff8e9b895eda84d8112db4dc1014b1529c9 Mon Sep 17 00:00:00 2001 From: Roberto Soares Date: Fri, 14 Jun 2013 16:58:36 -0300 Subject: [PATCH 2/2] working (failing tests) --- lib/foy_api.rb | 8 +++----- lib/models/project.rb | 4 ++++ spec/lib/foy_api_spec.rb | 8 ++++++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/foy_api.rb b/lib/foy_api.rb index e3365b9..6e7ef48 100644 --- a/lib/foy_api.rb +++ b/lib/foy_api.rb @@ -47,12 +47,10 @@ class API < Grape::API params[:packages].each do |param_package| package = package_system.packages.find_or_create_by_name(param_package[:name]) - - project_package = project.packages.find_or_create_by_name(param_package[:name]) + project_package = project.packages.find_or_create_by_package(package) + project_package.version = param_package[:version] + project_package.save end - - - end end end diff --git a/lib/models/project.rb b/lib/models/project.rb index fcf5ae1..f0ce3a9 100644 --- a/lib/models/project.rb +++ b/lib/models/project.rb @@ -6,6 +6,10 @@ class Project many :project_packages belongs_to :handler + def packages + self.project_packages + end + def updated? self.project_packages.all? do |package| package.updated? diff --git a/spec/lib/foy_api_spec.rb b/spec/lib/foy_api_spec.rb index 865a7ee..c3f0bfc 100644 --- a/spec/lib/foy_api_spec.rb +++ b/spec/lib/foy_api_spec.rb @@ -69,9 +69,10 @@ def app let(:packages) do {system: "gem", packages: [{name: 'rest-client', version: '1.0.1'}, {name: 'rspec', version: '2.0.0'}]} end + + let!(:project) { Project.create(id: "321") } before do - Project.stub(:find!).with("321").and_return(mock(:project)) PackageSystem.create(name: "gem") end @@ -82,7 +83,10 @@ def app put "/v1/projects/321/packages", packages end - it "creates nonexistent packages " do + it "registers packages per project" do + ProjectPackage.should_receive(:find_or_create_by_name).with('rest-client') + ProjectPackage.should_receive(:find_or_create_by_name).with('rspec') + put "/v1/projects/321/packages", packages end end