From 617292046cf69ff4a41da875fe67f0ce7f612ea3 Mon Sep 17 00:00:00 2001
From: Shinya Maeda <gitlab.shinyamaeda@gmail.com>
Date: Tue, 7 Mar 2017 00:09:48 +0900
Subject: [PATCH] Add spec for entity and serializer

---
 spec/serializers/build_entity_spec.rb        | 13 +++++++++-
 spec/serializers/build_serializer_spec.rb    | 26 ++++++++++++++++++++
 spec/serializers/pipeline_entity_spec.rb     |  2 +-
 spec/serializers/pipeline_serializer_spec.rb | 13 ++++++++++
 spec/serializers/status_entity_spec.rb       |  2 +-
 5 files changed, 53 insertions(+), 3 deletions(-)
 create mode 100644 spec/serializers/build_serializer_spec.rb

diff --git a/spec/serializers/build_entity_spec.rb b/spec/serializers/build_entity_spec.rb
index 60c9642ee2c..cd30b00c711 100644
--- a/spec/serializers/build_entity_spec.rb
+++ b/spec/serializers/build_entity_spec.rb
@@ -1,10 +1,16 @@
 require 'spec_helper'
 
 describe BuildEntity do
+  let(:user) { create(:user) }
   let(:build) { create(:ci_build) }
+  let(:request) { double('request') }
+
+  before do
+    allow(request).to receive(:user).and_return(user)
+  end
 
   let(:entity) do
-    described_class.new(build, request: double)
+    described_class.new(build, request: request)
   end
 
   subject { entity.as_json }
@@ -22,6 +28,11 @@ describe BuildEntity do
     expect(subject).to include(:created_at, :updated_at)
   end
 
+  it 'contains details' do
+    expect(subject).to include :details
+    expect(subject[:details][:status]).to include :icon, :favicon, :text, :label
+  end
+
   context 'when build is a regular job' do
     it 'does not contain path to play action' do
       expect(subject).not_to include(:play_path)
diff --git a/spec/serializers/build_serializer_spec.rb b/spec/serializers/build_serializer_spec.rb
new file mode 100644
index 00000000000..ef75a2941c2
--- /dev/null
+++ b/spec/serializers/build_serializer_spec.rb
@@ -0,0 +1,26 @@
+require 'spec_helper'
+
+describe BuildSerializer do
+  let(:user) { create(:user) }
+
+  let(:serializer) do
+    described_class.new(user: user)
+  end
+
+  subject { serializer.represent(resource) }
+
+  describe '#represent' do
+    context 'when used with status' do
+      let(:serializer) do
+        described_class.new(user: user)
+          .with_status
+      end
+      let(:resource) { create(:ci_build) }
+
+      it 'serializes only status' do
+        expect(subject[:details][:status]).not_to be_empty
+        expect(subject[:details].keys.count).to eq 1
+      end
+    end
+  end
+end
diff --git a/spec/serializers/pipeline_entity_spec.rb b/spec/serializers/pipeline_entity_spec.rb
index ccb72973f9c..93d5a21419d 100644
--- a/spec/serializers/pipeline_entity_spec.rb
+++ b/spec/serializers/pipeline_entity_spec.rb
@@ -30,7 +30,7 @@ describe PipelineEntity do
           .to include :duration, :finished_at
         expect(subject[:details])
           .to include :stages, :artifacts, :manual_actions
-        expect(subject[:details][:status]).to include :icon, :text, :label
+        expect(subject[:details][:status]).to include :icon, :favicon, :text, :label
       end
 
       it 'contains flags' do
diff --git a/spec/serializers/pipeline_serializer_spec.rb b/spec/serializers/pipeline_serializer_spec.rb
index 2aaef03cb93..3bf4a667853 100644
--- a/spec/serializers/pipeline_serializer_spec.rb
+++ b/spec/serializers/pipeline_serializer_spec.rb
@@ -93,5 +93,18 @@ describe PipelineSerializer do
         end
       end
     end
+
+    context 'when used with status' do
+      let(:serializer) do
+        described_class.new(user: user)
+          .with_status
+      end
+      let(:resource) { create(:ci_empty_pipeline) }
+
+      it 'serializes only status' do
+        expect(subject[:details][:status]).not_to be_empty
+        expect(subject[:details].keys.count).to eq 1
+      end
+    end
   end
 end
diff --git a/spec/serializers/status_entity_spec.rb b/spec/serializers/status_entity_spec.rb
index 89428b4216e..c94902dbab8 100644
--- a/spec/serializers/status_entity_spec.rb
+++ b/spec/serializers/status_entity_spec.rb
@@ -16,7 +16,7 @@ describe StatusEntity do
     subject { entity.as_json }
 
     it 'contains status details' do
-      expect(subject).to include :text, :icon, :label, :group
+      expect(subject).to include :text, :icon, :favicon, :label, :group
       expect(subject).to include :has_details, :details_path
     end
   end
-- 
GitLab