diff --git a/spec/chat_block_processor_spec.rb b/spec/chat_block_processor_spec.rb
new file mode 100644
index 0000000..80f9864
--- /dev/null
+++ b/spec/chat_block_processor_spec.rb
@@ -0,0 +1,99 @@
+# frozen_string_literal: true
+
+describe ChatBlock do
+ it 'should create a basic chat block' do
+ input = <<~INPUT
+ [chat, foodogsquared]
+ ====
+ Hello there!
+ ====
+ INPUT
+
+ expected = <<~RESULT
+
+
+
+
+
![foodogsquared](foodogsquared/default.avif)
+
+
+
+
+
+ RESULT
+
+ actual = (Asciidoctor.convert input).tr_s '\n', '\n'
+ (expect actual).to eq expected.chomp
+ end
+
+ it 'should create a basic chat block with non-default values with document attributes' do
+ input = <<~INPUT
+ :avatarsdir: /avatars
+ :avatarstype: webp
+
+ [chat, foodogsquared]
+ ====
+ Hello there!
+ ====
+ INPUT
+
+ expected = <<~RESULT
+
+
+
+
+
![foodogsquared](/avatars/foodogsquared/default.webp)
+
+
+
+
+
+ RESULT
+
+ actual = (Asciidoctor.convert input).tr_s '\n', '\n'
+ (expect actual).to eq expected.chomp
+ end
+
+ it 'should create a basic chat block with non-default values' do
+ input = <<~INPUT
+ :avatarsdir: /avatars
+ :avatarstype: webp
+
+ [chat, foodogsquared, state=nervous, role=shake]
+ ====
+ Hello there!
+ ====
+ INPUT
+
+ expected = <<~RESULT
+
+
+
+
+
![foodogsquared](/avatars/foodogsquared/nervous.webp)
+
+
+
+
+
+ RESULT
+
+ actual = (Asciidoctor.convert input).tr_s '\n', '\n'
+ (expect actual).to eq expected.chomp
+ end
+end