From bf9bbe3afcbe4f380d011a86e360ca73a9bf90e3 Mon Sep 17 00:00:00 2001
From: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Date: Tue, 15 Aug 2023 18:11:46 -0400
Subject: [PATCH] Cleaned up the spec file for tests so its actually sane

---
 lib/kiss/test.rb                |  1 -
 lib/kiss/test/kiss_mock.rb      | 49 -----------------
 spec/kiss/kiss_abstract_spec.rb | 96 +++++++++++++++++++++++++++------
 3 files changed, 81 insertions(+), 65 deletions(-)
 delete mode 100644 lib/kiss/test.rb
 delete mode 100644 lib/kiss/test/kiss_mock.rb

diff --git a/lib/kiss/test.rb b/lib/kiss/test.rb
deleted file mode 100644
index 3c645f8..0000000
--- a/lib/kiss/test.rb
+++ /dev/null
@@ -1 +0,0 @@
-require 'kiss/test/kiss_mock'
\ No newline at end of file
diff --git a/lib/kiss/test/kiss_mock.rb b/lib/kiss/test/kiss_mock.rb
deleted file mode 100644
index 1f8aa23..0000000
--- a/lib/kiss/test/kiss_mock.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-require 'kiss/kiss_abstract'
-
-module Kiss
-    class KissMock < KissAbstract
-
-        def initialize(strip_df_start=true)
-            super(strip_df_start)
-            @read_from_interface = []
-            @sent_to_interface = []
-        end
-
-        public
-        def connect(mode_init=nil, *args, **kwargs)
-        end
-
-        public
-        def close(*args, **kwargs)
-        end
-
-        protected
-        def read_interface
-            if @read_from_interface.length == 0
-                return nil
-            end
-            return @read_from_interface.shift
-        end
-
-        protected
-        def write_interface(data)
-            @sent_to_interface << data
-        end
-
-        public
-        def clear_interface
-            @read_from_interface = []
-            @sent_to_interface = []
-        end
-
-        public
-        def add_read_from_interface(raw_frame)
-            @read_from_interface << raw_frame
-        end
-
-        public
-        def get_sent_to_interface
-            return @sent_to_interface
-        end
-    end
-end
diff --git a/spec/kiss/kiss_abstract_spec.rb b/spec/kiss/kiss_abstract_spec.rb
index 645723c..0057001 100644
--- a/spec/kiss/kiss_abstract_spec.rb
+++ b/spec/kiss/kiss_abstract_spec.rb
@@ -1,4 +1,4 @@
-require_relative '../../lib/kiss/test/kiss_mock'
+require_relative '../../lib/kiss/kiss_abstract'
 require 'abstractify'
 
 ENCODED_FRAME = [192, 0, 158, 154, 142, 64, 64, 64, 96, 174, 100, 142, 154, 136, 64, 98, 174, 146, 136, 138, 98, 64, 98, 174, 146, 136, 138, 100, 64, 101, 3, 240, 116, 101, 115, 116, 95, 101, 110, 99, 111, 100, 101, 95, 102, 114, 97, 109, 101, 192]
@@ -10,24 +10,90 @@ DECODED_FRAME = {
                   :path => ['WIDE1-1', 'WIDE2-2']
                 }
 
+class KissMock < Kiss::KissAbstract
+
+    def initialize(strip_df_start=true)
+        super(strip_df_start)
+        @read_from_interface = []
+        @sent_to_interface = []
+    end
+
+    public
+    def connect(mode_init=nil, *args, **kwargs)
+    end
+
+    public
+    def close(*args, **kwargs)
+    end
+
+    protected
+    def read_interface
+        if @read_from_interface.length == 0
+            return nil
+        end
+        return @read_from_interface.shift
+    end
+
+    protected
+    def write_interface(data)
+        @sent_to_interface << data
+    end
+
+    public
+    def clear_interface
+        @read_from_interface = []
+        @sent_to_interface = []
+    end
+
+    public
+    def add_read_from_interface(raw_frame)
+        @read_from_interface << raw_frame
+    end
+
+    public
+    def get_sent_to_interface
+        return @sent_to_interface
+    end
+end
+
 describe Kiss::KissAbstract do
-  context "Do the things" do
-    it "does the things" do
-      kiss_mock = Kiss::KissMock.new
-      kiss_mock.add_read_from_interface(ENCODED_FRAME)
-      translated_frame = kiss_mock.read
-      #puts translated_frame
-      expect(translated_frame).to eql(DECODED_FRAME)
 
-      kiss_mock = Kiss::KissMock.new
-      kiss_mock.write(DECODED_FRAME)
-      all_raw_frames = kiss_mock.get_sent_to_interface
-      expect(all_raw_frames[0]).to eql(ENCODED_FRAME)
+  describe ".new" do
+    context "Given a concrete child class" do
+      it "is successfully instantiated" do
+        kiss_mock = KissMock.new
+        expect(kiss_mock).to_not be_nil
+      end
+    end
+    context "Given the abstract class itself" do
+      it "will throw an AbstractClassError" do
+        expect {
+          Kiss::KissAbstract.new
+        }.to raise_error(Abstractify::AbstractClassError)
+      end
+    end
+  end
 
-      expect {
-        Kiss::KissAbstract.new
-      }.to raise_error(Abstractify::AbstractError)
+  describe ".read" do
+    context "Given an encoded frame as bytes on the underlying interface" do
+      let(:kiss_mock) {KissMock.new}
+      it "successfully decoded and parsed the frame" do
+        kiss_mock.add_read_from_interface(ENCODED_FRAME)
+        translated_frame = kiss_mock.read
+        expect(translated_frame).to eql(DECODED_FRAME)
+      end
+    end
+  end
 
+  describe ".write" do
+    context "Given a decoded frame" do
+      let(:kiss_mock) {KissMock.new}
+      it "successfully encodes to the underlying interface" do
+        kiss_mock.write(DECODED_FRAME)
+        all_raw_frames = kiss_mock.get_sent_to_interface
+        expect(all_raw_frames[0]).to eql(ENCODED_FRAME)
+      end
     end
   end
+
 end
-- 
GitLab