tests/testthat/test-rfm-segment.R

test_that('first 10 rows of output from rfm_segment are as expected', {

  analysis_date <- as.Date("2006-12-31")

  rfm_result <-
    rfm_table_order(
      rfm_data_orders,
      customer_id,
      order_date,
      revenue,
      analysis_date
    )

  segment_names <- c(
    "Champions", "Loyal Customers", "Potential Loyalist",
    "New Customers", "Promising", "Need Attention", "About To Sleep",
    "At Risk", "Can't Lose Them", "Lost"
  )

  recency_lower <- c(4, 2, 3, 4, 3, 2, 2, 1, 1, 1)
  recency_upper <- c(5, 5, 5, 5, 4, 3, 3, 2, 1, 2)
  frequency_lower <- c(4, 3, 1, 1, 1, 2, 1, 2, 4, 1)
  frequency_upper <- c(5, 5, 3, 1, 1, 3, 2, 5, 5, 2)
  monetary_lower <- c(4, 3, 1, 1, 1, 2, 1, 2, 4, 1)
  monetary_upper <- c(5, 5, 3, 1, 1, 3, 2, 5, 5, 2)

  segment <- rfm_segment(
    rfm_result,
    segment_names,
    recency_lower,
    recency_upper,
    frequency_lower,
    frequency_upper,
    monetary_lower,
    monetary_upper
  )

  segments <- rfm_segment_summary(segment)

  expect_equal(segments[segments$segment == "Champions",][[2]], 158)
  expect_equal(segments[segments$segment == "Champions",][[3]], 1234)
  expect_equal(segments[segments$segment == "Champions",][[4]],  120178)

})

Try the rfm package in your browser

Any scripts or data that you put into this service are public.

rfm documentation built on May 29, 2024, 11:50 a.m.