require 'rails_helper'


RSpec.describe 'Gekanator posts API', type: :request do
  describe 'GET /gekanator/posts' do
    it 'omits deprecated tags and returns the stored similarity cosine' do
      active_tag = Tag.create!(name: 'active tag', category: :general)
      deprecated_tag = Tag.create!(
        name: 'deprecated tag',
        category: :general,
        deprecated_at: Time.current
      )
      post_record = Post.create!(title: 'source', url: 'https://example.com/source')
      target_post = Post.create!(title: 'target', url: 'https://example.com/target')

      PostTag.create!(post: post_record, tag: active_tag)
      PostTag.create!(post: post_record, tag: deprecated_tag)
      PostTag.create!(post: target_post, tag: deprecated_tag)
      PostSimilarity.create!(post: post_record, target_post:, cos: 0.375)

      get '/gekanator/posts'

      expect(response).to have_http_status(:ok)

      post_json = json.fetch('posts').find { |post| post.fetch('id') == post_record.id }
      expect(post_json.fetch('tags').map { |tag| tag.fetch('name') }).to eq(['active tag'])
      expect(post_json.fetch('post_similarity_edges')).to contain_exactly(
        'target_post_id' => target_post.id,
        'cos' => 0.375
      )
    end
  end
end
