# Ruby Calculator - Interactive calculator built with Ruby on Rails
# Author: RSK World (Molla Samser, Founder | Rima Khatun, Designer & Tester)
# Contact: help@rskworld.in | +91 93305 39277
# Website: https://rskworld.in
# Year: 2026
# Description: Build a fully functional calculator using Ruby on Rails with modern UI

require "test_helper"

class CalculationHistoryTest < ActiveSupport::TestCase
  def setup
    @calculation = CalculationHistory.new(
      expression: "5 + 3",
      result: 8,
      operation: "add"
    )
  end

  test "should be valid" do
    assert @calculation.valid?
  end

  test "expression should be present" do
    @calculation.expression = ""
    assert_not @calculation.valid?
  end

  test "result should be present" do
    @calculation.result = nil
    assert_not @calculation.valid?
  end

  test "operation should be present" do
    @calculation.operation = ""
    assert_not @calculation.valid?
  end

  test "should return recent calculations" do
    @calculation.save
    recent = CalculationHistory.recent
    assert_includes recent, @calculation
  end

  test "should filter by operation" do
    @calculation.save
    add_operations = CalculationHistory.by_operation('add')
    assert_includes add_operations, @calculation
  end

  test "should count total calculations" do
    @calculation.save
    assert_equal 1, CalculationHistory.total_calculations
  end

  test "should provide operation stats" do
    @calculation.save
    stats = CalculationHistory.operation_stats
    assert_equal 1, stats['add']
  end
end
